100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
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
|
|
}
|