package model import ( "fmt" "time" "github.com/globalsign/mgo/bson" "mongo.games.com/goserver/core/logger" ) type Item struct { ItemId int32 // 物品ID ItemNum int64 // 物品数量 ObtainTime int64 //获取的时间 } type BagInfo struct { BagId bson.ObjectId `bson:"_id"` SnId int32 //玩家账号直接在这里生成 Platform string //平台 BagItem map[int32]*Item //背包数据 key为itemId Ts int64 // 最后数据更新纳秒时间戳 // 临时参数,不保存数据库 GainWay int32 `bson:"-"` } type GetBagInfoArgs struct { Plt string SnId int32 } func GetBagInfo(snid int32, plt string) (*BagInfo, error) { if rpcCli == nil { return nil, ErrRPClientNoConn } ret := &BagInfo{} args := &GetBagInfoArgs{ SnId: snid, 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 } type AddItemParam struct { Platform string SnId int32 Change []*Item // 道具变化数量 Cost []*Item // 获得道具时消耗的道具数量 Add int64 // 加成数量 GainWay int32 // 记录类型 Operator, Remark string // 操作人,备注 GameId, GameFreeId int64 // 游戏id,场次id LogId string // 撤销的id,道具兑换失败 RoomConfigId int32 // 房间配置id IsGame bool // 是否为gamesrv的操作 } type ChangeItemParam struct { SnId int32 ItemId int32 ItemNum int64 GainWay int32 RoomConfigId int32 GameId int64 GameFreeId int64 Cost []*Item }