playerMange.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. package service
  2. import (
  3. "context"
  4. cutils "github.com/mhaya/extend/utils"
  5. "github.com/mhaya/game/game_cluster/internal/code"
  6. "github.com/mhaya/game/game_cluster/internal/constant"
  7. "github.com/mhaya/game/game_cluster/internal/data"
  8. "github.com/mhaya/game/game_cluster/internal/mdb"
  9. "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
  10. "github.com/mhaya/game/game_cluster/internal/mdb/models"
  11. "github.com/mhaya/game/game_cluster/internal/param"
  12. "github.com/mhaya/game/game_cluster/nodes/webadmin/common"
  13. "github.com/mhaya/game/game_cluster/nodes/webadmin/entity"
  14. mhayaLogger "github.com/mhaya/logger"
  15. "go.mongodb.org/mongo-driver/mongo"
  16. "gorm.io/gorm"
  17. )
  18. type PlayerManage struct {
  19. db *mongo.Database
  20. }
  21. func NewPlayerManage() *PlayerManage {
  22. return &PlayerManage{
  23. db: mdb.MDB,
  24. }
  25. }
  26. // 获取玩家列表
  27. func (a *PlayerManage) List(ctx context.Context, req entity.PlayerListReq) (*entity.PlayerListResp, *code.Result) {
  28. page, pageSize := checkPageParam(req.Page, req.Size)
  29. var registerRecords []*eventmodels.UserRegisterEventContent
  30. where := &eventmodels.UserRegisterEventContent{
  31. UserBasic: eventmodels.UserBasic{
  32. UserId: req.UserName,
  33. TgId: req.OpenId,
  34. XId: req.XID,
  35. ParentUserId: req.Pid,
  36. TonWall: req.TonWall,
  37. Email: req.Email,
  38. UserStatus: req.Status,
  39. },
  40. }
  41. db := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).Order("create_at")
  42. if req.LevelMin > 0 && req.LevelMax == 0 {
  43. db = db.Where("level >= ? and level <= ?", req.LevelMin, 1000) // 等级最大值 暂定1000
  44. }
  45. if req.LevelMin > 0 && req.LevelMax > 0 && req.LevelMin <= req.LevelMax {
  46. db = db.Where("level >= ? and level <= ?", req.LevelMin, req.LevelMax)
  47. }
  48. if req.JoinTimeMin > 0 && req.JoinTimeMax > 0 && req.JoinTimeMin <= req.JoinTimeMax {
  49. db = db.Where("create_at >= ? and create_at <= ?", req.JoinTimeMin, req.JoinTimeMax)
  50. }
  51. pages := Paginate(db, page, pageSize)
  52. err := db.Scopes(pages.Limit).Find(&registerRecords).Error
  53. if err != nil && err != gorm.ErrRecordNotFound {
  54. mhayaLogger.Warnf("List Find error:%v", err)
  55. return nil, common.NewResult(code.InternalError)
  56. }
  57. var results []*entity.PlayerListDetail
  58. for _, v := range registerRecords {
  59. updateRecord, codeResult := a.GetPlayerLastestUpdateRecord(v.UserName)
  60. if codeResult != nil {
  61. mhayaLogger.Warnf("List GetPlayerLastestUpdateRecord error:%v", codeResult)
  62. return nil, codeResult
  63. }
  64. loginRecord, codeResult := a.GetPlayerLastestLoginRecord(v.UserName)
  65. if codeResult != nil {
  66. mhayaLogger.Warnf("List GetPlayerLastestLoginRecord error:%v", codeResult)
  67. return nil, codeResult
  68. }
  69. results = append(results, &entity.PlayerListDetail{
  70. UserName: v.UserId,
  71. OpenId: func() string {
  72. if updateRecord == nil {
  73. return v.TgId
  74. }
  75. return updateRecord.TgId
  76. }(),
  77. NickName: func() string {
  78. if updateRecord == nil {
  79. return v.UserName
  80. }
  81. return updateRecord.UserName
  82. }(),
  83. Pid: func() string {
  84. if updateRecord == nil {
  85. return v.ParentUserId
  86. }
  87. return updateRecord.ParentUserId
  88. }(),
  89. XID: func() string {
  90. if updateRecord == nil {
  91. return v.XId
  92. }
  93. return updateRecord.XId
  94. }(),
  95. TonWall: func() string {
  96. if updateRecord == nil {
  97. return v.TonWall
  98. }
  99. return updateRecord.TonWall
  100. }(),
  101. Email: func() string {
  102. if updateRecord == nil {
  103. return v.Email
  104. }
  105. return updateRecord.Email
  106. }(),
  107. Level: func() int {
  108. if updateRecord == nil {
  109. return v.Level
  110. }
  111. return updateRecord.Level
  112. }(),
  113. Status: func() int {
  114. if updateRecord == nil {
  115. return v.UserStatus
  116. }
  117. return updateRecord.UserStatus
  118. }(),
  119. LoginTime: func() int64 {
  120. if loginRecord != nil {
  121. return loginRecord.CreateAt
  122. }
  123. return 0
  124. }(),
  125. LoginIP: func() string {
  126. if loginRecord != nil {
  127. return loginRecord.Ip
  128. }
  129. return ""
  130. }(),
  131. JoinIP: v.Ip,
  132. JoinTime: v.CreateAt,
  133. })
  134. }
  135. return &entity.PlayerListResp{
  136. Details: results,
  137. Total: pages.Count,
  138. }, nil
  139. }
  140. // 获取累计登录次数
  141. func (a *PlayerManage) GetMaxSuccessions(userName string) (int64, *code.Result) {
  142. loginWhere := &eventmodels.UserLoginEventContent{
  143. UserBasic: eventmodels.UserBasic{
  144. UserId: userName,
  145. },
  146. }
  147. loginDb := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Where(loginWhere).Order("create_at")
  148. var loginCount int64
  149. err := loginDb.Count(&loginCount).Error
  150. if err != nil {
  151. mhayaLogger.Warnf("GetMaxSuccessions loginCount error:%v", err)
  152. return 0, common.NewResult(code.InternalError)
  153. }
  154. return loginCount, nil
  155. }
  156. // 获取用户骰子点击次数
  157. func (a *PlayerManage) GetDiceHits(userName string) (int64, *code.Result) {
  158. diceClickWhere := &eventmodels.ClickEventContent{
  159. UserBasic: eventmodels.UserBasic{
  160. UserId: userName,
  161. },
  162. ClickName: string(constant.DiceClickName),
  163. }
  164. clickDb := mdb.LogstashDB.Model(&eventmodels.ClickEventContent{}).Where(diceClickWhere).Order("create_at")
  165. var diceHits int64
  166. err := clickDb.Count(&diceHits).Error
  167. if err != nil {
  168. mhayaLogger.Warnf("GetDiceHits diceHits error:%v", err)
  169. return 0, common.NewResult(code.InternalError)
  170. }
  171. return diceHits, nil
  172. }
  173. // 获取邀请点击次数
  174. func (a *PlayerManage) GetInvitationHits(userName string) (int64, *code.Result) {
  175. inviteClickWhere := &eventmodels.ClickEventContent{
  176. UserBasic: eventmodels.UserBasic{
  177. UserId: userName,
  178. },
  179. ClickName: string(constant.InviteClickName),
  180. }
  181. clickDb := mdb.LogstashDB.Model(&eventmodels.ClickEventContent{}).Where(inviteClickWhere).Order("create_at")
  182. var invitationHits int64
  183. err := clickDb.Count(&invitationHits).Error
  184. if err != nil {
  185. mhayaLogger.Warnf("GetInvitationHits invitationHits error:%v", err)
  186. return 0, common.NewResult(code.InternalError)
  187. }
  188. return invitationHits, nil
  189. }
  190. // 获取转盘点击次数
  191. func (a *PlayerManage) GetTurntableClicks(userName string) (int64, *code.Result) {
  192. turntableClickWhere := &eventmodels.ClickEventContent{
  193. UserBasic: eventmodels.UserBasic{
  194. UserId: userName,
  195. },
  196. ClickName: string(constant.TurntableClickName),
  197. }
  198. clickDb := mdb.LogstashDB.Model(&eventmodels.ClickEventContent{}).Where(turntableClickWhere).Order("create_at")
  199. var turntableClicks int64
  200. err := clickDb.Count(&turntableClicks).Error
  201. if err != nil {
  202. mhayaLogger.Warnf("GetTurntableClicks turntableClicks error:%v", err)
  203. return 0, common.NewResult(code.InternalError)
  204. }
  205. return turntableClicks, nil
  206. }
  207. // 获取转盘实际抽奖次数
  208. func (a *PlayerManage) GetTurntableRuns(userName string) (int64, *code.Result) {
  209. turntableWhere := &eventmodels.TurntableEventContent{
  210. UserBasic: eventmodels.UserBasic{
  211. UserId: userName,
  212. },
  213. }
  214. turntableDb := mdb.LogstashDB.Model(&eventmodels.TurntableEventContent{}).Where(turntableWhere).Order("create_at")
  215. var turntableRuns int64
  216. err := turntableDb.Count(&turntableRuns).Error
  217. if err != nil {
  218. mhayaLogger.Warnf("GetTurntableRuns turntableRuns error:%v", err)
  219. return 0, common.NewResult(code.InternalError)
  220. }
  221. return turntableRuns, nil
  222. }
  223. // 获取邀请成功人数 status:查询的事件状态
  224. func (a *PlayerManage) GetSuccessfulInvitations(userName string, status int) (int64, *code.Result) {
  225. inviteWhere := &eventmodels.InviteEventContent{
  226. UserBasic: eventmodels.UserBasic{
  227. UserId: userName,
  228. },
  229. EventBasic: eventmodels.EventBasic{
  230. Status: status,
  231. },
  232. }
  233. inviteDb := mdb.LogstashDB.Model(&eventmodels.InviteEventContent{}).Where(inviteWhere).Order("create_at")
  234. var successfulInvitations int64
  235. err := inviteDb.Count(&successfulInvitations).Error
  236. if err != nil {
  237. mhayaLogger.Warnf("GetSuccessfulInvitations successfulInvitations error:%v", err)
  238. return 0, common.NewResult(code.InternalError)
  239. }
  240. return successfulInvitations, nil
  241. }
  242. // 获取提现次数 status:查询的事件状态
  243. func (a *PlayerManage) GetWithdrawalCount(userName string, status int) (int64, *code.Result) {
  244. withdrawalWhere := &eventmodels.UserWithdrawEventContent{
  245. UserBasic: eventmodels.UserBasic{
  246. UserId: userName,
  247. },
  248. EventBasic: eventmodels.EventBasic{
  249. Status: status,
  250. },
  251. }
  252. withdrawalDb := mdb.LogstashDB.Model(&eventmodels.UserWithdrawEventContent{}).Where(withdrawalWhere).Order("create_at")
  253. var withdrawals int64
  254. err := withdrawalDb.Count(&withdrawals).Error
  255. if err != nil {
  256. mhayaLogger.Warnf("GetWithdrawalCount withdrawals error:%v", err)
  257. return 0, common.NewResult(code.InternalError)
  258. }
  259. return withdrawals, nil
  260. }
  261. // 获取累计提现金额 currency:货币类型 status:查询的事件状态
  262. func (a *PlayerManage) GetCumulativeWithdrawalAmount(userName, currency string, status int) (int64, *code.Result) {
  263. withdrawalAmountWhere := &eventmodels.UserWithdrawEventContent{
  264. UserBasic: eventmodels.UserBasic{
  265. UserId: userName,
  266. },
  267. EventBasic: eventmodels.EventBasic{
  268. Status: status,
  269. },
  270. Currency: currency,
  271. }
  272. var cumulativeWithdrawalAmount int64
  273. err := mdb.LogstashDB.Model(&eventmodels.UserWithdrawEventContent{}).Where(withdrawalAmountWhere).Pluck("SUM(amount) as total_amount", &cumulativeWithdrawalAmount).Error
  274. if err != nil {
  275. mhayaLogger.Warnf("GetCumulativeWithdrawalAmount Pluck currency error:%v", err)
  276. return 0, common.NewResult(code.InternalError)
  277. }
  278. return cumulativeWithdrawalAmount, nil
  279. }
  280. // 获取的是注册的总人数
  281. func (a *PlayerManage) GetPlayerTotalCount() (int64, *code.Result) {
  282. where := &eventmodels.UserRegisterEventContent{
  283. EventBasic: eventmodels.EventBasic{
  284. Status: 0,
  285. },
  286. }
  287. db := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).Order("create_at")
  288. var count int64
  289. err := db.Count(&count).Error
  290. if err != nil {
  291. mhayaLogger.Warnf("GetPlayerTotalCount Count error:%v", err)
  292. return 0, common.NewResult(code.InternalError)
  293. }
  294. return count, nil
  295. }
  296. // 获取的是登录过的总人数 根据user_id去重
  297. func (a *PlayerManage) GetLoginedPlayerTotalCount() (int64, *code.Result) {
  298. where := &eventmodels.UserLoginEventContent{
  299. EventBasic: eventmodels.EventBasic{
  300. Status: 0,
  301. },
  302. }
  303. db := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Distinct("user_id").Where(where)
  304. var count int64
  305. err := db.Count(&count).Error
  306. if err != nil {
  307. mhayaLogger.Warnf("GetLoginedPlayerTotalCount Count error:%v", err)
  308. return 0, common.NewResult(code.InternalError)
  309. }
  310. return count, nil
  311. }
  312. // 获取最新的用户信息更新记录
  313. func (a *PlayerManage) GetPlayerLastestUpdateRecord(userName string) (*eventmodels.UserUpdateInfoEventContent, *code.Result) {
  314. var updateRecord *eventmodels.UserUpdateInfoEventContent
  315. updateWhere := &eventmodels.UserUpdateInfoEventContent{
  316. UserBasic: eventmodels.UserBasic{UserId: userName},
  317. }
  318. err := mdb.LogstashDB.Model(&eventmodels.UserUpdateInfoEventContent{}).Where(updateWhere).Order("create_at desc").First(&updateRecord).Error
  319. if err != nil && err != gorm.ErrRecordNotFound {
  320. mhayaLogger.Warnf("GetPlayerLastestUpdateRecord First updateRecord error:%v", err)
  321. return nil, common.NewResult(code.InternalError)
  322. }
  323. return updateRecord, nil
  324. }
  325. // 获取最新的用户登录记录
  326. func (a *PlayerManage) GetPlayerLastestLoginRecord(userName string) (*eventmodels.UserLoginEventContent, *code.Result) {
  327. var loginRecord *eventmodels.UserLoginEventContent
  328. loginWhere := &eventmodels.UserLoginEventContent{
  329. UserBasic: eventmodels.UserBasic{UserId: userName},
  330. }
  331. err := mdb.LogstashDB.Model(&eventmodels.UserLoginEventContent{}).Where(loginWhere).Order("create_at desc").First(&loginRecord).Error
  332. if err != nil && err != gorm.ErrRecordNotFound {
  333. mhayaLogger.Warnf("GetPlayerLastestLoginRecord First loginRecord error:%v", err)
  334. return nil, common.NewResult(code.InternalError)
  335. }
  336. return loginRecord, nil
  337. }
  338. // 获取用户的注册记录
  339. func (a *PlayerManage) GetPlayerRegisterRecord(userName string) (*eventmodels.UserRegisterEventContent, *code.Result) {
  340. var registerRecord *eventmodels.UserRegisterEventContent
  341. where := &eventmodels.UserRegisterEventContent{
  342. UserBasic: eventmodels.UserBasic{UserId: userName},
  343. }
  344. err := mdb.LogstashDB.Model(&eventmodels.UserRegisterEventContent{}).Where(where).First(&registerRecord).Error
  345. if err != nil && err != gorm.ErrRecordNotFound {
  346. mhayaLogger.Warnf("GetPlayerRegisterRecord First registerRecord error:%v", err)
  347. return nil, common.NewResult(code.InternalError)
  348. }
  349. return registerRecord, nil
  350. }
  351. // 获取玩家详情
  352. func (a *PlayerManage) PlayerInfo(ctx context.Context, req entity.PlayerInfoReq) (*entity.PlayerInfoResp, *code.Result) {
  353. updateRecord, codeResult := a.GetPlayerLastestUpdateRecord(req.UserName)
  354. if codeResult != nil {
  355. mhayaLogger.Warnf("PlayerInfo GetPlayerLastestUpdateRecord error:%v", codeResult)
  356. return nil, codeResult
  357. }
  358. var registerRecord *eventmodels.UserRegisterEventContent
  359. if updateRecord == nil {
  360. record, codeResult := a.GetPlayerRegisterRecord(req.UserName)
  361. if codeResult != nil {
  362. mhayaLogger.Warnf("PlayerInfo GetPlayerRegisterRecord error:%v", codeResult)
  363. return nil, codeResult
  364. }
  365. registerRecord = record
  366. }
  367. loginRecord, codeResult := a.GetPlayerLastestLoginRecord(req.UserName)
  368. if codeResult != nil {
  369. mhayaLogger.Warnf("PlayerInfo GetPlayerLastestLoginRecord error:%v", codeResult)
  370. return nil, codeResult
  371. }
  372. return &entity.PlayerInfoResp{
  373. UserName: func() string {
  374. if updateRecord != nil {
  375. return updateRecord.UserId
  376. }
  377. if registerRecord != nil {
  378. return registerRecord.UserId
  379. }
  380. return ""
  381. }(),
  382. OpenId: func() string {
  383. if updateRecord != nil {
  384. return updateRecord.TgId
  385. }
  386. if registerRecord != nil {
  387. return registerRecord.TgId
  388. }
  389. return ""
  390. }(),
  391. NickName: func() string {
  392. if updateRecord != nil {
  393. return updateRecord.UserName
  394. }
  395. if registerRecord != nil {
  396. return registerRecord.UserName
  397. }
  398. return ""
  399. }(),
  400. Pid: func() string {
  401. if updateRecord != nil {
  402. return updateRecord.ParentUserId
  403. }
  404. if registerRecord != nil {
  405. return registerRecord.ParentUserId
  406. }
  407. return ""
  408. }(),
  409. XID: func() string {
  410. if updateRecord != nil {
  411. return updateRecord.XId
  412. }
  413. if registerRecord != nil {
  414. return registerRecord.XId
  415. }
  416. return ""
  417. }(),
  418. TonWall: func() string {
  419. if updateRecord != nil {
  420. return updateRecord.TonWall
  421. }
  422. if registerRecord != nil {
  423. return registerRecord.TonWall
  424. }
  425. return ""
  426. }(),
  427. Email: func() string {
  428. if updateRecord != nil {
  429. return updateRecord.Email
  430. }
  431. if registerRecord != nil {
  432. return registerRecord.Email
  433. }
  434. return ""
  435. }(),
  436. Level: func() int {
  437. if updateRecord != nil {
  438. return updateRecord.Level
  439. }
  440. if registerRecord != nil {
  441. return registerRecord.Level
  442. }
  443. return 0
  444. }(),
  445. Status: func() int {
  446. if updateRecord != nil {
  447. return updateRecord.UserStatus
  448. }
  449. if registerRecord != nil {
  450. return registerRecord.UserStatus
  451. }
  452. return 0
  453. }(),
  454. LoginTime: func() int64 {
  455. if loginRecord != nil {
  456. return loginRecord.CreateAt
  457. }
  458. return 0
  459. }(),
  460. LoginIP: func() string {
  461. if loginRecord != nil {
  462. return loginRecord.Ip
  463. }
  464. return ""
  465. }(),
  466. JoinIP: func() string {
  467. if registerRecord != nil {
  468. return registerRecord.Ip
  469. }
  470. return ""
  471. }(),
  472. JoinTime: func() int64 {
  473. if registerRecord != nil {
  474. return registerRecord.CreateAt
  475. }
  476. return 0
  477. }(),
  478. Avatar: "",
  479. IsRobot: func() int {
  480. if updateRecord != nil && updateRecord.IsRobot {
  481. return 1
  482. }
  483. if registerRecord != nil && registerRecord.IsRobot {
  484. return 1
  485. }
  486. return 0
  487. }(),
  488. IsLeader: func() int {
  489. if updateRecord != nil && updateRecord.IsLeader {
  490. return 1
  491. }
  492. return 0
  493. }(),
  494. IsVip: func() int {
  495. if updateRecord != nil && updateRecord.IsVip {
  496. return 1
  497. }
  498. return 0
  499. }(),
  500. Successions: loginRecord.ContinuousDays,
  501. MaxSuccessions: loginRecord.ContinuousDaysMax,
  502. PrevTime: func() int64 {
  503. if loginRecord != nil {
  504. return loginRecord.CreateAt
  505. }
  506. return 0
  507. }(),
  508. UpdateTime: func() int64 {
  509. if updateRecord != nil {
  510. return updateRecord.CreateAt
  511. }
  512. return 0
  513. }(),
  514. IsDrawShare: 0, // TODO
  515. DrawShareTime: 0, // TODO
  516. FirstReward: 0, // TODO
  517. // TODO 其他玩家信息
  518. }, nil
  519. }
  520. // 获取玩家中奖记录
  521. func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq) (*entity.RewardListResp, *code.Result) {
  522. page, pageSize := checkPageParam(req.Page, req.Size)
  523. var rewardRecords []*eventmodels.UserRewardEventContent
  524. where := &eventmodels.UserRewardEventContent{
  525. UserBasic: eventmodels.UserBasic{
  526. UserId: req.UserName,
  527. },
  528. Source: models.SourceDraw,
  529. }
  530. db := mdb.LogstashDB.Model(&eventmodels.UserRewardEventContent{}).Where(where).Order("create_at")
  531. if req.StartTime > 0 && req.EndTime > 0 && req.StartTime <= req.EndTime {
  532. db = db.Where("create_at >= ? and create_at <= ?", req.StartTime, req.EndTime)
  533. }
  534. pages := Paginate(db, page, pageSize)
  535. err := db.Scopes(pages.Limit).Find(&rewardRecords).Error
  536. if err != nil && err != gorm.ErrRecordNotFound {
  537. mhayaLogger.Warnf("RewardList Find error:%v", err)
  538. return nil, common.NewResult(code.InternalError)
  539. }
  540. var results []*entity.RewardListDetail
  541. for _, v := range rewardRecords {
  542. results = append(results, &entity.RewardListDetail{
  543. UserName: v.UserId,
  544. AddReward: func() []*entity.ShowItemReward {
  545. if len(v.AddReward) == 0 {
  546. return nil
  547. }
  548. ret := make([]*entity.ShowItemReward, 0, 8)
  549. for _, item := range v.AddReward {
  550. ret = append(ret, a.packItemReward(item))
  551. }
  552. return ret
  553. }(),
  554. Desc: func() *entity.Desc {
  555. if v.Desc == nil {
  556. return nil
  557. }
  558. param, ok := v.Desc.(param.Draw)
  559. if ok {
  560. return &entity.Desc{
  561. ID: param.ID,
  562. CurID: param.CurID,
  563. Reward: func() []*entity.ShowItemReward {
  564. if len(param.Reward) == 0 {
  565. return nil
  566. }
  567. ret := make([]*entity.ShowItemReward, 0, 8)
  568. for _, item := range param.Reward {
  569. ret = append(ret, a.packItemReward(item))
  570. }
  571. return ret
  572. }(),
  573. }
  574. }
  575. return nil
  576. }(),
  577. CreateTime: v.CreateAt,
  578. })
  579. }
  580. return &entity.RewardListResp{
  581. Details: results,
  582. Total: pages.Count,
  583. }, nil
  584. }
  585. func (a *PlayerManage) packItemReward(reward data.ItemReward) *entity.ShowItemReward {
  586. itemName := ""
  587. cfg, exist := data.ItemConfig.Get(reward.ItemID)
  588. if exist {
  589. itemName = cfg.ItemKey
  590. }
  591. return &entity.ShowItemReward{
  592. ItemBaseType: reward.ItemBaseType,
  593. ItemID: reward.ItemID,
  594. ItemName: itemName,
  595. Amount: func() float64 {
  596. if itemName == "u" || itemName == "ton" {
  597. return cutils.QuoInt64ByRatioToFloat64(int64(reward.Amount), constant.MoneyRatio)
  598. }
  599. return float64(reward.Amount)
  600. }(),
  601. }
  602. }