game_sync/dbproxy/svc/u_horseracelamp.go

129 lines
4.2 KiB
Go

package svc
import (
"errors"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var ErrHorseRaceLampDBNotOpen = model.NewDBError(model.HorseRaceLampDBName, model.HorseRaceLampCollName, model.NOT_OPEN)
func HorseRaceLampCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.HorseRaceLampDBName)
if s != nil {
c, first := s.DB().C(model.HorseRaceLampCollName)
if first {
// c.EnsureIndex(mgo.Index{Key: []string{"username", "tagkey"}, Background: true, Sparse: true})
// c.EnsureIndex(mgo.Index{Key: []string{"tel", "tagkey"}, Background: true, Sparse: true})
}
return c
}
return nil
}
type HorseRaceLampSvc struct {
}
var horseRaceLampSvc = &HorseRaceLampSvc{}
func (svc *HorseRaceLampSvc) GetAllHorseRaceLamp(args string, ret *[]model.HorseRaceLamp) error {
logger.Logger.Info("HorseRaceLampSvc GetAllHorseRaceLamp")
c := HorseRaceLampCollection(args)
if c != nil {
err := c.Find(bson.M{}).All(ret)
if err != nil {
return err
}
}
return nil
}
func (svc *HorseRaceLampSvc) GetHorseRaceLamp(args *model.GetHorseRaceLampArgs, ret *model.HorseRaceLamp) (err error) {
c := HorseRaceLampCollection(args.Platform)
if c == nil {
return ErrHorseRaceLampDBNotOpen
}
err = c.Find(bson.M{"_id": args.Id}).One(ret)
return
}
func (svc *HorseRaceLampSvc) RemoveHorseRaceLamp(args *model.RemoveHorseRaceLampArg, ret *bool) error {
logger.Logger.Info("HorseRaceLampSvc RemoveHorseRaceLamp")
c := HorseRaceLampCollection(args.Platform)
if c != nil {
_, err := c.RemoveAll(bson.M{"_id": bson.ObjectIdHex(args.Key)})
if err != nil {
return err
}
*ret = true
}
return nil
}
func (svc *HorseRaceLampSvc) InsertHorseRaceLamp(args *model.InsertHorseRaceLampArgs, ret *bool) (err error) {
c := HorseRaceLampCollection(args.Platform)
if c == nil {
return ErrHorseRaceLampDBNotOpen
}
switch len(args.HorseRaceLamps) {
case 1:
err = c.Insert(args.HorseRaceLamps[0])
default:
docs := make([]interface{}, 0, len(args.HorseRaceLamps))
for _, notice := range args.HorseRaceLamps {
docs = append(docs, notice)
}
err = c.Insert(docs...)
}
if err != nil {
logger.Logger.Error("InsertHorseRaceLamps error:", err)
return
}
*ret = true
return
}
func (svc *HorseRaceLampSvc) EditHorseRaceLamp(args *model.EditHorseRaceLampArg, ret *bool) error {
logger.Logger.Info("HorseRaceLampSvc EditHorseRaceLamp")
c := HorseRaceLampCollection(args.Platform)
if c != nil {
if !bson.IsObjectIdHex(args.Key) {
return errors.New("key is invalid bson.ObjectId")
}
Id := bson.ObjectIdHex(args.Key)
_, err := c.Upsert(bson.M{"_id": Id}, bson.D{{"$set", bson.D{{"channel", args.Channel},
{"title", args.Title}, {"content", args.Content}, {"footer", args.Footer},
{"starttime", args.StartTime}, {"interval", args.Interval}, {"count", args.Count},
{"priority", args.Priority}, {"msgtype", args.MsgType}, {"platform", args.Platform}, {"state", args.State},
{"target", args.Target}, {"standsec", args.StandSec}}}})
if err != nil {
logger.Logger.Warn("EditHorseRaceLamp to db failed.", err)
return err
}
*ret = true
}
return nil
}
func (svc *HorseRaceLampSvc) GetHorseRaceLampInRangeTsLimitByRange(args *model.QueryHorseRaceLampArg, ret *model.QueryHorseRaceLampRet) (err error) {
logger.Logger.Info("HorseRaceLampSvc EditHorseRaceLamp")
c := HorseRaceLampCollection(args.Platform)
if c == nil {
return ErrHorseRaceLampDBNotOpen
}
if len(args.Platform) == 0 {
ret.Count, _ = c.Find(bson.M{"state": args.State, "msgtype": args.MsgType}).Count()
} else {
ret.Count, _ = c.Find(bson.M{"platform": args.Platform, "state": args.State, "msgtype": args.MsgType}).Count()
}
if len(args.Platform) == 0 {
err = c.Find(bson.M{"state": args.State, "msgtype": args.MsgType}).Sort("createtime").Skip(args.FromIndex).Limit(args.LimitDataNum).All(&ret.Data)
} else {
selector := bson.M{"platform": args.Platform, "state": args.State, "msgtype": args.MsgType}
err = c.Find(selector).Sort("createtime").Skip(args.FromIndex).Limit(args.LimitDataNum).All(&ret.Data)
}
return
}
func init() {
rpc.Register(horseRaceLampSvc)
}