Ver código fonte

update 完善后台操作记录接口

Alvin 8 meses atrás
pai
commit
c5375fce0b

+ 5 - 3
game/game_cluster/nodes/webadmin/controller/synthesis.go

@@ -9,12 +9,14 @@ import (
 )
 
 type Synthesis struct {
-	sev *service.Synthesis
+	nodeId string
+	sev    *service.Synthesis
 }
 
-func NewSynthesis() *Synthesis {
+func NewSynthesis(nodeId string) *Synthesis {
 	return &Synthesis{
-		sev: service.NewSynthesis(),
+		nodeId: nodeId,
+		sev:    service.NewSynthesis(nodeId),
 	}
 }
 

+ 12 - 7
game/game_cluster/nodes/webadmin/entity/userLog.go

@@ -1,13 +1,18 @@
 package entity
 
 type RecordListReq struct {
-	ID        string `json:"id" bson:"_id"`              // ID
-	UserName  string `json:"user_name" bson:"user_name"` // 用户名
-	RoleId    string `json:"role_id" bson:"role_id"`     // 角色ID
-	StartTime int64  `json:"start_time"`                 // 开始时间
-	EndTime   int64  `json:"end_time"`                   // 结束时间
-	Page      int    `json:"page"`                       // 页码
-	Size      int    `json:"size"`                       // 每页数量
+	ID         string `json:"id" bson:"_id"`                  // ID
+	UserName   string `json:"user_name" bson:"user_name"`     // 用户名
+	RoleId     string `json:"role_id" bson:"role_id"`         // 角色ID
+	Path       string `json:"path" bson:"url"`                // 请求路径
+	StatusCode int    `json:"status_code" bson:"status_code"` // HTTP状态码
+	ClientIP   string `json:"client_ip"`                      // 客户端IP
+	StartTime  int64  `json:"start_time"`                     // 开始时间
+	EndTime    int64  `json:"end_time"`                       // 结束时间
+	DurMin     int64  `json:"dur_min"`                        // 请求耗时(毫秒)最小值
+	DurMax     int64  `json:"dur_max"`                        // 请求耗时(毫秒)最大值
+	Page       int    `json:"page"`                           // 页码
+	Size       int    `json:"size"`                           // 每页数量
 }
 
 type RecordListResp struct {

+ 21 - 19
game/game_cluster/nodes/webadmin/router/router.go

@@ -41,46 +41,48 @@ func (c *Controller) SetRouter() {
 func (c *Controller) InitApiRouter(u *gin.RouterGroup) {
 	u.Use(Auth(c.App))
 
+	nodeId := c.App.NodeId()
+
 	// 综合统计
-	u.POST("/statistics/overview", controller.NewSynthesis().Overview)
+	u.POST("/statistics/overview", controller.NewSynthesis(nodeId).Overview)
 
 	// 活动统计 目前没有活动模块
-	u.POST("/statistics/activity", controller.NewSynthesis().Activity)
+	u.POST("/statistics/activity", controller.NewSynthesis(nodeId).Activity)
 
 	// 用户统计
-	u.POST("/statistics/user/list", controller.NewSynthesis().UserList)
-	u.POST("/user/log/daily", controller.NewSynthesis().FindUserLogDaily)
+	u.POST("/statistics/user/list", controller.NewSynthesis(nodeId).UserList)
+	u.POST("/user/log/daily", controller.NewSynthesis(nodeId).FindUserLogDaily)
 
 	// 转盘统计
-	u.POST("/statistics/turntable", controller.NewSynthesis().Turntable)
+	u.POST("/statistics/turntable", controller.NewSynthesis(nodeId).Turntable)
 
 	// 资产统计
-	u.POST("/statistics/assets", controller.NewSynthesis().Assets)
-	u.POST("/statistics/assetsRecord", controller.NewSynthesis().AssetsRecord)
+	u.POST("/statistics/assets", controller.NewSynthesis(nodeId).Assets)
+	u.POST("/statistics/assetsRecord", controller.NewSynthesis(nodeId).AssetsRecord)
 
 	// 邀请统计
-	u.POST("/statistics/invite", controller.NewSynthesis().Invite)
+	u.POST("/statistics/invite", controller.NewSynthesis(nodeId).Invite)
 
 	// 任务完成度统计
-	u.POST("/statistics/taskCompletion", controller.NewSynthesis().TaskCompletion)
+	u.POST("/statistics/taskCompletion", controller.NewSynthesis(nodeId).TaskCompletion)
 
 	// 用户行为检测
-	u.POST("/user/behaviorMonitoring", controller.NewSynthesis().BehaviorMonitoring)
+	u.POST("/user/behaviorMonitoring", controller.NewSynthesis(nodeId).BehaviorMonitoring)
 
 	// 后台操作记录
-	u.POST("/user/log", controller.NewSynthesis().Records)
+	u.POST("/user/log", controller.NewSynthesis(nodeId).Records)
 
 	// 活跃统计
-	u.POST("/statistics/active", controller.NewSynthesis().Active)
-	u.POST("/user/retention", controller.NewSynthesis().FindUserRetention)
-	u.POST("/user/country", controller.NewSynthesis().FindUserCountryCount)
-	u.POST("/user/level", controller.NewSynthesis().FindUserLevel)
+	u.POST("/statistics/active", controller.NewSynthesis(nodeId).Active)
+	u.POST("/user/retention", controller.NewSynthesis(nodeId).FindUserRetention)
+	u.POST("/user/country", controller.NewSynthesis(nodeId).FindUserCountryCount)
+	u.POST("/user/level", controller.NewSynthesis(nodeId).FindUserLevel)
 
 	// 提现统计
-	u.POST("/user/withdrawal", controller.NewSynthesis().FindWithdrawal)
-	u.POST("/user/withdrawal/export", controller.NewSynthesis().WithdrawalExport)
-	u.POST("/user/withdrawal/status", controller.NewSynthesis().WithdrawalStatus)
-	u.POST("/user/withdrawal/status_batch", controller.NewSynthesis().WithdrawalStatusBatch)
+	u.POST("/user/withdrawal", controller.NewSynthesis(nodeId).FindWithdrawal)
+	u.POST("/user/withdrawal/export", controller.NewSynthesis(nodeId).WithdrawalExport)
+	u.POST("/user/withdrawal/status", controller.NewSynthesis(nodeId).WithdrawalStatus)
+	u.POST("/user/withdrawal/status_batch", controller.NewSynthesis(nodeId).WithdrawalStatusBatch)
 
 	// 账号管理
 	u.POST("/user/changePassword", controller.NewAdmin().ChangePassword)

+ 18 - 13
game/game_cluster/nodes/webadmin/service/synthesis.go

@@ -24,12 +24,14 @@ import (
 )
 
 type Synthesis struct {
-	db *mongo.Database
+	nodeId string
+	db     *mongo.Database
 }
 
-func NewSynthesis() *Synthesis {
+func NewSynthesis(nodeId string) *Synthesis {
 	return &Synthesis{
-		db: mdb.MDB,
+		nodeId: nodeId,
+		db:     mdb.MDB,
 	}
 }
 
@@ -716,28 +718,32 @@ func (s *Synthesis) InsertRecord(param model.UserOperationLog) {
 func (s *Synthesis) RecordList(req entity.RecordListReq) (*entity.RecordListResp, *code.Result) {
 	page, pageSize := checkPageParam(req.Page, req.Size)
 
-	var records *[]eventmodels.BackendOperationEventContent
+	var records []*eventmodels.BackendOperationEventContent
 
-	// TODO 筛选条件
 	where := &eventmodels.BackendOperationEventContent{
 		UserBasic: eventmodels.UserBasic{
 			UserName: req.UserName,
 		},
 		EventBasic: eventmodels.EventBasic{
-			ServerId:  "",
-			IsSuccess: false,
-			CreateAt:  0,
+			ServerId: s.nodeId,
 		},
 		RoleId:       req.RoleId,
-		Path:         "/v1/admin/user/log",
+		Path:         req.Path,
 		Method:       "",
-		StatusCode:   0,
+		StatusCode:   req.StatusCode,
 		Dur:          0,
-		ClientIP:     "",
+		ClientIP:     req.ClientIP,
 		ErrorMessage: "",
 	}
 	db := mdb.LogstashDB.Model(&eventmodels.BackendOperationEventContent{}).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)
+	}
+	if req.DurMin > 0 && req.DurMax > 0 && req.DurMin <= req.DurMax {
+		db = db.Where("dur >= ? and dur <= ?", req.DurMin, req.DurMax)
+	}
+
 	pages := Paginate(db, page, pageSize)
 	err := db.Scopes(pages.Limit).Find(&records).Error
 	if err != nil && err != gorm.ErrRecordNotFound {
@@ -746,8 +752,7 @@ func (s *Synthesis) RecordList(req entity.RecordListReq) (*entity.RecordListResp
 	}
 
 	var results []*entity.RecordListDetail
-
-	for _, v := range *records {
+	for _, v := range records {
 		results = append(results, &entity.RecordListDetail{
 			Username:     v.UserName,
 			RoleId:       v.RoleId,