package model import ( "fmt" "time" "github.com/globalsign/mgo/bson" "mongo.games.com/goserver/core/logger" ) type BagInfo struct { BagId bson.ObjectId `bson:"_id"` SnId int32 //玩家账号直接在这里生成 Platform string //平台 BagItem map[int32]*Item //背包数据 key为itemId Ts int64 GainWay int32 `bson:"-"` } type Item struct { ItemId int32 // 物品ID ItemNum int64 // 物品数量 ObtainTime int64 //获取的时间 } type GetBagInfoArgs struct { Plt string SnId int32 } func NewBagInfo(sid int32, plt string) *BagInfo { return &BagInfo{BagId: bson.NewObjectId(), SnId: sid, Platform: plt, BagItem: make(map[int32]*Item)} } func GetBagInfo(sid int32, plt string) (*BagInfo, error) { if rpcCli == nil { return nil, ErrRPClientNoConn } ret := &BagInfo{} args := &GetBagInfoArgs{ SnId: sid, Plt: plt, } err := rpcCli.CallWithTimeout("BagSvc.GetBagItem", args, ret, time.Second*30) if err != nil { logger.Logger.Error("GetBagInfo err:%v SnId:%v ", err, args.SnId) return nil, err } return ret, nil } func UpBagItem(args *BagInfo) error { if rpcCli == nil { return ErrRPClientNoConn } ret := false err := rpcCli.CallWithTimeout("BagSvc.UpgradeBag", args, &ret, time.Second*30) if err != nil { return fmt.Errorf("UpgradeBag err:%v SnId:%v BagId:%v", err, args.SnId, args.BagId) } return nil } func SaveDBBagItem(args *BagInfo) error { if rpcCli == nil { return ErrRPClientNoConn } ret := false err := rpcCli.CallWithTimeout("BagSvc.AddBagItem", args, &ret, time.Second*30) if err != nil { return err } return nil } func SaveToDelBackupBagItem(args *BagInfo) error { if rpcCli == nil { return ErrRPClientNoConn } ret := false err := rpcCli.CallWithTimeout("BagSvc.UpdateBag", args, &ret, time.Second*30) if err != nil { return err } return nil } type AddItemParam struct { Platform string SnId int32 Change []*Item // 道具变化数量 Cost []*Item // 获得道具时消耗的道具数量 Add int64 // 加成数量 GainWay int32 // 记录类型 Operator, Remark string // 操作人,备注 GameId, GameFreeId int64 // 游戏id,场次id NoLog bool // 是否不记录日志 LogId string // 撤销的id,道具兑换失败 RoomConfigId int32 // 房间配置id } type ChangeItemParam struct { SnId int32 ItemId int32 ItemNum int64 GainWay int32 RoomConfigId int32 GameId int64 GameFreeId int64 Cost []*Item }