game_sync/model/itemdatalog.go

90 lines
2.3 KiB
Go

package model
import (
"errors"
"time"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
)
var (
ItemLogDBName = "log"
ItemLogCollName = "log_itemlog"
)
type ItemLog struct {
LogId bson.ObjectId `bson:"_id"`
Platform string //平台
SnId int32 //玩家id
LogType int32 //记录类型 0.获取 1.消耗
ItemId int32 //道具id
ItemName string //道具名称
Count int64 //个数
CreateTs int64 //记录时间
Remark string //备注
TypeId int32 // 变化类型
GameId int32 // 游戏id,游戏中获得时有值
GameFreeId int32 // 场次id,游戏中获得时有值
Cost []*ItemInfo // 消耗的道具
}
func NewItemLog() *ItemLog {
log := &ItemLog{LogId: bson.NewObjectId()}
return log
}
type ItemParam struct {
Platform string // 平台
SnId int32 // 玩家id
LogType int32 // 记录类型 0.获取 1.消耗
ItemId int32 // 道具id
ItemName string // 道具名称
Count int64 // 个数
Remark string // 备注
TypeId int32 // 变化类型
GameId int64 // 游戏id,游戏中获得时有值
GameFreeId int64 // 场次id,游戏中获得时有值
Cost []*ItemInfo // 消耗的道具
}
func NewItemLogEx(param ItemParam) *ItemLog {
itemLog := NewItemLog()
itemLog.Platform = param.Platform
itemLog.SnId = param.SnId
itemLog.LogType = param.LogType
itemLog.ItemId = param.ItemId
itemLog.ItemName = param.ItemName
itemLog.Count = param.Count
itemLog.CreateTs = time.Now().Unix()
itemLog.Remark = param.Remark
itemLog.TypeId = param.TypeId
itemLog.GameId = int32(param.GameId)
itemLog.GameFreeId = int32(param.GameFreeId)
itemLog.Cost = param.Cost
return itemLog
}
type ItemCountParam struct {
Platform string
Snid int32 // 玩家id
Id int32 // 道具id
Tp int // 类型 0.获取 1.消耗
}
func GetItemCount(param *ItemCountParam) (int64, error) {
if rpcCli == nil {
logger.Logger.Warnf("rpcCli is nil")
return 0, errors.New("rpcCli is nil")
}
var ret int64
err := rpcCli.CallWithTimeout("ItemLogSvc.GetItemCount", param, &ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("GetItemCount err:%v", err)
return 0, err
}
return ret, err
}