Selaa lähdekoodia

上传等级接口

wangbin 2 vuotta sitten
vanhempi
commit
c5cd02bc84

+ 17 - 3
api/v1/levelMonitor/image_record.go

@@ -22,8 +22,22 @@ func (a *ImageRecordApi) CreateImageRecord(c *gin.Context) {
 		return
 	}
 	if err := imageRecordService.CreateImageRecord(record); err != nil {
-		global.GVA_LOG.Error("创建失败!" + err.Error(), zap.Error(err))
-		response.FailWithMessage("创建失败" + err.Error(), c)
+		global.GVA_LOG.Error("创建失败!"+err.Error(), zap.Error(err))
+		response.FailWithMessage("创建失败"+err.Error(), c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+}
+
+func (a *ImageRecordApi) UpLevel(c *gin.Context) {
+	var record request.CreateLevelRequest
+	_ = c.ShouldBindJSON(&record)
+	if err := utils.Verify(record, utils.ImageRecordVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := imageRecordService.CreateLevel(record); err != nil {
+		response.FailWithMessage("创建失败"+err.Error(), c)
 	} else {
 		response.OkWithMessage("创建成功", c)
 	}
@@ -87,4 +101,4 @@ func (a *ImageRecordApi) GetImageRecordStatisticsList(c *gin.Context) {
 			PageSize: paramsInfo.PageSize,
 		}, "获取成功", c)
 	}
-}
+}

+ 19 - 2
initialize/timer.go

@@ -227,8 +227,25 @@ func Timer() {
 	//}
 	//
 	////每天凌晨3点删除一次过期图片信息
-	//_, err = global.GVA_Timer.AddTaskByFunc("DeleteExpireImageRecord", "0 0 3 * * ? ", imageRecordService.DeleteExpireImageRecord)
+	////_, err = global.GVA_Timer.AddTaskByFunc("DeleteExpireImageRecord", "0 58 3 * * ? ", imageRecordService.DeleteExpireImageRecord)
+	////if err != nil {
+	////	fmt.Println("add DeleteExpireImageRecord timer error:", err)
+	////}
+	//
+	//_, err = global.GVA_Timer.AddTaskByFunc("YesterdayStatistics", "10 51 2 * * ? ", imageRecordService.YesterdayStatistics)
+	//if err != nil {
+	//	fmt.Println("add YesterdayStatistics timer error:", err)
+	//}
+	//
+	//_, err = global.GVA_Timer.AddTaskByFunc("TodayStatistics", "50 30 9-23 * * ? ", imageRecordService.TodayStatistics)
 	//if err != nil {
-	//	fmt.Println("add DeleteExpireImageRecord timer error:", err)
+	//	fmt.Println("add TodayStatistics timer error:", err)
 	//}
+
+	//// 电脑效率检测
+	//_, err := global.GVA_Timer.AddTaskByFunc("OnlineComputerEfficiencyStatistics", "20 47 8-23 * * *", serviceStatisticsLog.OnlineComputerEfficiencyStatistics)
+	//if err != nil {
+	//	fmt.Println("add OnlineComputerEfficiencyStatistics timer error:", err)
+	//}
+
 }

+ 6 - 0
model/levelMonitor/request/search_image_record_params.go

@@ -34,6 +34,12 @@ type ImageRecordRequest struct {
 	UpdateTime  typeManage.LocalTime `json:"update_time"`
 }
 
+type CreateLevelRequest struct {
+	TaskId  int    `json:"task_id"` //任务id
+	Account string `json:"account"` //账号
+	Level   int    `json:"level"`
+}
+
 //统计数据请求
 type ImageRecordStatisticsRequest struct {
 	Id     int      `json:"id"`

+ 4 - 3
router/levelMonitor/image_record.go

@@ -12,10 +12,11 @@ func (r *ImageRecordRouter) InitImageRecordRouter(Router *gin.RouterGroup) {
 	imageRecordRouter := Router.Group("levelMonitor")
 	imageRecordApi := v1.ApiGroupApp.LevelMonitorGroup.ImageRecordApi
 	{
-		imageRecordRouter.POST("getImageRecordList", imageRecordApi.GetImageRecordList) //获取图片记录列表
+		imageRecordRouter.POST("getImageRecordList", imageRecordApi.GetImageRecordList)                     //获取图片记录列表
 		imageRecordRouter.POST("getImageRecordStatisticsList", imageRecordApi.GetImageRecordStatisticsList) //获取图片记录列表
-		imageRecordRouter.POST("createImageRecord", imageRecordApi.CreateImageRecord)   //创建图片记录
-		imageRecordRouter.POST("uploadOrNot", imageRecordApi.UploadOrNot)               //询问是否上传图片
+		imageRecordRouter.POST("createImageRecord", imageRecordApi.CreateImageRecord)                       //创建图片记录
+		imageRecordRouter.POST("uploadOrNot", imageRecordApi.UploadOrNot)                                   //询问是否上传图片
+		imageRecordRouter.POST("upLevel", imageRecordApi.UpLevel)                                           //上传等级
 	}
 	//imageRecordRouter1 := Router.Group("levelMonitor").Use(middleware.OperationRecord())
 	//{

+ 1 - 0
service/cache/cache.go

@@ -10,6 +10,7 @@ import (
 const (
 	TemporaryTaskPcCode = "%s:temporaryTaskPcCode:%s"
 	UploadImageNum      = "%s:UploadImageNum:%d"
+	ComputerEfficiency  = "%s:ComputerEfficiency:%s"
 )
 
 type Cache struct {

+ 39 - 4
service/levelMonitor/image_record.go

@@ -53,6 +53,41 @@ func (s *ImageRecordService) CreateImageRecord(record levelMonitor.ImageRecord)
 	return
 }
 
+func (s *ImageRecordService) CreateLevel(request levelRequest.CreateLevelRequest) (err error) {
+	//获取今日日期
+	date := time.Now().Format("2006-01-02")
+	key := fmt.Sprintf(cache.UploadImageNum, date, request.TaskId)
+	ctx := context.Background()
+	num, _ := s.cache.GetCacheNum(ctx, key)
+	if num > 100 {
+		return errors.New("数据上传已到上限")
+	}
+	var entity levelMonitor.ImageRecord
+
+	//查找数据库是否存在此账号此游戏今日记录
+	err = global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Where("task_id = ? and account = ? and create_date = ?", request.TaskId, request.Account, date).First(&entity).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("此记录已存在,请勿重复添加")
+	}
+	var gameAccount log.GameAccount
+	global.GVA_DB.Where("game_id", request.TaskId).Where("account", request.Account).First(&gameAccount)
+	//创建日期赋值
+	entity.CreateDate = date
+	entity.Status = 1
+	entity.TaskId = request.TaskId
+	entity.Account = request.Account
+	entity.Identify = float64(request.Level)
+	entity.UseNum = gameAccount.UseNum
+	err = global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Omit("create_time", "update_time").Create(&entity).Error
+	if err != nil {
+		global.GVA_LOG.Error("添加ImageRecord fail", zap.Error(err))
+		return err
+	}
+	UpdateGameAccountIdentify(entity.Account, entity.TaskId, entity.Identify)
+	s.cache.SetCacheNum(ctx, key)
+	return
+}
+
 func (s *ImageRecordService) UploadOrNot(record levelMonitor.ImageRecord) (err error) {
 	date := time.Now().Format("2006-01-02")
 	key := fmt.Sprintf(cache.UploadImageNum, date, record.TaskId)
@@ -303,9 +338,9 @@ func (s *ImageRecordService) ImageRecordStatistics(date string) {
 		return
 	}
 	type StatisticsData struct {
-		UseNum     int `json:"use_num"`
-		AccountNum int `json:"account_num"`
-		LevelNum   int `json:"level_num"`
+		UseNum     int     `json:"use_num"`
+		AccountNum int     `json:"account_num"`
+		LevelNum   float64 `json:"level_num"`
 	}
 	for _, taskId := range taskIds {
 		var statisticsData []StatisticsData
@@ -324,7 +359,7 @@ func (s *ImageRecordService) ImageRecordStatistics(date string) {
 		b := false
 		for _, data := range statisticsData {
 			if _, ok := levelMonitor.R[data.UseNum]; ok {
-				imageRecordStatistics[levelMonitor.R[data.UseNum]] = float64(data.LevelNum) / float64(data.AccountNum)
+				imageRecordStatistics[levelMonitor.R[data.UseNum]] = data.LevelNum / float64(data.AccountNum)
 				b = true
 			}
 		}

+ 108 - 0
service/log/log_statistics.go

@@ -15,6 +15,7 @@ import (
 	"log-server/model/log/response"
 	"log-server/model/task"
 	"log-server/model/typeManage"
+	"log-server/service/cache"
 	loging2 "log-server/service/log/loging"
 	"log-server/utils"
 	"strconv"
@@ -838,6 +839,113 @@ func (s *ServiceStatisticsLog) OnlineComputerStatistics(ctx context.Context, api
 	return statisticsLogs, total, err
 }
 
+// OnlineComputerStatistics 在线电脑
+func (s *ServiceStatisticsLog) OnlineComputerEfficiencyStatistics() {
+	date := s.CurrentDate()
+	db := global.GVA_DB.Model(&log.LogComputer{})
+	db = db.Select("SUM(pull_account_num) pull_account_total,SUM(enter_main) enter_main_total,operator,pc_code,status,create_date,remarks")
+	db = db.Where("create_date = ?", date)
+	db = db.Group("pc_code")
+	var statisticsLogs []*response.ComputerUseLogReply
+	err := db.Find(&statisticsLogs).Error
+	if err != nil {
+		return
+	}
+	// 查询两小时内上报的数据
+	var computersF = map[string]string{}
+	var noReportingPc []string
+	ctx := context.Background()
+	for _, computer := range statisticsLogs {
+		computersF[computer.PcCode] = computer.Operator
+		if strings.Contains(computer.Operator, "备用") {
+			continue
+		}
+		if computer.Operator == "" {
+			continue
+		}
+		key := fmt.Sprintf(cache.ComputerEfficiency, date, computer.PcCode)
+
+		if computer.EnterMainTotal == 0 && computer.PullAccountTotal == 0 {
+			continue
+		}
+
+		if computer.EnterMainTotal == 0 {
+			continue
+		}
+
+		num := float64(computer.EnterMainTotal) / float64(computer.PullAccountTotal) * 100
+		formattedNumber := fmt.Sprintf("%.2f", num)
+		if num < 41 {
+			getNum, _ := global.GVA_REDIS.Get(ctx, key).Result()
+			if getNum != "" {
+				fmt.Println(computer.PcCode)
+				global.GVA_LOG.Info("===" + getNum + "===")
+				global.GVA_LOG.Info("===" + formattedNumber + "===")
+				getCacheNumFormat, _ := strconv.ParseFloat(getNum, 64)
+				formatNum, _ := strconv.ParseFloat(formattedNumber, 64)
+
+				fmt.Println(getCacheNumFormat)
+				fmt.Println(formatNum)
+				if getCacheNumFormat > formatNum {
+					noReportingPc = append(noReportingPc, computer.PcCode)
+					global.GVA_REDIS.Set(ctx, key, formattedNumber, time.Hour*10)
+				}
+			} else {
+				global.GVA_REDIS.Set(ctx, key, formattedNumber, time.Hour*10)
+				noReportingPc = append(noReportingPc, computer.PcCode)
+			}
+		} else {
+			global.GVA_REDIS.Del(ctx, key)
+		}
+	}
+	mpsPerson, _ := s.Person.GetUserInfoData()
+	var mobile []string
+	var content string
+	nameMps := map[string]string{}
+	if len(noReportingPc) != 0 {
+		content += fmt.Sprintf("检测电脑效率异常<font color=\"warning\">%d台</font>:", len(noReportingPc))
+		for _, pc := range noReportingPc {
+			content += "\n"
+			name := computersF[pc]
+			content += name + " : " + pc
+			if nameMps[name] == "" {
+				nameMps[name] = pc
+			} else {
+				nameMps[name] += ","
+				nameMps[name] += pc
+			}
+		}
+	}
+
+	c := "# 检测电脑效率异常"
+	c += "\n"
+	if len(nameMps) != 0 {
+		for name, ct := range nameMps {
+			if _, ok := mpsPerson[name]; ok {
+				mobile = append(mobile, mpsPerson[name].MobilePhoneNumber)
+			}
+			ct = fmt.Sprintf("<font color=\"warning\">%s</font>", ct)
+			ct = c + ct
+			global.GVA_LOG.Info(ct)
+			go s.SendContent(ct, mpsPerson[name].Url)
+		}
+	}
+	if content != "" {
+		var sendMsg SendMsg
+		sendMsg.MsgType = "markdown"
+		sendMsg.Markdown.Content = content
+		url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
+		_, err = s.SendMsgData(url, sendMsg)
+		if len(mobile) != 0 {
+			var sendTextData SendTextMsg
+			sendTextData.MsgType = "text"
+			sendTextData.Text.MentionedMobileList = mobile
+			_, _ = s.SendMsgData(url, sendTextData)
+		}
+	}
+	return
+}
+
 // GameStatistics 根据游戏id查询数据
 func (s *ServiceStatisticsLog) GameStatistics(ctx context.Context, api log.LogComputer, info request.PageInfo) (interface{}, int64, error) {
 	date := api.CreateDate