package svc import ( "errors" "github.com/globalsign/mgo" "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 ( AwardLogDBErr = errors.New("log_awardlog db open failed.") ) func AwardLogCollection(plt string) *mongo.Collection { s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AwardLogDBName) if s != nil { c, first := s.DB().C(model.AwardLogCollName) if first { } return c } return nil } func InsertAwardLog(logs ...*model.AwardLog) (err error) { clog := AwardLogCollection(logs[0].Platform) if clog == nil { return } switch len(logs) { case 0: return errors.New("no data") case 1: err = clog.Insert(logs[0]) if err != nil { logger.Logger.Info("svc.UpdateAllPlayerPackageTag error ", err) return } default: docs := make([]interface{}, 0, len(logs)) for _, log := range logs { docs = append(docs, log) } err = clog.Insert(docs...) } if err != nil { logger.Logger.Warn("InsertAwardLog error:", err) return } return } func FetchAwardLog(plt string) (recs []model.AwardLog, err error) { err = AwardLogCollection(plt).Find(bson.M{}).All(&recs) return } type AwardLogSvc struct { } func (svc *AwardLogSvc) InsertAwardLog(args []*model.AwardLog, ret *bool) (err error) { err = InsertAwardLog(args...) if err == nil { *ret = true } return } func (svc *AwardLogSvc) FetchAwardLog(args *model.FetchAwardLogArgs, ret *[]model.AwardLog) (err error) { *ret, err = FetchAwardLog(args.Plt) return } func (svc *AwardLogSvc) UpsertAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) error { cc := AwardLogCollection(args.Plt) if cc == nil { return ChatColError } _, err := cc.Upsert(bson.M{"platform": args.Plt}, args.Data) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpsertChat is err: ", err) return err } ret = args.Data return nil } func init() { rpc.Register(new(AwardLogSvc)) }