123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885 |
- package service
- import (
- "context"
- "time"
- jsoniter "github.com/json-iterator/go"
- mhayaTime "github.com/mhaya/extend/time"
- cutils "github.com/mhaya/extend/utils"
- "github.com/mhaya/game/game_cluster/internal/code"
- "github.com/mhaya/game/game_cluster/internal/constant"
- "github.com/mhaya/game/game_cluster/internal/data"
- "github.com/mhaya/game/game_cluster/internal/mdb"
- "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
- "github.com/mhaya/game/game_cluster/internal/mdb/models"
- "github.com/mhaya/game/game_cluster/nodes/webadmin/common"
- "github.com/mhaya/game/game_cluster/nodes/webadmin/entity"
- mhayaLogger "github.com/mhaya/logger"
- "go.mongodb.org/mongo-driver/mongo"
- "gorm.io/gorm"
- )
- var (
- json = jsoniter.ConfigCompatibleWithStandardLibrary
- )
- type PlayerManage struct {
- db *mongo.Database
- }
- func NewPlayerManage() *PlayerManage {
- return &PlayerManage{
- db: mdb.MDB,
- }
- }
- // 获取玩家列表
- func (a *PlayerManage) List(ctx context.Context, req entity.PlayerListReq) (*entity.PlayerListResp, *code.Result) {
- page, pageSize := checkPageParam(req.Page, req.Size)
- var registerRecords []*eventmodels.UserRegisterEventContent
- where := &eventmodels.UserRegisterEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: req.UserName,
- TgId: req.OpenId,
- XId: req.XID,
- ParentUserId: req.Pid,
- TonWall: req.TonWall,
- Email: req.Email,
- UserStatus: req.Status,
- },
- }
- db := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).Order("create_at")
- if req.LevelMin > 0 && req.LevelMax == 0 {
- db = db.Where("level >= ? and level <= ?", req.LevelMin, 1000) // 等级最大值 暂定1000
- }
- if req.LevelMin > 0 && req.LevelMax > 0 && req.LevelMin <= req.LevelMax {
- db = db.Where("level >= ? and level <= ?", req.LevelMin, req.LevelMax)
- }
- if req.JoinTimeMin > 0 && req.JoinTimeMax > 0 && req.JoinTimeMin <= req.JoinTimeMax {
- db = db.Where("create_at >= ? and create_at <= ?", req.JoinTimeMin, req.JoinTimeMax)
- }
- pages := Paginate(db, page, pageSize)
- err := db.Scopes(pages.Limit).Find(®isterRecords).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("List Find error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- var results []*entity.PlayerListDetail
- for _, v := range registerRecords {
- updateRecord, codeResult := a.GetPlayerLastestUpdateRecord(v.UserName)
- if codeResult != nil {
- mhayaLogger.Warnf("List GetPlayerLastestUpdateRecord error:%v", codeResult)
- return nil, codeResult
- }
- loginRecord, codeResult := a.GetPlayerLastestLoginRecord(v.UserName)
- if codeResult != nil {
- mhayaLogger.Warnf("List GetPlayerLastestLoginRecord error:%v", codeResult)
- return nil, codeResult
- }
- results = append(results, &entity.PlayerListDetail{
- UserName: v.UserId,
- OpenId: func() string {
- if updateRecord == nil {
- return v.TgId
- }
- return updateRecord.TgId
- }(),
- NickName: func() string {
- if updateRecord == nil {
- return v.UserName
- }
- return updateRecord.UserName
- }(),
- Pid: func() string {
- if updateRecord == nil {
- return v.ParentUserId
- }
- return updateRecord.ParentUserId
- }(),
- XID: func() string {
- if updateRecord == nil {
- return v.XId
- }
- return updateRecord.XId
- }(),
- TonWall: func() string {
- if updateRecord == nil {
- return v.TonWall
- }
- return updateRecord.TonWall
- }(),
- Email: func() string {
- if updateRecord == nil {
- return v.Email
- }
- return updateRecord.Email
- }(),
- Level: func() int {
- if updateRecord == nil {
- return v.Level
- }
- return updateRecord.Level
- }(),
- Status: func() int {
- if updateRecord == nil {
- return v.UserStatus
- }
- return updateRecord.UserStatus
- }(),
- LoginTime: func() int64 {
- if loginRecord != nil {
- return loginRecord.CreateAt
- }
- return 0
- }(),
- LoginIP: func() string {
- if loginRecord != nil {
- return loginRecord.Ip
- }
- return ""
- }(),
- JoinIP: v.Ip,
- JoinTime: v.CreateAt,
- })
- }
- return &entity.PlayerListResp{
- Details: results,
- Total: pages.Count,
- }, nil
- }
- // 获取转盘实际抽奖次数
- func (a *PlayerManage) GetTurntableRuns(userName string) (int64, *code.Result) {
- turntableWhere := &eventmodels.TurntableEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- }
- turntableDb := mdb.LogstashDB.Model(&eventmodels.TurntableEventContent{}).Where(turntableWhere).Order("create_at")
- var turntableRuns int64
- err := turntableDb.Count(&turntableRuns).Error
- if err != nil {
- mhayaLogger.Warnf("GetTurntableRuns turntableRuns error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return turntableRuns, nil
- }
- // 获取邀请成功人数 status:查询的事件状态
- func (a *PlayerManage) GetSuccessfulInvitations(userName string, status int) (int64, *code.Result) {
- inviteWhere := &eventmodels.InviteEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- EventBasic: eventmodels.EventBasic{
- Status: status,
- },
- }
- inviteDb := mdb.LogstashDB.Model(&eventmodels.InviteEventContent{}).Where(inviteWhere).Order("create_at")
- var successfulInvitations int64
- err := inviteDb.Count(&successfulInvitations).Error
- if err != nil {
- mhayaLogger.Warnf("GetSuccessfulInvitations successfulInvitations error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return successfulInvitations, nil
- }
- // 获取提现次数 status:查询的事件状态 -1表示查询全部
- func (a *PlayerManage) GetWithdrawalCount(userName string, status int) (int64, *code.Result) {
- withdrawalWhere := &eventmodels.UserWithdrawEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- }
- if status != -1 {
- withdrawalWhere.Status = status
- }
- withdrawalDb := mdb.LogstashDB.Model(&eventmodels.UserWithdrawEventContent{}).Where(withdrawalWhere).Order("create_at")
- var withdrawals int64
- err := withdrawalDb.Count(&withdrawals).Error
- if err != nil {
- mhayaLogger.Warnf("GetWithdrawalCount withdrawals error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return withdrawals, nil
- }
- // 获取累计提现金额 currency:货币类型 status:查询的事件状态 -1表示查询全部
- func (a *PlayerManage) GetCumulativeWithdrawalAmount(userName, currency string, status int) (int64, *code.Result) {
- withdrawalAmountWhere := &eventmodels.UserWithdrawEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- Currency: currency,
- }
- if status != -1 {
- withdrawalAmountWhere.Status = status
- }
- var cumulativeWithdrawalAmount int64
- err := mdb.LogstashDB.Model(&eventmodels.UserWithdrawEventContent{}).Where(withdrawalAmountWhere).Pluck("SUM(amount) as total_amount", &cumulativeWithdrawalAmount).Error
- if err != nil {
- mhayaLogger.Warnf("GetCumulativeWithdrawalAmount Pluck currency error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return cumulativeWithdrawalAmount, nil
- }
- // 获取注册记录
- func (a *PlayerManage) GetRegisterRecord(userName string) (*eventmodels.UserRegisterEventContent, *code.Result) {
- var registerRecord *eventmodels.UserRegisterEventContent
- where := &eventmodels.UserRegisterEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- EventBasic: eventmodels.EventBasic{
- Status: 0,
- },
- }
- err := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).First(®isterRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetRegisterRecord First registerRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return registerRecord, nil
- }
- // 获取的是注册的总人数
- func (a *PlayerManage) GetPlayerTotalCount() (int64, *code.Result) {
- where := &eventmodels.UserRegisterEventContent{
- EventBasic: eventmodels.EventBasic{
- Status: 0,
- },
- }
- db := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).Order("create_at")
- var count int64
- err := db.Count(&count).Error
- if err != nil {
- mhayaLogger.Warnf("GetPlayerTotalCount Count error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return count, nil
- }
- // 获取的是登录过的总人数 根据user_id去重
- func (a *PlayerManage) GetLoginedPlayerTotalCount() (int64, *code.Result) {
- where := &eventmodels.UserLoginEventContent{
- EventBasic: eventmodels.EventBasic{
- Status: 0,
- },
- }
- db := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Distinct("user_id").Where(where)
- var count int64
- err := db.Count(&count).Error
- if err != nil {
- mhayaLogger.Warnf("GetLoginedPlayerTotalCount Count error:%v", err)
- return 0, common.NewResult(code.InternalError)
- }
- return count, nil
- }
- // 获取最新的用户信息更新记录
- func (a *PlayerManage) GetPlayerLastestUpdateRecord(userName string) (*eventmodels.UserUpdateInfoEventContent, *code.Result) {
- var updateRecord *eventmodels.UserUpdateInfoEventContent
- updateWhere := &eventmodels.UserUpdateInfoEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- }
- err := mdb.LogstashDB.Model(&eventmodels.UserUpdateInfoEventContent{}).Where(updateWhere).Order("create_at desc").First(&updateRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetPlayerLastestUpdateRecord First updateRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return updateRecord, nil
- }
- // 获取用户的首次登录记录
- func (a *PlayerManage) GetPlayerFirstLoginRecord(userName string) (*eventmodels.UserLoginEventContent, *code.Result) {
- var loginRecord *eventmodels.UserLoginEventContent
- loginWhere := &eventmodels.UserLoginEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- }
- err := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Where(loginWhere).Order("create_at").First(&loginRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetPlayerFirstLoginRecord First loginRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return loginRecord, nil
- }
- // 获取最新的用户登录记录
- func (a *PlayerManage) GetPlayerLastestLoginRecord(userName string) (*eventmodels.UserLoginEventContent, *code.Result) {
- var loginRecord *eventmodels.UserLoginEventContent
- loginWhere := &eventmodels.UserLoginEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- }
- err := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Where(loginWhere).Order("create_at desc").First(&loginRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetPlayerLastestLoginRecord First loginRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return loginRecord, nil
- }
- // 获取用户的注册记录
- func (a *PlayerManage) GetPlayerRegisterRecord(userName string) (*eventmodels.UserRegisterEventContent, *code.Result) {
- var registerRecord *eventmodels.UserRegisterEventContent
- where := &eventmodels.UserRegisterEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- }
- err := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).First(®isterRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetPlayerRegisterRecord First registerRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return registerRecord, nil
- }
- // 获取用户加入频道的记录
- func (a *PlayerManage) GetJoinRecord(userName, channelName string) (*eventmodels.JoinChannelEventContent, *code.Result) {
- var joinRecord *eventmodels.JoinChannelEventContent
- where := &eventmodels.JoinChannelEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- ChannelName: channelName,
- }
- err := mdb.LogstashDB.Model(&eventmodels.JoinChannelEventContent{}).Where(where).First(&joinRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetJoinRecord First joinRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return joinRecord, nil
- }
- // 获取用户关注的记录
- func (a *PlayerManage) GetFollowRecord(userName, channelName string) (*eventmodels.FollowEventContent, *code.Result) {
- var followRecord *eventmodels.FollowEventContent
- where := &eventmodels.FollowEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- ChannelName: channelName,
- }
- err := mdb.LogstashDB.Model(&eventmodels.FollowEventContent{}).Where(where).First(&followRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetFollowRecord First followRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return followRecord, nil
- }
- // 获取最新的用户骰子投掷记录
- func (a *PlayerManage) GetPlayerLastestDiceRecord(userName string) (*eventmodels.DiceEventContent, *code.Result) {
- var diceRecord *eventmodels.DiceEventContent
- where := &eventmodels.DiceEventContent{
- UserBasic: eventmodels.UserBasic{UserId: userName},
- }
- err := mdb.LogstashDB.Model(&eventmodels.DiceEventContent{}).Where(where).Order("create_at desc").First(&diceRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetPlayerLastestDiceRecord First diceRecord error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return diceRecord, nil
- }
- // 获取用户任务的最新记录
- func (a *PlayerManage) GetLastestTaskInfo(userName, taskId string) (*eventmodels.TaskFinishEventContent, *code.Result) {
- taskRecord := &eventmodels.TaskFinishEventContent{}
- where := &eventmodels.TaskFinishEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- TaskId: taskId,
- }
- err := mdb.LogstashDB.Model(&eventmodels.TaskFinishEventContent{}).Where(where).Order("create_at desc").First(&taskRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetLastestTaskInfo First error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return taskRecord, nil
- }
- // 获取玩家的分享记录 date:2006-01-02
- func (a *PlayerManage) GetShareRecord(userName, date string) (*eventmodels.ShareEventContent, *code.Result) {
- where := &eventmodels.ShareEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- }
- db := mdb.LogstashDB.Model(&eventmodels.ShareEventContent{}).Where(where)
- t, err := time.Parse(time.DateOnly, date)
- if err != nil {
- mhayaLogger.Warnf("GetShareRecord Parse date:%s error:%v", date, err)
- return nil, common.NewResult(code.InternalError)
- }
- dateTime := mhayaTime.CreateFromDate(t.Year(), int(t.Month()), t.Day())
- startTime := dateTime.StartOfDay().Unix()
- endTime := dateTime.EndOfDay().Unix()
- db = db.Where("create_at >= ? and create_at <= ?", startTime, endTime)
- shareRecord := &eventmodels.ShareEventContent{}
- err = db.First(&shareRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetShareRecord First error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return shareRecord, nil
- }
- // 获取玩家的签到记录 date:2006-01-02
- func (a *PlayerManage) GetSigninRecord(userName, date string, signinType int) (*eventmodels.SigninEventContent, *code.Result) {
- where := &eventmodels.SigninEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: userName,
- },
- SigninType: signinType,
- }
- db := mdb.LogstashDB.Model(&eventmodels.SigninEventContent{}).Where(where)
- t, err := time.Parse(time.DateOnly, date)
- if err != nil {
- mhayaLogger.Warnf("GetSigninRecord Parse date:%s error:%v", date, err)
- return nil, common.NewResult(code.InternalError)
- }
- dateTime := mhayaTime.CreateFromDate(t.Year(), int(t.Month()), t.Day())
- startTime := dateTime.StartOfDay().Unix()
- endTime := dateTime.EndOfDay().Unix()
- db = db.Where("create_at >= ? and create_at <= ?", startTime, endTime)
- signinRecord := &eventmodels.SigninEventContent{}
- err = db.First(&signinRecord).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("GetSigninRecord First error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return signinRecord, nil
- }
- // 获取玩家详情
- func (a *PlayerManage) PlayerInfo(ctx context.Context, req entity.PlayerInfoReq) (*entity.PlayerInfoResp, *code.Result) {
- registerRecord, codeResult := a.GetPlayerRegisterRecord(req.UserName)
- if codeResult != nil {
- mhayaLogger.Warnf("PlayerInfo GetPlayerRegisterRecord error:%v", codeResult)
- return nil, codeResult
- }
- if registerRecord == nil {
- mhayaLogger.Warnf("PlayerInfo registerRecord:%v", registerRecord)
- return nil, nil
- }
- updateRecord, codeResult := a.GetPlayerLastestUpdateRecord(req.UserName)
- if codeResult != nil {
- mhayaLogger.Warnf("PlayerInfo GetPlayerLastestUpdateRecord error:%v", codeResult)
- return nil, codeResult
- }
- loginRecord, codeResult := a.GetPlayerLastestLoginRecord(req.UserName)
- if codeResult != nil {
- mhayaLogger.Warnf("PlayerInfo GetPlayerLastestLoginRecord error:%v", codeResult)
- return nil, codeResult
- }
- shareRecord, codeResult := a.GetShareRecord(req.UserName, mhayaTime.Now().Format(time.DateOnly))
- if codeResult != nil {
- mhayaLogger.Warnf("PlayerInfo GetShareRecord error:%v", codeResult)
- return nil, codeResult
- }
- return &entity.PlayerInfoResp{
- UserName: func() string {
- if updateRecord != nil {
- return updateRecord.UserId
- }
- if registerRecord != nil {
- return registerRecord.UserId
- }
- return ""
- }(),
- OpenId: func() string {
- if updateRecord != nil {
- return updateRecord.TgId
- }
- if registerRecord != nil {
- return registerRecord.TgId
- }
- return ""
- }(),
- NickName: func() string {
- if updateRecord != nil {
- return updateRecord.UserName
- }
- if registerRecord != nil {
- return registerRecord.UserName
- }
- return ""
- }(),
- Pid: func() string {
- if updateRecord != nil {
- return updateRecord.ParentUserId
- }
- if registerRecord != nil {
- return registerRecord.ParentUserId
- }
- return ""
- }(),
- XID: func() string {
- if updateRecord != nil {
- return updateRecord.XId
- }
- if registerRecord != nil {
- return registerRecord.XId
- }
- return ""
- }(),
- TonWall: func() string {
- if updateRecord != nil {
- return updateRecord.TonWall
- }
- if registerRecord != nil {
- return registerRecord.TonWall
- }
- return ""
- }(),
- Email: func() string {
- if updateRecord != nil {
- return updateRecord.Email
- }
- if registerRecord != nil {
- return registerRecord.Email
- }
- return ""
- }(),
- Level: func() int {
- if updateRecord != nil {
- return updateRecord.Level
- }
- if registerRecord != nil {
- return registerRecord.Level
- }
- return 0
- }(),
- Status: func() int {
- if updateRecord != nil {
- return updateRecord.UserStatus
- }
- if registerRecord != nil {
- return registerRecord.UserStatus
- }
- return 0
- }(),
- LoginTime: func() int64 {
- if loginRecord != nil {
- return loginRecord.CreateAt
- }
- return 0
- }(),
- LoginIP: func() string {
- if loginRecord != nil {
- return loginRecord.Ip
- }
- return ""
- }(),
- JoinIP: func() string {
- if registerRecord != nil {
- return registerRecord.Ip
- }
- return ""
- }(),
- JoinTime: func() int64 {
- if registerRecord != nil {
- return registerRecord.CreateAt
- }
- return 0
- }(),
- Avatar: "",
- IsRobot: func() int {
- if updateRecord != nil && updateRecord.IsRobot {
- return 1
- }
- if registerRecord != nil && registerRecord.IsRobot {
- return 1
- }
- return 0
- }(),
- IsLeader: func() int {
- if updateRecord != nil && updateRecord.UpdateIsLeader {
- return 1
- }
- return 0
- }(),
- IsVip: func() int {
- if updateRecord != nil && updateRecord.UpdateIsVip {
- return 1
- }
- return 0
- }(),
- Successions: func() int {
- if loginRecord != nil {
- return loginRecord.ContinuousDays
- }
- return 0
- }(),
- MaxSuccessions: func() int {
- if loginRecord != nil {
- return loginRecord.ContinuousDaysMax
- }
- return 0
- }(),
- PrevTime: func() int64 {
- if loginRecord != nil {
- return loginRecord.CreateAt
- }
- return 0
- }(),
- UpdateTime: func() int64 {
- if updateRecord != nil {
- return updateRecord.CreateAt
- }
- return 0
- }(),
- Share: func() *models.Share {
- if shareRecord != nil {
- return &models.Share{
- IsDrawShare: shareRecord.RewardDrawStatus,
- DrawShareTime: shareRecord.CreateAt,
- }
- }
- return nil
- }(),
- // TODO 其他玩家信息
- FirstReward: 0,
- // Item:,
- // SinIn:,
- // DailyTask:,
- // AchieveTask:,
- // RankReward:,
- // Invite:,
- // InviteReward:,
- // Roll:,
- }, nil
- }
- // 获取玩家中奖记录
- func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq) (*entity.RewardListResp, *code.Result) {
- page, pageSize := checkPageParam(req.Page, req.Size)
- var rewardRecords []*eventmodels.UserRewardEventContent
- where := &eventmodels.UserRewardEventContent{
- UserBasic: eventmodels.UserBasic{
- UserId: req.UserName,
- },
- Source: models.SourceDraw,
- }
- db := mdb.LogstashDB.Model(&eventmodels.UserRewardEventContent{}).Where(where).Order("create_at")
- if req.StartTime > 0 && req.EndTime > 0 && req.StartTime <= req.EndTime {
- db = db.Where("create_at >= ? and create_at <= ?", req.StartTime, req.EndTime)
- }
- pages := Paginate(db, page, pageSize)
- err := db.Scopes(pages.Limit).Find(&rewardRecords).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- mhayaLogger.Warnf("RewardList Find error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- var results []*entity.RewardListDetail
- for _, v := range rewardRecords {
- addReward := make([]*entity.ShowItemReward, 0, 8)
- addRewards := make([]eventmodels.ItemReward, 0, 8)
- if v.AddReward == "" {
- addRewards = nil
- } else {
- err := json.Unmarshal([]byte(v.AddReward), &addRewards)
- if err != nil {
- mhayaLogger.Warnf("RewardList Unmarshal v.AddReward error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- }
- if addRewards == nil {
- addReward = nil
- } else {
- for _, item := range addRewards {
- addReward = append(addReward, a.packItemReward(item))
- }
- }
- var desc *entity.Desc
- if v.Desc != "" {
- descDraw := eventmodels.DescDraw{}
- err := json.Unmarshal([]byte(v.Desc), &descDraw)
- if err != nil {
- mhayaLogger.Warnf("RewardList Unmarshal v.Desc error:%v", err)
- return nil, common.NewResult(code.InternalError)
- }
- ret := make([]*entity.ShowItemReward, 0, 8)
- for _, item := range descDraw.Reward {
- ret = append(ret, a.packItemReward(item))
- }
- desc = &entity.Desc{
- ID: descDraw.ID,
- CurID: descDraw.CurID,
- Reward: ret,
- }
- }
- results = append(results, &entity.RewardListDetail{
- UserName: v.UserId,
- AddReward: addReward,
- Desc: desc,
- CreateTime: v.CreateAt,
- })
- }
- return &entity.RewardListResp{
- Details: results,
- Total: pages.Count,
- }, nil
- }
- func (a *PlayerManage) packItemReward(reward eventmodels.ItemReward) *entity.ShowItemReward {
- itemName := ""
- cfg, exist := data.ItemConfig.Get(reward.ItemID)
- if exist {
- itemName = cfg.ItemKey
- }
- return &entity.ShowItemReward{
- ItemBaseType: reward.ItemBaseType,
- ItemID: reward.ItemID,
- ItemName: itemName,
- Amount: func() float64 {
- if itemName == "u" || itemName == "ton" {
- return cutils.QuoInt64ByRatioToFloat64(int64(reward.Amount), constant.MoneyRatio)
- }
- return float64(reward.Amount)
- }(),
- }
- }
|