wangbin 2 роки тому
батько
коміт
4c04160f1a

+ 2 - 2
api/v1/log/loging.go

@@ -565,7 +565,7 @@ func (e *ApiLoging) ComputerSevenRate(c *gin.Context) {
 func (e *ApiLoging) GetDeviceStatistics(c *gin.Context) {
 	var paramsInfo request.GetDeviceStatisticsRequest
 	_ = c.ShouldBindJSON(&paramsInfo)
-	list, total, err := ServiceStatisticsLog.GetDeviceStatistics(c, paramsInfo.DeviceStatistics, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	list, total, err := ServiceStatisticsLog.GetDeviceStatistics(c, paramsInfo.DeviceStatisticsReply, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
 	if err != nil {
 		global.GVA_LOG.Error("获取失败!", zap.Error(err))
 		response.FailWithMessage("获取失败", c)
@@ -643,7 +643,7 @@ func (e *ApiLoging) DeviceErrRateExcel(c *gin.Context) {
 	paramsInfo := excelInfo.InfoList
 	paramsInfo.PageSize = 1000
 	paramsInfo.Page = 1
-	list, _, err := ServiceStatisticsLog.GetDeviceStatistics(c, paramsInfo.DeviceStatistics, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	list, _, err := ServiceStatisticsLog.GetDeviceStatistics(c, paramsInfo.DeviceStatisticsReply, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
 	if err != nil {
 		global.GVA_LOG.Error("获取电脑数据失败!", zap.Error(err))
 		response.FailWithMessage("获取电脑数据失败", c)

+ 15 - 1
api/v1/task/game_task.go

@@ -89,7 +89,7 @@ func (s *GameTaskApi) GetXmyTaskList(c *gin.Context) {
 		global.GVA_LOG.Error("获取失败!", zap.Error(err))
 		response.FailWithMessage("获取失败"+err.Error(), c)
 	} else {
-		response.OkWithDetailed(list,"获取成功", c)
+		response.OkWithDetailed(list, "获取成功", c)
 	}
 }
 
@@ -532,3 +532,17 @@ func (e *GameTaskApi) TaskTargetExport(c *gin.Context) {
 	c.Writer.Header().Add("success", "true")
 	c.File(filePath)
 }
+
+func (e *GameTaskApi) TemporaryTask(c *gin.Context) {
+	var params request.GetTemporaryTaskRequest
+	_ = c.ShouldBindJSON(&params)
+	if params.PcCode == "" {
+		response.FailWithMessage("参数错误", c)
+		return
+	}
+	if data, err := taskService.TemporaryTask(c, params.PcCode); err != nil {
+		response.FailWithMessage("获取失败 "+err.Error(), c)
+	} else {
+		response.OkWithDetailed(data, "获取成功", c)
+	}
+}

+ 2 - 2
model/log/request/log_statistics.go

@@ -73,7 +73,7 @@ type ExcelInfo struct {
 type ExcelDeviceErrRate struct {
 	FileName string `json:"fileName"` // 文件名
 	InfoList struct {
-		log.DeviceStatistics
+		log.DeviceStatisticsReply
 		PageInfo
 		OrderKey string `json:"orderKey"` // 排序
 		Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
@@ -111,7 +111,7 @@ type LogScanningRequest struct {
 }
 
 type GetDeviceStatisticsRequest struct {
-	log.DeviceStatistics
+	log.DeviceStatisticsReply
 	PageInfo
 	OrderKey string `json:"orderKey"` // 排序
 	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true

+ 7 - 3
model/task/request/game_task.go

@@ -38,7 +38,7 @@ type GetGameTaskListRequest struct {
 
 //获取小绵羊游戏数据列表
 type GetXmyGameListRequest struct {
-	Date       []string `json:"date"`
+	Date []string `json:"date"`
 }
 
 type UpdateGameTaskStatusRequest struct {
@@ -83,7 +83,7 @@ type GameTargetCompleteRequest struct {
 	Date             []string `json:"date"`
 	GamePortId       int      `json:"game_port_id"`
 	Aupr             int      `json:"aupr"`
-	TotalAmount      float64      `json:"total_amount"`
+	TotalAmount      float64  `json:"total_amount"`
 }
 
 type GetGameTaskTargetByIdRequest struct {
@@ -108,7 +108,7 @@ type UpdateGameTaskTargetRequest struct {
 	IsUploadXjf          int        `json:"is_upload_xjf"`
 
 	//添加字段
-	Aupr        int `json:"aupr"`
+	Aupr        int     `json:"aupr"`
 	TotalAmount float64 `json:"total_amount"`
 }
 
@@ -127,3 +127,7 @@ type GameListRequest struct {
 	Date       string `json:"date"`
 	GamePortId int    `json:"game_port_id"`
 }
+
+type GetTemporaryTaskRequest struct {
+	PcCode string `json:"pc_code"`
+}

+ 3 - 2
router/task/game_task.go

@@ -14,7 +14,7 @@ func (e *GameTaskRouter) InitGameTaskRouter(Router *gin.RouterGroup) {
 	GameTaskApi := v1.ApiGroupApp.GroupTask.GameTaskApi
 	{
 		GameTaskRouter.POST("getGameTaskList", GameTaskApi.GetGameTaskList)
-		GameTaskRouter.POST("getUsedGameTaskList", GameTaskApi.GetUsedGameTaskList)		//获取启用状态的任务
+		GameTaskRouter.POST("getUsedGameTaskList", GameTaskApi.GetUsedGameTaskList) //获取启用状态的任务
 		GameTaskRouter.POST("getGameTaskById", GameTaskApi.GetGameTaskById)
 		GameTaskRouter.POST("getGameTaskTargetList", GameTaskApi.GetGameTaskTargetList)
 		GameTaskRouter.POST("getGameTaskTargetById", GameTaskApi.GetGameTaskTargetById)
@@ -26,7 +26,8 @@ func (e *GameTaskRouter) InitGameTaskRouter(Router *gin.RouterGroup) {
 		GameTaskRouter.POST("getGameTxTaskList", GameTaskApi.GetGameTxTaskList)
 		GameTaskRouter.POST("getFeeAccountList", GameTaskApi.GetFeeAccountList)
 		GameTaskRouter.POST("taskTargetExport", GameTaskApi.TaskTargetExport)
-		GameTaskRouter.POST("getXmyTaskList", GameTaskApi.GetXmyTaskList)				//获取小绵羊任务列表
+		GameTaskRouter.POST("getXmyTaskList", GameTaskApi.GetXmyTaskList) //获取小绵羊任务列表
+		GameTaskRouter.POST("temporaryTask", GameTaskApi.TemporaryTask)
 	}
 	GameTaskRouter1 := Router.Group("gameTask").Use(middleware.OperationRecord())
 	{

+ 4 - 0
service/cache/cache.go

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

+ 13 - 3
service/log/log_statistics.go

@@ -1498,7 +1498,7 @@ func (exa *ServiceStatisticsLog) DeviceErrRateExcel(statistics []*log.DeviceStat
 	return err
 }
 
-func (s *ServiceStatisticsLog) GetDeviceStatistics(ctx context.Context, api log.DeviceStatistics, info request.PageInfo, order string, desc bool) (statistics []*log.DeviceStatisticsReply, total int64, err error) {
+func (s *ServiceStatisticsLog) GetDeviceStatistics(ctx context.Context, api log.DeviceStatisticsReply, info request.PageInfo, order string, desc bool) (statistics []*log.DeviceStatisticsReply, total int64, err error) {
 	if api.CreateDate == "" {
 		api.CreateDate = time.Now().Format("2006-01-02")
 	}
@@ -1509,6 +1509,9 @@ func (s *ServiceStatisticsLog) GetDeviceStatistics(ctx context.Context, api log.
 	if api.GameId != 0 {
 		db = db.Where("ds.game_id = ?", api.GameId)
 	}
+	if api.User != "" {
+		db = db.Where("gt.user = ?", api.User)
+	}
 	err = db.Count(&total).Error
 	if err != nil {
 		return nil, 0, err
@@ -1561,6 +1564,13 @@ func (s *ServiceStatisticsLog) GetDeviceInfo(ctx context.Context, api log.Device
 	if api.IsErr != 0 {
 		db = db.Where("is_err = ?", api.IsErr)
 	}
+	if api.PcCode != "" {
+		db = db.Where("pc_code = ?", api.PcCode)
+	}
+
+	if api.SimulatorCode != "" {
+		db = db.Where("simulator_code = ?", api.SimulatorCode)
+	}
 	err = db.Count(&total).Error
 	if err != nil {
 		return nil, 0, err
@@ -1688,14 +1698,14 @@ func (s *ServiceStatisticsLog) ComputerUpdateStatus() {
 				computerStatus.Status = status
 				computerStatus.CreateDate = time.Now()
 				computerStatus.PcCode = pcCode
-				result = global.GVA_DB.Create(&computerStatus)
+				result = global.GVA_DB.Omit("update_time").Create(&computerStatus)
 			} else {
 				// 其他错误
 				global.GVA_LOG.Error("ComputerUpdateStatus computerStatus 获取失败!", zap.Error(err))
 				return
 			}
 		} else {
-			global.GVA_DB.Model(&log.ComputerStatus{}).Where("create_date = ?", date).Where("pc_code = ?", pcCode).Update("status", status)
+			global.GVA_DB.Model(&log.ComputerStatus{}).Where("create_date = ?", date).Where("pc_code = ?", pcCode).Omit("update_time").Update("status", status)
 		}
 	}
 }

+ 29 - 16
service/task/game_task.go

@@ -887,6 +887,9 @@ func (s *GameTask) UpdateGameTaskTarget(requestData request.UpdateGameTaskTarget
 	})
 	if gameTask.CreateDate.Format("2006-01-02") == date {
 		if gameTask.PayTarget < requestData.PayTarget {
+			if taskData.GamePortId != 1 {
+				return errors.New("不是腾讯任务,不能更付费")
+			}
 			global.GVA_LOG.Warn("进入修改add update")
 			lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, gameTask.TaskId)
 			_ = s.cache.SetCacheStr(context.Background(), lastPayAddUpdateTimeKey, time.Now().Unix())
@@ -905,17 +908,17 @@ func (s *GameTask) UpdateGameTaskTarget(requestData request.UpdateGameTaskTarget
 				_ = s.cache.SetCacheStr(context.Background(), payErrAddNumKey, requestData.PayTarget-gameTask.PayTarget+n)
 			}
 			go s.common.FreeSendMsg(requestData.PayTarget-gameTask.PayTarget, requestData.PayTarget, taskData.TaskId, taskData.TaskName, taskData.User)
-			msg := "# 监控报警 " + time.Now().Format("2006-01-02 15:04:05")
-			msg += "\n"
-			msg += "**" + taskData.User + "**"
-			msg += "\n"
-			msg += taskData.TaskName + ", 付费目标改为" + strconv.Itoa(requestData.PayTarget)
-			//url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5ccfb180-c062-48b5-ae18-0c96f7c19f0b"
-			url := global.GVA_CONFIG.SendUrl.SendUrlOne
-			var sendData SendMsg
-			sendData.MsgType = "markdown"
-			sendData.Markdown.Content = msg
-			s.common.SendMsgData(url, sendData)
+			//msg := "# 监控报警 " + time.Now().Format("2006-01-02 15:04:05")
+			//msg += "\n"
+			//msg += "**" + taskData.User + "**"
+			//msg += "\n"
+			//msg += taskData.TaskName + ", 付费目标改为" + strconv.Itoa(requestData.PayTarget)
+			////url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5ccfb180-c062-48b5-ae18-0c96f7c19f0b"
+			//url := global.GVA_CONFIG.SendUrl.SendUrlOne
+			//var sendData SendMsg
+			//sendData.MsgType = "markdown"
+			//sendData.Markdown.Content = msg
+			//s.common.SendMsgData(url, sendData)
 		}
 	}
 	return
@@ -1160,15 +1163,15 @@ func (s *GameTask) GetFeeAccountList(taskId int) (fa []FeeAccount, err error) {
 }
 
 //从小绵羊后台获取数据并返回
-func (apiService *GameTask) GetXmyTaskList(startDay  string, endDay string) (list interface{}, err error) {
+func (apiService *GameTask) GetXmyTaskList(startDay string, endDay string) (list interface{}, err error) {
 	var apisReply *response.XmyGameDataReply
 	client := &http.Client{}
 	url := "http://api.sheepsdk.17xmy.com/foreign/api/get_youhua_data.php?start_day=" + startDay + "&end_day=" + endDay
-	req, err := http.NewRequest("GET", url, nil)//GET大写
+	req, err := http.NewRequest("GET", url, nil) //GET大写
 	if err != nil {
 		return
 	}
-	rep, err := client.Do(req)//发起请求
+	rep, err := client.Do(req) //发起请求
 	if err != nil {
 		return
 	}
@@ -1179,10 +1182,9 @@ func (apiService *GameTask) GetXmyTaskList(startDay  string, endDay string) (lis
 		return
 	}
 	//fmt.Printf("%s", apisReply)
-	return apisReply.Data , err
+	return apisReply.Data, err
 }
 
-
 func (exa *GameTask) TaskStatisticsList2Excel(infoList []response.GetGameTargetComplete, filePath string) error {
 	excel := excelize.NewFile()
 	excel.SetSheetRow("Sheet1", "A1", &[]string{
@@ -1246,3 +1248,14 @@ func (exa *GameTask) TaskStatisticsList2Excel(infoList []response.GetGameTargetC
 	err := excel.SaveAs(filePath)
 	return err
 }
+
+func (apiService *GameTask) TemporaryTask(ctx context.Context, pcCode string) (temporaryConf task.CentralControlConf, err error) {
+	date := time.Now().Format("2006-01-02")
+	key := fmt.Sprintf(cache.TemporaryTaskPcCode, date, pcCode)
+	taskId, _ := apiService.cache.GetCacheStr(ctx, key)
+	if taskId == "" {
+		return temporaryConf, errors.New("没有任务数据")
+	}
+	err = global.GVA_DB.Model(&task.CentralControlConf{}).Where("task_id", taskId).First(&temporaryConf).Error
+	return temporaryConf, err
+}

+ 71 - 10
service/task/urgent_task_conf.go

@@ -1,19 +1,23 @@
 package task
 
 import (
+	"context"
 	"errors"
+	"fmt"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
 	"log-server/global"
 	"log-server/model/common/request"
 	"log-server/model/task"
+	"log-server/service/cache"
+	"strings"
 	"time"
 )
 
 type UrgentTaskService struct {
 }
 
-func (s *UrgentTaskService) CreateUrgentTask(task1 task.UrgentTaskConf) (err error)  {
+func (s *UrgentTaskService) CreateUrgentTask(task1 task.UrgentTaskConf) (err error) {
 	//根据平均期望,将故障较大的放前面可以减少查询次数。那么需要先查是否有task_id以及create_date相等的
 	var urgentEntity task.UrgentTaskConf
 	var centralEntity task.CentralControlConf
@@ -30,7 +34,17 @@ func (s *UrgentTaskService) CreateUrgentTask(task1 task.UrgentTaskConf) (err err
 		return errors.New("请先添加此任务中控配置")
 	}
 	//创建紧急任务
-	return global.GVA_DB.Model(&task.UrgentTaskConf{}).Omit("create_time", "update_time").Create(&task1).Error
+	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Omit("create_time", "update_time").Create(&task1).Error
+	if err != nil {
+		return err
+	}
+	codeSplit := strings.Split(task1.PcCode, ",")
+	ctx := context.Background()
+	for _, code := range codeSplit {
+		key := fmt.Sprintf(cache.TemporaryTaskPcCode, date, code)
+		global.GVA_REDIS.Set(ctx, key, task1.TaskId, time.Hour*6)
+	}
+	return
 }
 
 func (s *UrgentTaskService) DeleteUrgentTask(task1 task.UrgentTaskConf) (err error) {
@@ -40,11 +54,22 @@ func (s *UrgentTaskService) DeleteUrgentTask(task1 task.UrgentTaskConf) (err err
 	if errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("此任务不存在")
 	}
-	return global.GVA_DB.Model(&task.UrgentTaskConf{}).Delete(&entity).Error
+	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Delete(&entity).Error
+	if err != nil {
+		return err
+	}
+	codeSplit := strings.Split(entity.PcCode, ",")
+	date := entity.CreateDate[:10]
+	ctx := context.Background()
+	for _, code := range codeSplit {
+		key := fmt.Sprintf(cache.TemporaryTaskPcCode, date, code)
+		global.GVA_REDIS.Del(ctx, key)
+	}
+	return
 }
 
 //批量删除
-func (s *UrgentTaskService) DeleteUrgentTaskByIds(ids []int) (err error){
+func (s *UrgentTaskService) DeleteUrgentTaskByIds(ids []int) (err error) {
 	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Delete("id in ?", ids).Error
 	return err
 }
@@ -53,10 +78,28 @@ func (s *UrgentTaskService) UpdateUrgentTask(task1 task.UrgentTaskConf) (err err
 	//查找此task_id是否存在,如果存在不更新,否则更新
 	var entity task.UrgentTaskConf
 	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("task_id = ? and id != ? and create_date = ?", task1.TaskId, task1.Id, task1.CreateDate).First(&entity).Error
-	if !errors.Is(err , gorm.ErrRecordNotFound) {
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("已存在此task_id的任务,更新失败")
 	}
-	return global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("id", task1.Id).Updates(&task1).Error
+	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("id", task1.Id).Updates(&task1).Error
+	if err != nil {
+		return err
+	}
+	date := entity.CreateDate[:10]
+	if entity.PcCode != task1.PcCode {
+		codeSplit := strings.Split(entity.PcCode, ",")
+		ctx := context.Background()
+		for _, code := range codeSplit {
+			key := fmt.Sprintf(cache.TemporaryTaskPcCode, date, code)
+			global.GVA_REDIS.Del(ctx, key)
+		}
+		upCodeSplit := strings.Split(task1.PcCode, ",")
+		for _, upCode := range upCodeSplit {
+			key := fmt.Sprintf(cache.TemporaryTaskPcCode, date, upCode)
+			global.GVA_REDIS.Set(ctx, key, task1.TaskId, time.Hour*6)
+		}
+	}
+	return
 }
 
 func (s *UrgentTaskService) GetUrgentTaskById(id int) (task1 task.UrgentTaskConf, err error) {
@@ -65,15 +108,33 @@ func (s *UrgentTaskService) GetUrgentTaskById(id int) (task1 task.UrgentTaskConf
 }
 
 //查询空闲租机
-func (s *UrgentTaskService) GetUnusedPc() (unusedPcList []task.UnusedPc, err error)  {
+func (s *UrgentTaskService) GetUnusedPc() (unusedPcList []task.UnusedPc, err error) {
 	//获取当日日期
 	date := time.Now().Format("2006-01-02")
-	err = global.GVA_DB.Table("computer_status").Where("status = ? and create_date = ?", -1, date).Order("pc_code").Find(&unusedPcList).Error
+	db := global.GVA_DB.Table("computer_status").Where("status = ? and create_date = ?", -1, date)
+	pcCodes, err := s.GetTemporaryTaskId(date)
+	if pcCodes != "" {
+		db.Not("pc_code", strings.Split(pcCodes, ","))
+	}
+	err = db.Order("pc_code").Find(&unusedPcList).Error
 	return unusedPcList, err
 }
 
+func (s *UrgentTaskService) GetTemporaryTaskId(date string) (pcCodes string, err error) {
+	var urgentTaskConf []task.UrgentTaskConf
+	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("create_date = ?", date).Find(&urgentTaskConf).Error
+	if len(urgentTaskConf) == 0 {
+		return pcCodes, errors.New("没有任务数据")
+	}
+	for _, conf := range urgentTaskConf {
+		pcCodes += conf.PcCode + ","
+	}
+	pcCodes = strings.Trim(pcCodes, ",")
+	return
+}
+
 //获取紧急任务列表
-func (s *UrgentTaskService) GetUrgentTaskList(conf task.UrgentTaskConfRequest, info request.PageInfo, order string, desc bool) (confList []task.UrgentTaskConf, total int64, err error){
+func (s *UrgentTaskService) GetUrgentTaskList(conf task.UrgentTaskConfRequest, info request.PageInfo, order string, desc bool) (confList []task.UrgentTaskConf, total int64, err error) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	db := global.GVA_DB.Model(&task.UrgentTaskConf{})
@@ -122,4 +183,4 @@ func (s *UrgentTaskService) GetUrgentTaskList(conf task.UrgentTaskConfRequest, i
 		confList[i].CreateDate = confList[i].CreateDate[:10]
 	}
 	return confList, total, err
-}
+}