Преглед на файлове

update 完善转盘统计

Alvin преди 8 месеца
родител
ревизия
cb1fcea6a7
променени са 2 файла, в които са добавени 120 реда и са изтрити 141 реда
  1. 15 8
      game/game_cluster/nodes/webadmin/entity/synthesis.go
  2. 105 133
      game/game_cluster/nodes/webadmin/service/synthesis.go

+ 15 - 8
game/game_cluster/nodes/webadmin/entity/synthesis.go

@@ -56,10 +56,12 @@ type UserListDetail struct {
 }
 
 type TurntableReq struct {
-	Page     int    `json:"page"`
-	Size     int    `json:"size"`
-	UserName string `json:"user_name"` // 用户名
-	OpenId   string `json:"openId"`    // 对应tgid
+	Page      int    `json:"page"`
+	Size      int    `json:"size"`
+	UserName  string `json:"user_name"`  // 用户名
+	OpenId    string `json:"openId"`     // 对应tgid
+	StartTime int64  `json:"start_time"` // 开始时间
+	EndTime   int64  `json:"end_time"`   // 结束时间
 }
 
 type TurntableResp struct {
@@ -96,10 +98,15 @@ type AssetsDetail struct {
 }
 
 type AssetsRecordReq struct {
-	Page     int    `json:"page"`
-	Size     int    `json:"size"`
-	UserName string `json:"user_name"` // 用户名
-	OpenId   string `json:"openId"`    // 对应tgid
+	Page          int    `json:"page"`
+	Size          int    `json:"size"`
+	UserName      string `json:"user_name"`      // 用户名
+	OpenId        string `json:"openId"`         // 对应tgid
+	OperationType string `json:"operation_type"` // 操作类型 增加:increase;减少:decrease
+	Currency      string `json:"currency"`       // 货币类型
+	Amount        int64  `json:"amount"`         // 变动金额
+	StartTime     int64  `json:"start_time"`     // 开始时间
+	EndTime       int64  `json:"end_time"`       // 结束时间
 }
 
 type AssetsRecordResp struct {

+ 105 - 133
game/game_cluster/nodes/webadmin/service/synthesis.go

@@ -752,119 +752,92 @@ func (s *Synthesis) RecordList(req entity.RecordListReq) (*entity.RecordListResp
 func (s *Synthesis) Turntable(req entity.TurntableReq) (*entity.TurntableResp, *code.Result) {
 	page, pageSize := checkPageParam(req.Page, req.Size)
 
-	// 构建查询条件
-	filter := bson.M{}
-	if req.UserName != "" {
-		filter["userName"] = req.UserName
-	}
-	if req.OpenId != "" {
-		filter["openId"] = req.OpenId
-	}
-
-	// 设置分页选项
-	findOptions := options.Find()
-	findOptions.SetSkip(int64((page - 1) * pageSize))
-	findOptions.SetLimit(int64(pageSize))
-	findOptions.SetSort(bson.D{{"createTime", -1}})
-
-	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
-	defer cancel()
+	var records []*eventmodels.TurntableEventContent
 
-	collection := mdb.MDB.Collection(constant.CNamePlayer)
-
-	// 查询数据
-	var results []*entity.TurntableDetail
-	cursor, err := collection.Find(ctx, filter, findOptions)
-	if err != nil {
-		mhayaLogger.Warnf("Turntable Find error:%v", err)
-		return nil, common.NewResult(code.InternalError)
+	where := &eventmodels.TurntableEventContent{
+		UserBasic: eventmodels.UserBasic{
+			UserId: req.UserName,
+			TgId:   req.OpenId,
+		},
+		EventBasic: eventmodels.EventBasic{
+			ServerId: s.nodeId,
+		},
 	}
+	db := mdb.LogstashDB.Model(&eventmodels.TurntableEventContent{}).Where(where).Order("create_at")
 
-	defer cursor.Close(ctx)
-	// 解析结果
-	for cursor.Next(ctx) {
-		var result entity.TurntableDetail
-		if err := cursor.Decode(&result); err != nil {
-			mhayaLogger.Warnf("Turntable Decode error:%v", err)
-			return nil, common.NewResult(code.InternalError)
-		}
-
-		results = append(results, &result)
+	if req.StartTime > 0 && req.EndTime > 0 && req.StartTime <= req.EndTime {
+		db = db.Where("create_at >= ? and create_at <= ?", req.StartTime, req.EndTime)
 	}
 
-	if err := cursor.Err(); err != nil {
-		mhayaLogger.Warnf("Turntable cursor error:%v", err)
+	pages := Paginate(db, page, pageSize)
+	err := db.Scopes(pages.Limit).Find(&records).Error
+	if err != nil && err != gorm.ErrRecordNotFound {
+		mhayaLogger.Warnf("Turntable Find error:%v", err)
 		return nil, common.NewResult(code.InternalError)
 	}
 
-	// TODO 转盘统计相关信息
-
-	// TODO 获取总数total
-	var count int64
+	var results []*entity.TurntableDetail
+	for _, v := range records {
+		results = append(results, &entity.TurntableDetail{
+			UserName:               v.UserName,
+			OpenId:                 v.TgId,
+			TurntableExecutionTime: v.CreateAt,
+			PrizeName:              v.PrizeName,
+			PrizeNumber:            v.PrizeNumber,
+		})
+	}
 
 	return &entity.TurntableResp{
 		Details: results,
-		Total:   count,
+		Total:   pages.Count,
 	}, nil
 }
 
 // 资产统计
 func (s *Synthesis) Assets(req entity.AssetsReq) (*entity.AssetsResp, *code.Result) {
-	page, pageSize := checkPageParam(req.Page, req.Size)
-
-	// 构建查询条件
-	filter := bson.M{}
-	if req.UserName != "" {
-		filter["userName"] = req.UserName
-	}
-	if req.OpenId != "" {
-		filter["openId"] = req.OpenId
-	}
-
-	// 设置分页选项
-	findOptions := options.Find()
-	findOptions.SetSkip(int64((page - 1) * pageSize))
-	findOptions.SetLimit(int64(pageSize))
-	findOptions.SetSort(bson.D{{"createTime", -1}})
-
-	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
-	defer cancel()
-
-	collection := mdb.MDB.Collection(constant.CNamePlayer)
-
-	// 查询数据
-	var results []*entity.AssetsDetail
-	cursor, err := collection.Find(ctx, filter, findOptions)
-	if err != nil {
-		mhayaLogger.Warnf("Assets Find error:%v", err)
-		return nil, common.NewResult(code.InternalError)
-	}
-
-	defer cursor.Close(ctx)
-	// 解析结果
-	for cursor.Next(ctx) {
-		var result entity.AssetsDetail
-		if err := cursor.Decode(&result); err != nil {
-			mhayaLogger.Warnf("Assets Decode error:%v", err)
-			return nil, common.NewResult(code.InternalError)
-		}
-
-		results = append(results, &result)
-	}
-
-	if err := cursor.Err(); err != nil {
-		mhayaLogger.Warnf("Assets cursor error:%v", err)
-		return nil, common.NewResult(code.InternalError)
+	// TODO Assets
+	// page, pageSize := checkPageParam(req.Page, req.Size)
+
+	// var records []*eventmodels.TurntableEventContent
+
+	// where := &eventmodels.TurntableEventContent{
+	// 	UserBasic: eventmodels.UserBasic{
+	// 		UserId: req.UserName,
+	// 		TgId:   req.OpenId,
+	// 	},
+	// 	EventBasic: eventmodels.EventBasic{
+	// 		ServerId: s.nodeId,
+	// 	},
+	// }
+	// db := mdb.LogstashDB.Model(&eventmodels.TurntableEventContent{}).Where(where).Order("create_at")
+
+	// pages := Paginate(db, page, pageSize)
+	// err := db.Scopes(pages.Limit).Find(&records).Error
+	// if err != nil && err != gorm.ErrRecordNotFound {
+	// 	mhayaLogger.Warnf("Turntable Find error:%v", err)
+	// 	return nil, common.NewResult(code.InternalError)
+	// }
+
+	// var results []*entity.TurntableDetail
+	// for _, v := range records {
+	// 	results = append(results, &entity.TurntableDetail{
+	// 		UserName:               v.UserName,
+	// 		OpenId:                 v.TgId,
+	// 		TurntableExecutionTime: v.CreateAt,
+	// 		PrizeName:              v.PrizeName,
+	// 		PrizeNumber:            v.PrizeNumber,
+	// 	})
+	// }
+
+	count, codeResult := NewPlayerManage().GetPlayerTotalCount()
+	if codeResult != nil {
+		mhayaLogger.Warnf("Assets GetPlayerTotalCount codeResult:%v", codeResult)
+		return nil, codeResult
 	}
 
-	// TODO Assets 统计相关信息
-
-	// TODO 获取总数total
-	var count int64
-
 	return &entity.AssetsResp{
-		Details: results,
-		Total:   count,
+		// Details: results,
+		Total: int64(count),
 	}, nil
 }
 
@@ -872,59 +845,58 @@ func (s *Synthesis) Assets(req entity.AssetsReq) (*entity.AssetsResp, *code.Resu
 func (s *Synthesis) AssetsRecord(req entity.AssetsRecordReq) (*entity.AssetsRecordResp, *code.Result) {
 	page, pageSize := checkPageParam(req.Page, req.Size)
 
-	// 构建查询条件
-	filter := bson.M{}
-	if req.UserName != "" {
-		filter["userName"] = req.UserName
-	}
-	if req.OpenId != "" {
-		filter["openId"] = req.OpenId
+	if !constant.CurrencyValid(req.Currency) {
+		mhayaLogger.Warnf("AssetsRecord unknow currency:%v", req.Currency)
+		return nil, common.NewResult(code.ParamError)
 	}
 
-	// 设置分页选项
-	findOptions := options.Find()
-	findOptions.SetSkip(int64((page - 1) * pageSize))
-	findOptions.SetLimit(int64(pageSize))
-	findOptions.SetSort(bson.D{{"createTime", -1}})
-
-	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
-	defer cancel()
+	if req.OperationType != string(constant.IncreaseOp) && req.OperationType != string(constant.DecreaseOp) {
+		mhayaLogger.Warnf("AssetsRecord unknow OperationType:%v", req.OperationType)
+		return nil, common.NewResult(code.ParamError)
+	}
 
-	collection := mdb.MDB.Collection(constant.CNamePlayer)
+	var records []*eventmodels.AssetsEventContent
 
-	// 查询数据
-	var results []*entity.AssetsRecordDetail
-	cursor, err := collection.Find(ctx, filter, findOptions)
-	if err != nil {
-		mhayaLogger.Warnf("AssetsRecord Find error:%v", err)
-		return nil, common.NewResult(code.InternalError)
+	where := &eventmodels.AssetsEventContent{
+		UserBasic: eventmodels.UserBasic{
+			UserId: req.UserName,
+			TgId:   req.OpenId,
+		},
+		EventBasic: eventmodels.EventBasic{
+			ServerId: s.nodeId,
+		},
+		OperationType: constant.OperationTypeStr(req.OperationType),
+		Currency:      constant.CurrencyTypeStr(req.Currency),
+		Amount:        req.Amount,
 	}
+	db := mdb.LogstashDB.Model(&eventmodels.AssetsEventContent{}).Where(where).Order("create_at")
 
-	defer cursor.Close(ctx)
-	// 解析结果
-	for cursor.Next(ctx) {
-		var result entity.AssetsRecordDetail
-		if err := cursor.Decode(&result); err != nil {
-			mhayaLogger.Warnf("AssetsRecord Decode error:%v", err)
-			return nil, common.NewResult(code.InternalError)
-		}
-
-		results = append(results, &result)
+	if req.StartTime > 0 && req.EndTime > 0 && req.StartTime <= req.EndTime {
+		db = db.Where("create_at >= ? and create_at <= ?", req.StartTime, req.EndTime)
 	}
 
-	if err := cursor.Err(); err != nil {
-		mhayaLogger.Warnf("AssetsRecord cursor error:%v", err)
+	pages := Paginate(db, page, pageSize)
+	err := db.Scopes(pages.Limit).Find(&records).Error
+	if err != nil && err != gorm.ErrRecordNotFound {
+		mhayaLogger.Warnf("Invite Find error:%v", err)
 		return nil, common.NewResult(code.InternalError)
 	}
 
-	// TODO 资产变动记录相关信息
-
-	// TODO 获取总数total
-	var count int64
+	var results []*entity.AssetsRecordDetail
+	for _, v := range records {
+		results = append(results, &entity.AssetsRecordDetail{
+			UserName:                 v.UserName,
+			OpenId:                   v.TgId,
+			AssetType:                string(v.Currency),
+			AssetsGrowth:             v.Amount,
+			AcquisitionTime:          v.CreateAt,
+			SourceOfAssetAcquisition: v.Reason,
+		})
+	}
 
 	return &entity.AssetsRecordResp{
 		Details: results,
-		Total:   count,
+		Total:   pages.Count,
 	}, nil
 }