|
@@ -41,59 +41,124 @@ func NewSynthesis(nodeId string) *Synthesis {
|
|
|
func (s *Synthesis) Overview(req entity.OverviewReq) (*entity.OverviewResp, *code.Result) {
|
|
|
page, pageSize := checkPageParam(req.Page, req.Size)
|
|
|
|
|
|
- // 构建查询条件
|
|
|
- filter := bson.M{}
|
|
|
+ playerMgr := NewPlayerManage()
|
|
|
+ // 根据条件查询
|
|
|
if req.UserName != "" {
|
|
|
- filter["userName"] = req.UserName
|
|
|
- }
|
|
|
+ detail, codeResult := s.getOverviewDetail(req.UserName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("Overview getOverviewDetail error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
|
|
|
- // 设置分页选项
|
|
|
- findOptions := options.Find()
|
|
|
- findOptions.SetSkip(int64((page - 1) * pageSize))
|
|
|
- findOptions.SetLimit(int64(pageSize))
|
|
|
- findOptions.SetSort(bson.D{{"createTime", -1}})
|
|
|
+ if detail == nil {
|
|
|
+ return nil, nil
|
|
|
+ }
|
|
|
|
|
|
- ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
|
|
|
- defer cancel()
|
|
|
+ var results []*entity.OverviewDetail
|
|
|
+ results = append(results, detail)
|
|
|
|
|
|
- collection := mdb.MDB.Collection(constant.CNamePlayer)
|
|
|
+ return &entity.OverviewResp{
|
|
|
+ Details: results,
|
|
|
+ Total: 1,
|
|
|
+ }, nil
|
|
|
+ }
|
|
|
|
|
|
- // 查询数据
|
|
|
- var results []*entity.OverviewDetail
|
|
|
- cursor, err := collection.Find(ctx, filter, findOptions)
|
|
|
- if err != nil {
|
|
|
- mhayaLogger.Warnf("Overview Find error:%v", err)
|
|
|
- return nil, common.NewResult(code.InternalError)
|
|
|
+ // 查询列表
|
|
|
+ listResp, codeResult := playerMgr.List(context.Background(), entity.PlayerListReq{
|
|
|
+ Page: page,
|
|
|
+ Size: pageSize,
|
|
|
+ })
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("Overview List error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
}
|
|
|
|
|
|
- defer cursor.Close(ctx)
|
|
|
- // 解析结果
|
|
|
- for cursor.Next(ctx) {
|
|
|
- var result entity.OverviewDetail
|
|
|
- if err := cursor.Decode(&result); err != nil {
|
|
|
- mhayaLogger.Warnf("Overview Decode error:%v", err)
|
|
|
- return nil, common.NewResult(code.InternalError)
|
|
|
+ var results []*entity.OverviewDetail
|
|
|
+ for _, detail := range listResp.Details {
|
|
|
+ detail, codeResult := s.getOverviewDetail(detail.UserName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("Overview getOverviewDetail error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
}
|
|
|
|
|
|
- results = append(results, &result)
|
|
|
+ if detail != nil {
|
|
|
+ results = append(results, detail)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if err := cursor.Err(); err != nil {
|
|
|
- mhayaLogger.Warnf("Overview cursor error:%v", err)
|
|
|
- return nil, common.NewResult(code.InternalError)
|
|
|
+ count, codeResult := playerMgr.GetPlayerTotalCount()
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("Overview GetPlayerTotalCount codeResult:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
}
|
|
|
|
|
|
- // TODO 综合统计相关信息
|
|
|
-
|
|
|
- // TODO 获取总数total
|
|
|
- var count int64
|
|
|
-
|
|
|
return &entity.OverviewResp{
|
|
|
Details: results,
|
|
|
Total: count,
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
+func (s *Synthesis) getOverviewDetail(userName string) (*entity.OverviewDetail, *code.Result) {
|
|
|
+ userDetail, codeResult := s.getUserDetail(userName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail getUserDetail error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
+
|
|
|
+ activeDetail, codeResult := s.getActive(userName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail getActive error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
+
|
|
|
+ assetDetail, codeResult := s.getAsset(userName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail getAsset error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
+
|
|
|
+ playerMgr := NewPlayerManage()
|
|
|
+
|
|
|
+ // 获取最新的用户骰子投掷记录
|
|
|
+ diceRecord, codeResult := playerMgr.GetPlayerLastestDiceRecord(userName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail GetPlayerLastestDiceRecord error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取最新的用户登录记录
|
|
|
+ loginRecord, codeResult := playerMgr.GetPlayerLastestLoginRecord(userName)
|
|
|
+ if codeResult != nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail GetPlayerLastestLoginRecord error:%v", codeResult)
|
|
|
+ return nil, codeResult
|
|
|
+ }
|
|
|
+
|
|
|
+ if loginRecord == nil {
|
|
|
+ mhayaLogger.Warnf("getOverviewDetail loginRecord:%v", loginRecord)
|
|
|
+ return nil, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ return &entity.OverviewDetail{
|
|
|
+ UserName: userName,
|
|
|
+ OpenId: userDetail.OpenId,
|
|
|
+ FirstLoginDate: userDetail.FirstLoginDate,
|
|
|
+ CreateTime: userDetail.CreateTime,
|
|
|
+ LastLoginTime: userDetail.LastLoginTime,
|
|
|
+ MaxSuccessions: activeDetail.MaxSuccessions,
|
|
|
+ DieRoll: int64(diceRecord.Count),
|
|
|
+ CurrentIntegral: assetDetail.PointsValue,
|
|
|
+ SuccessfulInvitations: activeDetail.SuccessfulInvitations,
|
|
|
+ Withdrawals: activeDetail.Withdrawals,
|
|
|
+ CumulativeWithdrawalAmount: activeDetail.CumulativeWithdrawalAmount,
|
|
|
+ TurntableRuns: activeDetail.TurntableRuns,
|
|
|
+ PointsRanking: loginRecord.PointsRankSeq,
|
|
|
+ RankingOfDiceRolls: loginRecord.ThrowDiceRankSeq,
|
|
|
+ InvitesRanking: loginRecord.InviteUserRankSeq,
|
|
|
+ TonValue: assetDetail.TonValue,
|
|
|
+ UsdtValue: assetDetail.UsdtValue,
|
|
|
+ }, nil
|
|
|
+}
|
|
|
+
|
|
|
// 统计用户相关信息
|
|
|
func (s *Synthesis) UserList(req entity.UserListReq) (*entity.UserListResp, *code.Result) {
|
|
|
page, pageSize := checkPageParam(req.Page, req.Size)
|
|
@@ -917,7 +982,6 @@ func (s *Synthesis) Assets(req entity.AssetsReq) (*entity.AssetsResp, *code.Resu
|
|
|
|
|
|
func (s *Synthesis) getAsset(userName string) (*entity.AssetsDetail, *code.Result) {
|
|
|
var totalUsdtAmount int64
|
|
|
- var totalTonAmount int64
|
|
|
where := &eventmodels.AssetsEventContent{
|
|
|
UserBasic: eventmodels.UserBasic{
|
|
|
UserId: userName,
|
|
@@ -933,6 +997,7 @@ func (s *Synthesis) getAsset(userName string) (*entity.AssetsDetail, *code.Resul
|
|
|
return nil, common.NewResult(code.InternalError)
|
|
|
}
|
|
|
|
|
|
+ var totalTonAmount int64
|
|
|
where.Currency = string(constant.TonCurrency)
|
|
|
err = mdb.LogstashDB.Model(&eventmodels.AssetsEventContent{}).Where(where).Pluck("SUM(amount) as total_amount", &totalTonAmount).Error
|
|
|
if err != nil {
|
|
@@ -940,10 +1005,19 @@ func (s *Synthesis) getAsset(userName string) (*entity.AssetsDetail, *code.Resul
|
|
|
return nil, common.NewResult(code.InternalError)
|
|
|
}
|
|
|
|
|
|
+ var totalPointsAmount int64
|
|
|
+ where.Currency = string(constant.PointsCurrency)
|
|
|
+ err = mdb.LogstashDB.Model(&eventmodels.AssetsEventContent{}).Where(where).Pluck("SUM(amount) as total_amount", &totalPointsAmount).Error
|
|
|
+ if err != nil {
|
|
|
+ mhayaLogger.Warnf("getAsset Pluck PointsCurrency error:%v", err)
|
|
|
+ return nil, common.NewResult(code.InternalError)
|
|
|
+ }
|
|
|
+
|
|
|
return &entity.AssetsDetail{
|
|
|
UserName: userName,
|
|
|
TonValue: cutils.QuoInt64ByRatioToFloat64(totalTonAmount, constant.MoneyRatio),
|
|
|
UsdtValue: cutils.QuoInt64ByRatioToFloat64(totalUsdtAmount, constant.MoneyRatio),
|
|
|
+ PointsValue: totalPointsAmount,
|
|
|
StatisticalDate: mhayaTime.Now().Unix(),
|
|
|
}, nil
|
|
|
}
|
|
@@ -1298,7 +1372,7 @@ func (s *Synthesis) getTaskCompletionDetail(userName string) (*entity.TaskComple
|
|
|
|
|
|
return &entity.TaskCompletionDetail{
|
|
|
UserName: userName,
|
|
|
- DicePerDay: 0, // TODO
|
|
|
+ DicePerDay: 0, // TODO 每日骰子数量
|
|
|
IsJoinTgChannel: func() bool {
|
|
|
return joinTgRecord != nil
|
|
|
}(),
|