www hai 1 ano
pai
achega
85c9b70570

+ 7 - 11
api/v1/log/log_ip.go

@@ -12,7 +12,6 @@ import (
 )
 
 type ApiIpLog struct {
-
 }
 
 // @Tags loging
@@ -66,9 +65,6 @@ func (s *ApiIpLog) GetGameIPList(c *gin.Context) {
 	}
 }
 
-
-
-
 // @Tags loging
 // @Summary 获取某天具体ip
 // @Security ApiKeyAuth
@@ -88,7 +84,7 @@ func (s *ApiIpLog) GetIp(c *gin.Context) {
 		response.FailWithMessage("租机编号不能为空", c)
 		return
 	}
-	if ip.CreateDate == ""{
+	if ip.CreateDate == "" {
 		response.FailWithMessage("创建日期不能为空", c)
 		return
 	}
@@ -98,8 +94,8 @@ func (s *ApiIpLog) GetIp(c *gin.Context) {
 		response.FailWithMessage("获取失败", c)
 	} else {
 		response.OkWithDetailed(response.PageResult{
-			List:     list,
-			Total:    total,
+			List:  list,
+			Total: total,
 		}, "获取成功", c)
 	}
 }
@@ -113,7 +109,7 @@ func (s *ApiIpLog) GetGameIp(c *gin.Context) {
 		return
 	}
 
-	if ip.CreateDate == ""{
+	if ip.CreateDate == "" {
 		response.FailWithMessage("创建日期不能为空", c)
 		return
 	}
@@ -123,8 +119,8 @@ func (s *ApiIpLog) GetGameIp(c *gin.Context) {
 		response.FailWithMessage("获取失败", c)
 	} else {
 		response.OkWithDetailed(response.PageResult{
-			List:     list,
-			Total:    total,
+			List:  list,
+			Total: total,
 		}, "获取成功", c)
 	}
 }
@@ -180,4 +176,4 @@ func (s *ApiIpLog) GameIpExport(c *gin.Context) {
 	}
 	c.Writer.Header().Add("success", "true")
 	c.File(filePath)
-}
+}

+ 5 - 1
api/v1/log/loging.go

@@ -746,7 +746,7 @@ func (e *ApiLoging) GetWuYToken(c *gin.Context) {
 	token := reqs.Cookies()[1].Value
 	if token != "" {
 		token = "token=" + token
-		global.GVA_REDIS.Set(c, key, token, time.Minute*30)
+		global.GVA_REDIS.Set(c, key, token, time.Minute*6)
 	}
 	data.Token = token
 	response.OkWithDetailed(data, "获取成功", c)
@@ -772,3 +772,7 @@ func (s *ApiLoging) SupConErr(c *gin.Context) {
 	global.GVA_LOG.Warn(fmt.Sprintf("中控上报异常pc_code=%s 描述=%s", paramsInfo.PcCode, paramsInfo.Describe))
 	response.OkWithDetailed(num, "上报成功", c)
 }
+
+func (s *ApiLoging) CheckErr(c *gin.Context) {
+	response.OkWithDetailed("", "检测成功", c)
+}

+ 44 - 0
api/v1/task/game_task.go

@@ -5,6 +5,7 @@ import (
 	"go.uber.org/zap"
 	"log-server/global"
 	"log-server/model/common/response"
+	log2 "log-server/model/log"
 	"log-server/model/task/request"
 	taskResponse "log-server/model/task/response"
 	"log-server/utils"
@@ -585,3 +586,46 @@ func (e *GameTaskApi) GetRetentionRatio(c *gin.Context) {
 		response.OkWithDetailed(api, "获取成功", c)
 	}
 }
+
+func (e *GameTaskApi) UploadGameCharacter(c *gin.Context) {
+	var params request.UploadGameCharacterRequest
+	_ = c.ShouldBindJSON(&params)
+	if err := taskService.UploadGameCharacter(c, params); err != nil {
+		global.GVA_LOG.Error("上报失败!", zap.Error(err))
+		response.FailWithMessage("上报失败 "+err.Error(), c)
+	} else {
+		response.OkWithMessage("上报成功", c)
+	}
+}
+
+func (e *GameTaskApi) PushCompleteTaskData(c *gin.Context) {
+	dt := c.Query("date")
+	if dt == "" {
+		response.FailWithMessage("参数错误 ", c)
+		return
+	}
+	taskService.PushCompleteTaskData(dt)
+	response.OkWithMessage("推送成功", c)
+}
+
+func (e *GameTaskApi) GetWindowTask(c *gin.Context) {
+	var confit log2.IpLogResponse
+	_ = c.ShouldBindJSON(&confit)
+	if confit.GameId == 0 {
+		response.FailWithMessage("游戏id不能为空", c)
+		return
+	}
+	if confit.PcCode == "" {
+		response.FailWithMessage("租机编号不能为空", c)
+		return
+	}
+	list, _, err := taskService.GetWindowTask(confit.PcCode, confit.GameId)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(response.PageResult{
+			List: list,
+		}, "获取成功", c)
+	}
+}

+ 5 - 1
config.yaml

@@ -148,6 +148,9 @@ timer:
   - tableName: jwt_blacklists
     compareField: created_at
     interval: 168h
+  - tableName: image_record
+    compareField: create_time
+    interval: 168h
 zap:
   level: info
   prefix: '[log-server]'
@@ -167,7 +170,8 @@ send-url:
   tx-send-mobile: "1111111111"
 extranet-domain:
   #control: "http://bpm.kfzs.com:7089"
-  control: "http://xjf.lianyou.fun:8099"
+  control: ""
+  yl-control: "https://test.yl.kfzs.com"
 #extranet-domain:
 #  control: "http://xjf.lianyou.fun:8099"
 prefix-url:

+ 2 - 1
config/extranet_domain.go

@@ -1,5 +1,6 @@
 package config
 
 type ExtranetDomain struct {
-	Control string `mapstructure:"control" json:"control" yaml:"control"` // 群控域名
+	Control   string `mapstructure:"control" json:"control" yaml:"control"`          // 群控域名
+	YlControl string `mapstructure:"yl-control" json:"yl-control" yaml:"yl-control"` // 易练域名
 }

+ 3 - 29
initialize/gorm.go

@@ -1,14 +1,12 @@
 package initialize
 
 import (
+	"log-server/model/log"
 	"os"
 
-	"log-server/global"
-	"log-server/model/example"
-	"log-server/model/system"
-
 	"go.uber.org/zap"
 	"gorm.io/gorm"
+	"log-server/global"
 )
 
 // Gorm 初始化数据库并产生数据库全局变量
@@ -28,31 +26,7 @@ func Gorm() *gorm.DB {
 // Author SliverHorn
 func RegisterTables(db *gorm.DB) {
 	err := db.AutoMigrate(
-		// 系统模块表
-		system.SysApi{},
-		system.SysUser{},
-		system.SysBaseMenu{},
-		system.JwtBlacklist{},
-		system.SysAuthority{},
-		system.SysDictionary{},
-		system.SysOperationRecord{},
-		system.SysAutoCodeHistory{},
-		system.SysDictionaryDetail{},
-		system.SysBaseMenuParameter{},
-		system.SysBaseMenuBtn{},
-		system.SysAuthorityBtn{},
-		system.SysAutoCode{},
-
-		// 示例模块表
-		example.ExaFile{},
-		example.ExaCustomer{},
-		example.ExaFileChunk{},
-		example.ExaFileUploadAndDownload{},
-
-		// 自动化模块表
-		// Code generated by log-server Begin; DO NOT EDIT.
-
-		// Code generated by log-server End; DO NOT EDIT.
+		log.GameCharacter{},
 	)
 	if err != nil {
 		global.GVA_LOG.Error("register table failed", zap.Error(err))

+ 6 - 0
initialize/timer.go

@@ -256,4 +256,10 @@ func Timer() {
 		fmt.Println("add OnlineComputerEfficiencyStatistics timer error:", err)
 	}
 
+	// 定时推送任务到检测平台
+	_, err = global.GVA_Timer.AddTaskByFunc("GameTaskTargetInfoPush", "20 55 14 * * *", syncData.GameTaskTargetInfoPush)
+	if err != nil {
+		fmt.Println("add GameTaskTargetInfoPush timer error:", err)
+	}
+
 }

+ 7 - 5
main.go

@@ -24,13 +24,15 @@ func main() {
 	global.GVA_LOG = core.Zap()  // 初始化zap日志库
 	zap.ReplaceGlobals(global.GVA_LOG)
 	global.GVA_DB = initialize.Gorm() // gorm连接数据库
+	if global.GVA_DB != nil {
+		initialize.RegisterTables(global.GVA_DB) // 初始化表
+		// 程序结束前关闭数据库链接
+		db, _ := global.GVA_DB.DB()
+		defer db.Close()
+	}
 	initialize.Redis()
 	initialize.Timer()
 	initialize.DBList()
-
-	core.RunWindowsServer()
 	defer global.GVA_REDIS.Close()
-	// 程序结束前关闭数据库链接
-	db, _ := global.GVA_DB.DB()
-	defer db.Close()
+	core.RunWindowsServer()
 }

+ 16 - 0
model/log/game_character.go

@@ -0,0 +1,16 @@
+package log
+
+import "time"
+
+type GameCharacter struct {
+	Id        uint   `json:"id" gorm:"primarykey"`
+	Character string `json:"character"` //角色
+	GameId    int    `json:"game_id"`   //游戏id
+	Account   string `json:"account"`
+	CreatedAt time.Time
+	UpdatedAt time.Time
+}
+
+func (GameCharacter) TableName() string {
+	return "game_character"
+}

+ 10 - 8
model/log/log_ip.go

@@ -1,14 +1,16 @@
 package log
 
 type IpLog struct {
-	Id         uint   `json:"id"`
-	Ip         string `json:"ip"`          //模拟器ip
-	LogUuid    string `json:"log_uuid"`    //日志UUID
-	GameId     int    `json:"game_id"`     //游戏id
-	Account    string `json:"account"`     //账号
-	PcCode     string `json:"pc_code"`     //电脑编号
-	CreateDate string `json:"create_date"` // 创建日期
-	CreateTime string `json:"create_time"` // 创建时间
+	Id            uint   `json:"id"`
+	Ip            string `json:"ip"`       //模拟器ip
+	LogUuid       string `json:"log_uuid"` //日志UUID
+	GameId        int    `json:"game_id"`  //游戏id
+	Account       string `json:"account"`  //账号
+	PcCode        string `json:"pc_code"`  //电脑编号
+	SimulatorCode string `json:"simulator_code"`
+	FrontIp       string `json:"front_ip"`    //前端IP
+	CreateDate    string `json:"create_date"` // 创建日期
+	CreateTime    string `json:"create_time"` // 创建时间
 }
 
 //播报处理的iplog

+ 1 - 0
model/task/game_task.go

@@ -67,6 +67,7 @@ type GameTaskUnion struct {
 	IsDel           int       `json:"is_del"`      // 是否删除-1删除,1正常
 	DeleteTime      time.Time `json:"delete_time"`
 	StopTime        time.Time `json:"stop_time"`
+	PushPayRatio    int       `json:"push_pay_ratio"`
 }
 
 func (GameTask) TableName() string {

+ 20 - 0
model/task/request/game_task.go

@@ -86,6 +86,20 @@ type GameTargetCompleteRequest struct {
 	TotalAmount      float64  `json:"total_amount"`
 }
 
+type GetGameTargetCompleteInfo struct {
+	GameId           int    `json:"game_id"`
+	GameName         string `json:"game_name"`
+	Username         string `json:"username"`
+	NewComplete      int    `json:"new_complete"`
+	PayComplete      int    `json:"pay_complete"`
+	RetainedComplete int    `json:"retain_complete"`
+	NewTarget        int    `json:"new_target"`
+	PayTarget        int    `json:"pay_target"`
+	RetainedTarget   int    `json:"retain_target"`
+	TheDate          string `json:"the_date"`
+	IsComplete       int    `json:"is_complete"`
+}
+
 type GetGameTaskTargetByIdRequest struct {
 	ID         int    `json:"id" form:"id"` // 主键ID
 	CreateDate string `json:"create_date"`
@@ -149,3 +163,9 @@ type RetentionRatioRequest struct {
 type GetRetentionRatioRequest struct {
 	GameID int `json:"game_id"` //游戏Id
 }
+
+type UploadGameCharacterRequest struct {
+	Character string `json:"character"` //角色
+	GameId    int    `json:"game_id"`   //游戏id
+	Account   string `json:"account"`
+}

+ 1 - 0
model/task/response/game_task.go

@@ -47,6 +47,7 @@ type GetGameTaskListUnionReply struct {
 	CreateTime      string `json:"create_time"` // 创建时间
 	UpdateTime      string `json:"update_time"` // 更新时间
 	StopTime        string `json:"stop_time"`
+	PushPayRatio    int    `json:"push_pay_ratio"`
 }
 
 type GetGameTargetComplete struct {

+ 1 - 0
model/task/task_conf.go

@@ -10,6 +10,7 @@ type TaskConf struct {
 	User          string `json:"user"`
 	AddFeeNotice  int    `json:"add_fee_notice"`
 	SimulatorType int    `json:"simulator_type"`
+	PushPayRatio  int    `json:"push_pay_ratio"`
 }
 
 func (TaskConf) TableName() string {

+ 1 - 0
model/task/urgent_task_conf.go

@@ -9,6 +9,7 @@ type UrgentTaskConf struct {
 	CreateDate string               `json:"create_date"` //创建日期
 	CreateTime typeManage.LocalTime `json:"create_time"`
 	UpdateTime typeManage.LocalTime `json:"update_time"`
+	Url        string               `json:"url"`
 }
 
 type ByIdUrgentTaskConf struct {

+ 21 - 19
router/task/game_task.go

@@ -10,27 +10,29 @@ type GameTaskRouter struct {
 }
 
 func (e *GameTaskRouter) InitGameTaskRouter(Router *gin.RouterGroup) {
-	GameTaskRouter := Router.Group("gameTask")
+	gameTaskRouter := Router.Group("gameTask")
 	GameTaskApi := v1.ApiGroupApp.GroupTask.GameTaskApi
 	{
-		GameTaskRouter.POST("getGameTaskList", GameTaskApi.GetGameTaskList)
-		GameTaskRouter.POST("getUsedGameTaskList", GameTaskApi.GetUsedGameTaskList) //获取启用状态的任务
-		GameTaskRouter.POST("getGameTaskById", GameTaskApi.GetGameTaskById)
-		GameTaskRouter.POST("getGameTaskTargetList", GameTaskApi.GetGameTaskTargetList)
-		GameTaskRouter.POST("getGameTaskTargetById", GameTaskApi.GetGameTaskTargetById)
-		GameTaskRouter.GET("targetStatistics", GameTaskApi.TargetStatistics)
-		GameTaskRouter.POST("everyDayStatistics", GameTaskApi.EveryDayStatistics)
-		GameTaskRouter.POST("monthStatistics", GameTaskApi.MonthStatistics)
-		GameTaskRouter.POST("gameStatistics", GameTaskApi.GameStatistics)
-		GameTaskRouter.POST("gameList", GameTaskApi.GameList)
-		GameTaskRouter.POST("getGameTxTaskList", GameTaskApi.GetGameTxTaskList)
-		GameTaskRouter.POST("getFeeAccountList", GameTaskApi.GetFeeAccountList)
-		GameTaskRouter.POST("taskTargetExport", GameTaskApi.TaskTargetExport)
-		GameTaskRouter.POST("getXmyTaskList", GameTaskApi.GetXmyTaskList) //获取小绵羊任务列表
-		GameTaskRouter.POST("temporaryTask", GameTaskApi.TemporaryTask)
-		GameTaskRouter.GET("sheepPay", GameTaskApi.GetSheepPay)
-		GameTaskRouter.POST("getRatio", GameTaskApi.GetRetentionRatio)
-		GameTaskRouter.POST("updateRatio", GameTaskApi.UpdateRetentionRatio)
+		gameTaskRouter.POST("getGameTaskList", GameTaskApi.GetGameTaskList)
+		gameTaskRouter.POST("getUsedGameTaskList", GameTaskApi.GetUsedGameTaskList) //获取启用状态的任务
+		gameTaskRouter.POST("getGameTaskById", GameTaskApi.GetGameTaskById)
+		gameTaskRouter.POST("getGameTaskTargetList", GameTaskApi.GetGameTaskTargetList)
+		gameTaskRouter.POST("getGameTaskTargetById", GameTaskApi.GetGameTaskTargetById)
+		gameTaskRouter.GET("targetStatistics", GameTaskApi.TargetStatistics)
+		gameTaskRouter.POST("everyDayStatistics", GameTaskApi.EveryDayStatistics)
+		gameTaskRouter.POST("monthStatistics", GameTaskApi.MonthStatistics)
+		gameTaskRouter.POST("gameStatistics", GameTaskApi.GameStatistics)
+		gameTaskRouter.POST("gameList", GameTaskApi.GameList)
+		gameTaskRouter.POST("getGameTxTaskList", GameTaskApi.GetGameTxTaskList)
+		gameTaskRouter.POST("getFeeAccountList", GameTaskApi.GetFeeAccountList)
+		gameTaskRouter.POST("taskTargetExport", GameTaskApi.TaskTargetExport)
+		gameTaskRouter.POST("getXmyTaskList", GameTaskApi.GetXmyTaskList) //获取小绵羊任务列表
+		gameTaskRouter.POST("temporaryTask", GameTaskApi.TemporaryTask)
+		gameTaskRouter.GET("sheepPay", GameTaskApi.GetSheepPay)
+		gameTaskRouter.POST("getRatio", GameTaskApi.GetRetentionRatio)
+		gameTaskRouter.POST("updateRatio", GameTaskApi.UpdateRetentionRatio)
+		gameTaskRouter.POST("uploadGameCharacter", GameTaskApi.UploadGameCharacter)
+		gameTaskRouter.GET("pushTaskData", GameTaskApi.PushCompleteTaskData)
 	}
 	GameTaskRouter1 := Router.Group("gameTask").Use(middleware.OperationRecord())
 	{

+ 2 - 2
service/dataStatistics/data_abnormal_rate.go

@@ -460,7 +460,7 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 // QueryXjfLogByBatch 请求机房任务数据
 func (s *ServiceDataAbnormalRate) QueryXjfLogByBatch(action string, actionResult string) (result []byte, err error) {
 	today := time.Now().Format("2006-01-02")
-	jfUrl := "http://xjf.lianyou.fun:8099/v1/device/get_log_by_game"
+	jfUrl := global.GVA_CONFIG.ExtranetDomain.Control + "/v1/device/get_log_by_game"
 	jfParams := map[string]string{
 		"date":          today,
 		"action":        action,
@@ -473,7 +473,7 @@ func (s *ServiceDataAbnormalRate) QueryXjfLogByBatch(action string, actionResult
 // RequestXjfTaskData 请求机房任务数据
 func (s *ServiceDataAbnormalRate) RequestXjfTaskData() (result []byte, err error) {
 	today := time.Now().Format("2006-01-02")
-	jfurl := "http://xjf.lianyou.fun:8099/v1/task_statistics"
+	jfurl := global.GVA_CONFIG.ExtranetDomain.Control + "/v1/task_statistics"
 	jfparams := map[string]string{
 		"query": "date:" + today + ",type:machine",
 	}

+ 1 - 1
service/dataStatistics/wechat_scanner_detailed.go

@@ -241,7 +241,7 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 //
 // getJfWechatOrder 获取机房后台微信订单列表信息
 func (s *ServiceWeChatScannerDetailed) getJfWechatOrder(gameId int, date string) (result []byte, err error) {
-	jfUrl := "http://xjf.lianyou.fun:8099/v1/account/get_wechat_order"
+	jfUrl := global.GVA_CONFIG.ExtranetDomain.Control + "/v1/account/get_wechat_order"
 	jfParams := map[string]string{
 		"game_id": strconv.Itoa(gameId),
 		"date":    date,

+ 25 - 11
service/levelMonitor/image_record.go

@@ -33,11 +33,11 @@ func (s *ImageRecordService) CreateImageRecord(record levelMonitor.ImageRecord)
 	//获取今日日期
 	date := time.Now().Format("2006-01-02")
 	key := fmt.Sprintf(cache.UploadImageNum, date, record.TaskId)
-	ctx := context.Background()
-	num, _ := s.cache.GetCacheNum(ctx, key)
-	if num > 100 {
-		return errors.New("数据上传已到上限")
-	}
+	//ctx := context.Background()
+	//num, _ := s.cache.GetCacheNum(ctx, key)
+	//if num > 100 {
+	//	return errors.New("数据上传已到上限")
+	//}
 	var entity levelMonitor.ImageRecord
 	//创建日期赋值
 	record.CreateDate = date
@@ -59,8 +59,8 @@ func (s *ImageRecordService) CreateImageRecord(record levelMonitor.ImageRecord)
 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()
+	key := fmt.Sprintf(cache.UploadImageNum, date, request.TaskId)
+	ctx := context.Background()
 	//num, _ := s.cache.GetCacheNum(ctx, key)
 	//if num > 100 {
 	//	return errors.New("数据上传已到上限")
@@ -91,7 +91,7 @@ func (s *ImageRecordService) CreateLevel(request levelRequest.CreateLevelRequest
 	if request.Level > 1 {
 		s.UpdateControlAccountLevel(request.Account, request.TaskId, request.Level)
 	}
-	//s.cache.SetCacheNum(ctx, key)
+	s.cache.SetCacheNum(ctx, key)
 	return
 }
 
@@ -113,12 +113,20 @@ func (s *ImageRecordService) UploadOrNot(record levelMonitor.ImageRecord) (err e
 	key := fmt.Sprintf(cache.UploadImageNum, date, record.TaskId)
 	ctx := context.Background()
 	num, _ := s.cache.GetCacheNum(ctx, key)
-	if num > 50 {
+	if num > 300 {
 		return errors.New("数据上传已到上限")
 	}
 	return nil
 }
 
+func (s *ImageRecordService) UploadLeve(record levelMonitor.ImageRecord) (err error) {
+	date := time.Now().Format("2006-01-02")
+	key := fmt.Sprintf(cache.UploadImageNum, date, record.TaskId)
+	ctx := context.Background()
+	s.cache.SetCacheNum(ctx, key)
+	return nil
+}
+
 //删除7日前的图片记录
 func (s *ImageRecordService) DeleteExpireImageRecord() {
 	markTime := time.Now().Add(-time.Hour * 48).Format("2006-01-02")
@@ -130,6 +138,7 @@ func (s *ImageRecordService) DeleteExpireImageRecord() {
 }
 
 //获取图片记录列表
+
 func (s *ImageRecordService) GetImageRecordList(record levelRequest.ImageRecordRequest, info request.PageInfo, order string, desc bool) (recordList []levelMonitor.ImageRecordResponse, total int64, err error) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
@@ -212,6 +221,12 @@ func (s *ImageRecordService) GetAccessToken(ctx context.Context) (token string,
 }
 
 func (s *ImageRecordService) ImageIdentify(record levelMonitor.ImageRecord, key string) {
+	var gameAccount log.GameAccount
+	global.GVA_DB.Where("game_id", record.TaskId).Where("account", record.Account).First(&gameAccount)
+	if gameAccount.UseNum == 1 {
+		global.GVA_DB.Where("id = ?", record.Id).Delete(&levelMonitor.ImageRecord{})
+		return
+	}
 	ctx := context.Background()
 	token, err := GetAccessToken()
 	if err != nil {
@@ -269,8 +284,7 @@ func (s *ImageRecordService) ImageIdentify(record levelMonitor.ImageRecord, key
 		s.UpdateImageRecordStatus(record.Id, string(body), -1, 0, 0)
 		return
 	}
-	var gameAccount log.GameAccount
-	global.GVA_DB.Where("game_id", record.TaskId).Where("account", record.Account).First(&gameAccount)
+
 	s.UpdateImageRecordStatus(record.Id, string(body), 1, gameAccount.UseNum, identify)
 	UpdateGameAccountIdentify(record.Account, record.TaskId, identify)
 	if identify > 1 && record.TaskId == 5001 {

+ 2 - 2
service/log/log_ip.go

@@ -369,8 +369,8 @@ func (s *ServiceIpLog) UpdateAbnormalMachineIp() (err error) {
 		createDate := abnormalIpList[i].CreateDate[:10]
 		count := abnormalIpList[i].Count
 
-		//根据count判断,如果count < 9, continue继续做下一条记录的处理
-		if count < 6 {
+		//根据count判断,如果count < 5, continue继续做下一条记录的处理
+		if count < 5 {
 			continue
 		}
 

+ 12 - 3
service/log/loging/logical_log.go

@@ -709,7 +709,7 @@ func (s *LogicalLog) GetStatisticsComputerRate(ctx context.Context, pcCode strin
 // 请求机房任务数据
 func (s *LogicalLog) RequestJfRoom() (result []byte, err error) {
 	today := time.Now().Format("2006-01-02")
-	jfurl := "http://xjf.lianyou.fun:8099/v1/task_statistics"
+	jfurl := global.GVA_CONFIG.ExtranetDomain.Control + "/v1/task_statistics"
 	jfparams := map[string]string{
 		"query": "date:" + today + ",type:machine",
 	}
@@ -905,6 +905,11 @@ func (s *LogicalLog) AddIpLog(request request.AddLogRequest) {
 	logSC.Ip = request.SimulatorIp
 	logSC.Account = request.Account
 	logSC.PcCode = request.PcCode
+	logSC.SimulatorCode = request.SimulatorCode
+	segments := strings.Split(request.SimulatorIp, ".")
+	if len(segments) > 3 {
+		logSC.FrontIp = strings.Join(segments[:3], ".")
+	}
 	logSC.CreateDate = time.Now().Format("2006-01-02")
 	err := global.GVA_DB.Omit("create_time").Create(&logSC).Error
 	if err != nil {
@@ -1127,7 +1132,7 @@ func (s *LogicalLog) CheckDeviceId(request request.AddLogRequest) {
 		b, deviceLog := s.CheckDeviceIdErr(request.ScriptDeviceId, request.LogUuid, request.GameId)
 		// 有异常处理
 		if b && len(deviceLog) >= 3 {
-			s.AddScriptDeviceErr(request.GameId, request.Account, request.ScriptDeviceId, request.ScriptDeviceId, deviceLog[0].Account, deviceLog[0].GameId, 2, request.PcCode, request.Operator)
+			s.AddScriptDeviceErr(request.GameId, request.Account, request.ScriptDeviceId, request.ScriptDeviceId, deviceLog[1].Account, deviceLog[1].GameId, 2, request.PcCode, request.Operator)
 			ct := fmt.Sprintf("<font color=\"warning\">%s:%d, 相同设备id</font>", request.PcCode, request.GameId)
 			s.SendDeviceMsg(ct, request.Operator)
 		}
@@ -1168,10 +1173,14 @@ func (s *LogicalLog) CheckDeviceId(request request.AddLogRequest) {
 			gameAccount.DeviceHex = device.DeviceHex
 		}
 	}
-	gameAccount.UseNum += 1
+	//gameAccount.UseNum += 1
 	global.GVA_DB.Save(&gameAccount)
 }
 
+func (s *LogicalLog) GameUseNumChange(gameId int, account string) {
+	global.GVA_DB.Model(&log.GameAccount{}).Where("game_id = ?", gameId).Where("account = ?", account).Update("use_num", gorm.Expr("use_num + ?", 1))
+}
+
 func (s *LogicalLog) SendDeviceMsg(content string, operator string) {
 	c := "# 设备异常"
 	c += "\n"

+ 1 - 0
service/log/loging/login_log.go

@@ -33,6 +33,7 @@ func (s *LoginLog) SuccessLog(ctx context.Context, request request.AddLogRequest
 	}
 	if code[:5] == "46050" {
 		s.logical.UpdateIpLogStatus(s.logical.Request.LogUuid, s.logical.CurrentDate())
+		go s.logical.GameUseNumChange(s.logical.Request.GameId, s.logical.Request.Account)
 	}
 	err = s.logical.PartTypeLogSetNum(ctx, s.logical.CurrentDate(), s.logical.Request.GameId, code, OkStatus, s.logical.Request.TaskType)
 	if err != nil {

+ 2 - 2
service/system/sys_robot.go

@@ -120,7 +120,7 @@ func (robotService *RobotService) RequestJfDevicesState(rack int) (result []byte
 
 // RequestJfXmyNewAccount 获取机房小绵羊新号剩余
 func (robotService *RobotService) RequestJfXmyNewAccount() (result []byte, err error) {
-	jfUrl := "http://xjf.lianyou.fun:8099/v1/account/get_left_smallsheep_account"
+	jfUrl := global.GVA_CONFIG.ExtranetDomain.Control + "/v1/account/get_left_smallsheep_account"
 	jfParams := map[string]string{}
 	result, err = utils.HttpGet(jfUrl, jfParams)
 	return
@@ -178,7 +178,7 @@ func (robotService *RobotService) SyncIPMessage() {
 	//if len(abnormalTodayIpList) != 0
 	//将租机编号添加至消息体
 	for k, v := range abnormalTodayIpList {
-		ipMsgData[v] += fmt.Sprintf("<font color=\"warning\">%s</font>", k ) + "\n"
+		ipMsgData[v] += fmt.Sprintf("<font color=\"warning\">%s</font>", k) + "\n"
 		//if k != len(abnormalTodayIpList) - 1 {
 		//	ipMsgData[v.User] +=  "\n"
 		//}

+ 7 - 8
service/task/central_control_conf.go

@@ -10,7 +10,6 @@ import (
 )
 
 type CentralControlService struct {
-
 }
 
 //创建配置记录
@@ -27,7 +26,7 @@ func (s *CentralControlService) CreateCentralControlConf(conf task.CentralContro
 }
 
 //删除中控配置记录
-func (s *CentralControlService) DeleteCentralControlConf(conf task.CentralControlConf) (err error)  {
+func (s *CentralControlService) DeleteCentralControlConf(conf task.CentralControlConf) (err error) {
 	var entity task.CentralControlConf
 	err = global.GVA_DB.Model(&task.CentralControlConf{}).Where("id", conf.Id).First(&entity).Error
 	if errors.Is(err, gorm.ErrRecordNotFound) {
@@ -59,7 +58,7 @@ func (s *CentralControlService) GetCentralControlConfById(id int) (conf task.Cen
 }
 
 //获取配置列表
-func (s *CentralControlService) GetCentralControlConfList(conf task.CentralControlConf, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error){
+func (s *CentralControlService) GetCentralControlConfList(conf task.CentralControlConfList, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
 	//获取limit和offset
 	limit := info.PageSize
 	offset := (info.Page - 1) * info.PageSize
@@ -73,16 +72,16 @@ func (s *CentralControlService) GetCentralControlConfList(conf task.CentralContr
 	}
 
 	err = db.Count(&total).Error
-	if err != nil{
+	if err != nil {
 		//如果出错直接返回
 		return confList, total, err
 	} else {
 		//先分页再排序
 		db = db.Limit(limit).Offset(offset)
-		if order != ""{
+		if order != "" {
 			//传入排序字段,进行排序
 			//定义orderStr存储完整的排序字段
-			var  orderStr string
+			var orderStr string
 			//为了避免sql注入,自己创建数组匹配
 			orderMap := make(map[string]bool, 3)
 			orderMap["task_id"] = true
@@ -111,11 +110,11 @@ func (s *CentralControlService) GetCentralControlConfList(conf task.CentralContr
 }
 
 //获取云配置列表
-func (s *CentralControlService) GetCloudConfList() (dataList []task.CentralControlTaskConf, err error)  {
+func (s *CentralControlService) GetCloudConfList() (dataList []task.CentralControlTaskConf, err error) {
 	//获取所有的中控配置列表
 	db := global.GVA_DB.Model(&task.CentralControlConf{})
 	db = db.Select("central_control_conf.*,game_task.task_name").Joins("left join game_task on central_control_conf.task_id = game_task.task_id")
 	err = db.Find(&dataList).Error
 	//err = global.GVA_DB.Model(&task.CentralControlConf{}).Find(&dataList).Error
 	return
-}
+}

+ 46 - 2
service/task/common.go

@@ -61,7 +61,7 @@ func (s *Common) SaveGameAddFee(num, target int, taskName string) {
 }
 
 // 加付费通知
-func (s *Common) FreeSendMsg(num, target, taskId int, taskName, director string) {
+func (s *Common) FreeSendMsg(num, target, taskId int, taskName, director string, payComplete int) {
 	taskConf, err := s.TConf.GetTaskConfByTaskId(taskId)
 	if err != nil {
 		global.GVA_LOG.Error("FreeSendMsg获取任务配置失败"+director, zap.Error(err))
@@ -85,10 +85,54 @@ func (s *Common) FreeSendMsg(num, target, taskId int, taskName, director string)
 	personMsg += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
 	personMsg += "\n"
 	personMsg += taskName
-	personMsg += fmt.Sprintf("<font color=\"warning\"> 加付费 %d, 当前付费目标 %d</font>", num, target)
+	personMsg += fmt.Sprintf("<font color=\"warning\"> 加付费 %d, 当前付费目标 %d, 当前剩余付费 %d</font>", num, target, target-payComplete)
 	url := person.Url
 	var sendData SendMsg
 	sendData.MsgType = "markdown"
 	sendData.Markdown.Content = personMsg
 	s.SendMsgData(url, sendData)
 }
+
+func (s *Common) PaymentRatioErrSendMsg(paymentRatio map[string]string) {
+	if len(paymentRatio) <= 0 {
+		return
+	}
+	hour := time.Now().Hour()
+	if hour < 8 {
+		return
+	}
+	var groupMobile []string
+	groupMsg := "# 付费比例异常"
+	groupMsg += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
+	groupMsg += "\n"
+	for director, msg := range paymentRatio {
+		person, err := s.Person.GetUserInfoByName(director)
+		if err != nil {
+			global.GVA_LOG.Error("PaymentRatioErrSendMsg获取用户数据失败"+director, zap.Error(err))
+		}
+		personMsg := "# 付费比例异常"
+		personMsg += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
+		personMsg += "\n"
+		personMsg += msg
+		groupMsg += "**" + director + "**"
+		groupMsg += "\n"
+		groupMsg += msg
+		url := person.Url
+		var sendData SendMsg
+		sendData.MsgType = "markdown"
+		sendData.Markdown.Content = personMsg
+		s.SendMsgData(url, sendData)
+		groupMobile = append(groupMobile, person.MobilePhoneNumber)
+	}
+	url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
+	var sendData SendMsg
+	sendData.MsgType = "markdown"
+	sendData.Markdown.Content = groupMsg
+	s.SendMsgData(url, sendData)
+	if len(groupMobile) != 0 {
+		var sendTextData SendTextMsg
+		sendTextData.MsgType = "text"
+		sendTextData.Text.MentionedMobileList = groupMobile
+		s.SendMsgData(url, sendTextData)
+	}
+}

+ 93 - 3
service/task/sync_data.go

@@ -145,6 +145,33 @@ func (s *SyncData) EveryDaySyncTaskData() {
 	return
 }
 
+func (s *SyncData) CurrDaySyncTaskData() {
+	db := global.GVA_DB.Model(&task.GameTask{})
+	var apiList []task.GameTask
+	db = db.Where("is_del = ?", -1)
+	db = db.Where("status = ?", 1)
+	err := db.Order("id desc").Find(&apiList).Error
+	if err != nil {
+		global.GVA_LOG.Error("EveryDaySyncTaskData fail", zap.Error(err))
+		return
+	}
+	date := time.Now()
+	var gameTargetCompletes []*task.GameTargetComplete
+	for _, gameTask := range apiList {
+		if !errors.Is(global.GVA_DB.Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).First(&task.GameTargetComplete{}).Error, gorm.ErrRecordNotFound) {
+			continue
+		}
+		gameTargetComplete := s.GameTask.CreateGameTargetCompleteModel(gameTask, date)
+		gameTargetCompletes = append(gameTargetCompletes, gameTargetComplete)
+	}
+	err = global.GVA_DB.Model(&task.GameTargetComplete{}).Omit("update_time", "game_rate", "is_complete").Create(gameTargetCompletes).Error
+	if err != nil {
+		global.GVA_LOG.Error("create GameTargetComplete fail", zap.Error(err))
+		return
+	}
+	return
+}
+
 // 定时同步机房群控、小绵羊数据
 func (s *SyncData) SyncTaskData() {
 	db := global.GVA_DB.Model(&task.GameTask{})
@@ -176,7 +203,10 @@ func (s *SyncData) SyncTaskData() {
 	//	global.GVA_LOG.Error("SyncWslGameData get wsl data fail", zap.Error(err))
 	//	//return
 	//}
+	paymentRatio := make(map[string]string)
 	for _, gameTask := range apiList {
+		//var gameTargetComplete task.GameTargetComplete
+		//global.GVA_DB.Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).First(&gameTargetComplete)
 		var gameTarget task.GameTargetComplete
 		roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
 
@@ -200,7 +230,8 @@ func (s *SyncData) SyncTaskData() {
 					payErrAddNumKey := fmt.Sprintf(PayErrAddNumKey, date, gameTask.TaskId)
 					diffNum := gameTarget.PayTarget - completeTaskData[gameTask.TaskId].PayTarget
 					s.common.SaveGameAddFee(diffNum, gameTarget.PayTarget, gameTask.TaskName)
-					go s.common.FreeSendMsg(diffNum, gameTarget.PayTarget, gameTask.TaskId, gameTask.TaskName, gameTask.User)
+					go s.common.FreeSendMsg(diffNum, gameTarget.PayTarget, gameTask.TaskId, gameTask.TaskName, gameTask.User, gameTarget.PayComplete)
+					paymentRatio = s.DetectionPaymentRatio(gameTask.TaskName, gameTask.TaskId, gameTask.User, gameTarget.PayTarget, roomData.RetainedTarget, paymentRatio)
 					// 如果当前付费目标完成,加入一下逻辑
 					if completeTaskData[gameTask.TaskId].PayTarget <= completeTaskData[gameTask.TaskId].PayComplete {
 						lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, gameTask.TaskId)
@@ -223,7 +254,7 @@ func (s *SyncData) SyncTaskData() {
 			}
 		}
 		gameTarget.GameRate = roomData.GameRate
-		if (gameTask.GamePortId == 5 && gameTask.LoginMethod == 2) || gameTask.LoginMethod == 7 {
+		if (gameTask.GamePortId == 5 && gameTask.LoginMethod == 2) || gameTask.LoginMethod == 7 || gameTask.LoginMethod == 9 {
 			// 魅族游戏id处理
 			GameId := gameTask.MzGameId + "-" + gameTask.MzChannel
 			// 青雀账号游戏id处理
@@ -232,6 +263,12 @@ func (s *SyncData) SyncTaskData() {
 				GameId = "rose-" + taskId
 				gameTarget.PayComplete = roomData.PayComplete
 			}
+			// 酷云账号游戏id处理
+			if gameTask.LoginMethod == 9 {
+				taskId := strconv.Itoa(gameTask.TaskId)
+				GameId = "coolyun-" + taskId
+				gameTarget.PayComplete = roomData.PayComplete
+			}
 			b, sheepPay := s.SelectSheepPay(date, GameId)
 			if b {
 				gameTarget.PayTarget = sheepPay.Money
@@ -244,7 +281,8 @@ func (s *SyncData) SyncTaskData() {
 					payErrAddNumKey := fmt.Sprintf(PayErrAddNumKey, date, gameTask.TaskId)
 					diffNum := gameTarget.PayTarget - completeTaskData[gameTask.TaskId].PayTarget
 					s.common.SaveGameAddFee(diffNum, gameTarget.PayTarget, gameTask.TaskName)
-					go s.common.FreeSendMsg(diffNum, gameTarget.PayTarget, gameTask.TaskId, gameTask.TaskName, gameTask.User)
+					go s.common.FreeSendMsg(diffNum, gameTarget.PayTarget, gameTask.TaskId, gameTask.TaskName, gameTask.User, gameTarget.PayComplete)
+					paymentRatio = s.DetectionPaymentRatio(gameTask.TaskName, gameTask.TaskId, gameTask.User, gameTarget.PayTarget, roomData.RetainedTarget, paymentRatio)
 					// 如果当前付费目标完成,加入一下逻辑
 					if completeTaskData[gameTask.TaskId].PayTarget <= completeTaskData[gameTask.TaskId].PayComplete {
 						lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, gameTask.TaskId)
@@ -261,11 +299,37 @@ func (s *SyncData) SyncTaskData() {
 		if gameTarget.RetainedComplete+completeTaskData[gameTask.TaskId].HandRetainedComplete >= completeTaskData[gameTask.TaskId].RetainedTarget && gameTarget.PayComplete >= completeTaskData[gameTask.TaskId].PayTarget && gameTarget.NewComplete+completeTaskData[gameTask.TaskId].HandNewComplete >= completeTaskData[gameTask.TaskId].NewTarget {
 			gameTarget.IsComplete = 1
 		}
+		//if completeTaskData[gameTask.TaskId].RetainedTarget == 0 || completeTaskData[gameTask.TaskId].RetainedTarget == 1 {
+		//	gameTarget.RetainedTarget = roomData.RetainedTarget
+		//}
 		global.GVA_DB.Model(&task.GameTargetComplete{}).Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).Omit("create_date", "update_time", "task_id").Updates(gameTarget)
 	}
+	go s.common.PaymentRatioErrSendMsg(paymentRatio)
 	return
 }
 
+// 检测付费比例
+func (s *SyncData) DetectionPaymentRatio(taskName string, taskId int, user string, payTarget, retainedTarget int, paymentRatio map[string]string) map[string]string {
+	var tConf task.TaskConf
+	taskConf, err := tConf.GetTaskConfByTaskId(taskId)
+	if err != nil {
+		global.GVA_LOG.Error("DetectionPaymentRatio获取任务配置失败"+user, zap.Error(err))
+		return paymentRatio
+	}
+	if taskConf.PushPayRatio != 1 {
+		return paymentRatio
+	}
+
+	ratio := float64(payTarget) / float64(retainedTarget) * 100
+
+	global.GVA_LOG.Warn(fmt.Sprintf("%s付费率%2f,payTarget%d,retainedTarget%d", taskName, ratio, payTarget, paymentRatio))
+	if ratio >= 20 {
+		paymentRatio[user] += fmt.Sprintf("<font color=\"warning\"> %s</font>", taskName)
+		paymentRatio[user] += "\n"
+	}
+	return paymentRatio
+}
+
 func (s *SyncData) SelectSheepPay(date string, gameId string) (b bool, sheepPay task.SheepPay) {
 	b = false
 	global.GVA_DB.Model(&task.SheepPay{}).Where("pay_date = ?", date).Where("game_id = ?", gameId).Order("id desc").Find(&sheepPay)
@@ -1577,3 +1641,29 @@ func (s *SyncData) RemindSendOne() {
 	mobile := []string{global.GVA_CONFIG.SendUrl.TxSendMobile}
 	s.common.RemindSend(url, content, mobile)
 }
+
+func (s *SyncData) GameTaskTargetInfoPush() {
+	date := time.Now().Add(-time.Hour * 24).Format("2006-01-02")
+	s.GameTask.PushTaskToYl(date)
+	return
+}
+
+func (s *SyncData) RequestControlBackend(requestData []request2.GetGameTargetCompleteInfo) (d string, err error) {
+	//url := global.GVA_CONFIG.ExtranetDomain.Control + CreateTaskUrl
+	url := global.GVA_CONFIG.ExtranetDomain.YlControl + "/bpm_api/data_optimize"
+	requestMap := map[string]interface{}{
+		"jsonData": requestData,
+	}
+	data, code, err := utils.HttpPostReplyCode2(url, requestMap)
+	if err != nil {
+		global.GVA_LOG.Error("RequestControlBackend fail", zap.Error(err))
+	}
+	if code != 200 {
+		msg := fmt.Sprintf("status:%d,data:%s", code, string(data))
+		global.GVA_LOG.Warn(msg)
+		return string(data), errors.New(string(data))
+	}
+	msg := fmt.Sprintf("status:%d,data:%s", code, string(data))
+	global.GVA_LOG.Warn(msg)
+	return
+}

+ 9 - 11
service/task/task_conf.go

@@ -348,7 +348,7 @@ func (e *TaskConfService) JudgeOperate(taskConf task.TaskConf) (err error) {
 		return global.GVA_DB.Model(&task.TaskConf{}).Create(&taskConf).Error
 	}
 	//如果有,更新
-	return global.GVA_DB.Model(&task.TaskConf{}).Where("task_id = ?", taskConf.TaskId).Omit("task_id", "user").Updates(map[string]interface{}{"add_fee_notice": taskConf.AddFeeNotice, "simulator_type": taskConf.SimulatorType}).Error
+	return global.GVA_DB.Model(&task.TaskConf{}).Where("task_id = ?", taskConf.TaskId).Omit("task_id", "user").Updates(map[string]interface{}{"add_fee_notice": taskConf.AddFeeNotice, "simulator_type": taskConf.SimulatorType, "push_pay_ratio": taskConf.PushPayRatio}).Error
 }
 
 //删除上传脚本
@@ -399,7 +399,7 @@ func (e *TaskConfService) DeleteScript(file task.GameScriptResponse) (err error)
 }
 
 //批量删除脚本
-func (e *TaskConfService) BulkDeleteScript(ids []int) (err error)  {
+func (e *TaskConfService) BulkDeleteScript(ids []int) (err error) {
 	var total int64
 	var scriptList []task.GameScriptResponse
 
@@ -417,7 +417,7 @@ func (e *TaskConfService) BulkDeleteScript(ids []int) (err error)  {
 	keys := make([]string, len(scriptList))
 
 	//获取key数组 及task_id的map
-	for k,_ := range scriptList {
+	for k, _ := range scriptList {
 		fmt.Println(scriptList[k].Url[30:])
 		keys[k] = scriptList[k].Url[30:]
 		if taskIdMap[scriptList[k].TaskID] != 0 {
@@ -434,7 +434,7 @@ func (e *TaskConfService) BulkDeleteScript(ids []int) (err error)  {
 	}
 
 	//遍历taskIdMap 更新缓存状态
-	for k,_ := range taskIdMap {
+	for k, _ := range taskIdMap {
 		err := e.UpdateRedisCache(k)
 		if err != nil {
 			global.GVA_LOG.Info("更新脚本md5值缓存失败:" + err.Error() + time.Now().Format("2006-01-02 15:04:05"))
@@ -445,12 +445,10 @@ func (e *TaskConfService) BulkDeleteScript(ids []int) (err error)  {
 	return
 	//批量删除七牛云脚本记录
 
-
-
 }
 
 //更新缓存状态
-func (e *TaskConfService) UpdateRedisCache (taskId int) (err error) {
+func (e *TaskConfService) UpdateRedisCache(taskId int) (err error) {
 	var file response.UploadFileResponse
 	contexts := context.Background()
 	//查找合格的file
@@ -461,7 +459,7 @@ func (e *TaskConfService) UpdateRedisCache (taskId int) (err error) {
 		//删除redis缓存,并且打印日志说明
 		fmt.Println("无可用脚本,尝试删除")
 
-		err := global.GVA_REDIS.Set(contexts, key, "无数据", time.Second * 1).Err()
+		err := global.GVA_REDIS.Set(contexts, key, "无数据", time.Second*1).Err()
 		if err != nil {
 			global.GVA_LOG.Info("删除脚本md5值缓存失败:" + err.Error() + time.Now().Format("2006-01-02 15:04:05"))
 			return err
@@ -478,7 +476,7 @@ func (e *TaskConfService) UpdateRedisCache (taskId int) (err error) {
 	return err
 }
 
-func (e *TaskConfService) BulkDeleteQiNiuYunScript(keys []string) (err error)  {
+func (e *TaskConfService) BulkDeleteQiNiuYunScript(keys []string) (err error) {
 	//七牛云删除所需要的条件
 	mac := qbox.NewMac(ACCESSKEY, SECRETKEY)
 	cfg := storage.Config{
@@ -494,7 +492,7 @@ func (e *TaskConfService) BulkDeleteQiNiuYunScript(keys []string) (err error)  {
 	bucket := BUCKET
 
 	//验证keys安全性
-	for _,v := range keys {
+	for _, v := range keys {
 		//删除七牛云之前先做判断
 		if v == "" {
 			return errors.New("请传入正确的key!")
@@ -529,4 +527,4 @@ func (e *TaskConfService) BulkDeleteQiNiuYunScript(keys []string) (err error)  {
 		}
 	}
 	return err
-}
+}

+ 1 - 0
service/task/urgent_task_conf.go

@@ -23,6 +23,7 @@ func (s *UrgentTaskService) CreateUrgentTask(task1 task.UrgentTaskConf) (err err
 	var centralEntity task.CentralControlConf
 	date := time.Now().Format("2006-01-02")
 	task1.CreateDate = date
+	task1.Url = strings.Trim(task1.Url, " ")
 	err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("task_id = ? and create_date = ?", task1.TaskId, date).First(&urgentEntity).Error
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("任务已存在,请勿重复添加")

+ 1 - 0
utils/request.go

@@ -0,0 +1 @@
+package utils

+ 23 - 0
utils/requst_http.go

@@ -1,6 +1,7 @@
 package utils
 
 import (
+	"bytes"
 	"encoding/json"
 	"fmt"
 	"io"
@@ -86,6 +87,28 @@ func HttpPostReplyCode(url string, params interface{}) (result []byte, code int,
 	return
 }
 
+func HttpPostReplyCode2(url string, params interface{}) (result []byte, code int, err error) {
+	data, _ := json.Marshal(params)
+	fmt.Println(string(data))
+	resp, err := http.Post(url, "application/json", bytes.NewBuffer(data))
+	if err != nil {
+		fmt.Println("POST request failed:", err)
+		return
+	}
+	defer resp.Body.Close()
+	if err != nil {
+		return
+	}
+	code = resp.StatusCode
+	defer resp.Body.Close()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return
+	}
+	result = body
+	return
+}
+
 func HttpGetReplyCode(url string, params map[string]string) (result []byte, code int, err error) {
 	req, err := http.NewRequest("GET", url, nil)
 	if err != nil {