129 lines
4.2 KiB
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)
|
|
}
|