Просмотр исходного кода

优化异常率页面显示;新增游戏版本更新播报

倚楼听风雨 лет назад: 3
Родитель
Сommit
d68f47c5a6

+ 49 - 1
api/v1/fileManager/file_folder.go

@@ -5,16 +5,41 @@ import (
 	"go.uber.org/zap"
 	"go.uber.org/zap"
 	"log-server/global"
 	"log-server/global"
 	"log-server/model/common/response"
 	"log-server/model/common/response"
+	"log-server/model/fileManager/request"
 )
 )
 
 
 type ApiFileFolder struct {
 type ApiFileFolder struct {
 }
 }
+type IdName struct {
+	id   int
+	name string
+}
+
+func (v *ApiFileFolder) AddFileFolder(c *gin.Context) {
+	var api request.FileFolderRequest
+	_ = c.ShouldBindJSON(&api)
+	//if err := utils.Verify(api, utils.LogCodingVerify); err != nil {
+	//	response.FailWithMessage(err.Error(), c)
+	//	return
+	//}
+	//fmt.Printf("%#v\n", &api)
+	if parentId, parentName, err := ServiceFileFolder.AddFileFolder(api); err != nil {
+		global.GVA_LOG.Error("文件夹创建失败!", zap.Error(err))
+		response.FailWithMessage("文件夹创建失败,"+err.Error(), c)
+	} else {
+		idName := IdName{
+			parentId,
+			parentName,
+		}
+		response.OkWithDetailed(idName, "文件夹创建成功", c)
+	}
+}
 
 
 // GetAllTaskSimple 查询所有任务
 // GetAllTaskSimple 查询所有任务
 func (api *ApiFileFolder) GetAllTaskSimple(c *gin.Context) {
 func (api *ApiFileFolder) GetAllTaskSimple(c *gin.Context) {
 
 
 	if list, err := ServiceFileFolder.GetAllTaskSimple(); err != nil {
 	if list, err := ServiceFileFolder.GetAllTaskSimple(); err != nil {
-		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		//global.GVA_LOG.Error("获取失败!", zap.Error(err))
 		response.FailWithMessage("获取失败", c)
 		response.FailWithMessage("获取失败", c)
 	} else {
 	} else {
 		//响应结果
 		//响应结果
@@ -23,3 +48,26 @@ func (api *ApiFileFolder) GetAllTaskSimple(c *gin.Context) {
 		}, "获取成功", c)
 		}, "获取成功", c)
 	}
 	}
 }
 }
+
+// GetFolderFileList 获取当前父文件夹下所有的子文件夹和文件
+func (v *ApiFileFolder) GetFolderFileList(c *gin.Context) {
+	//global.GVA_LOG.Info("api----GetComputerList----strat")
+	var paramsInfo request.FileFolderPageRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	/*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}*/
+	list, total, err := ServiceFileFolder.FileList(c, paramsInfo.FileFolder, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(response.PageResult{
+			List:     list,
+			Total:    total,
+			Page:     paramsInfo.Page,
+			PageSize: paramsInfo.PageSize,
+		}, "获取成功", c)
+	}
+}

+ 112 - 104
initialize/timer.go

@@ -3,6 +3,7 @@ package initialize
 import (
 import (
 	"fmt"
 	"fmt"
 	"log-server/service/dataStatistics"
 	"log-server/service/dataStatistics"
+	"log-server/service/fileManager"
 	"log-server/service/log"
 	"log-server/service/log"
 	"log-server/service/rentComputer"
 	"log-server/service/rentComputer"
 	"log-server/service/system"
 	"log-server/service/system"
@@ -20,6 +21,7 @@ var serviceRentComputer = new(rentComputer.ServiceRentComputer)
 var serviceWeChatScannerApi = new(dataStatistics.ServiceWeChatScannerApi)
 var serviceWeChatScannerApi = new(dataStatistics.ServiceWeChatScannerApi)
 var serviceDataAbnormalRate = new(dataStatistics.ServiceDataAbnormalRate)
 var serviceDataAbnormalRate = new(dataStatistics.ServiceDataAbnormalRate)
 var serviceWeChatScannerDetailed = new(dataStatistics.ServiceWeChatScannerDetailed)
 var serviceWeChatScannerDetailed = new(dataStatistics.ServiceWeChatScannerDetailed)
+var serviceDownLoadUrl = new(fileManager.ServiceDownLoadUrl)
 var robotService = new(system.RobotService)
 var robotService = new(system.RobotService)
 
 
 func Timer() {
 func Timer() {
@@ -39,62 +41,62 @@ func Timer() {
 		}
 		}
 	}
 	}
 
 
-	// 定时更新前一天的统计数据
-	_, err := global.GVA_Timer.AddTaskByFunc("StatisticsLog", "2 8 5 * * * ", serviceStatisticsLog.CreateStatisticsLog)
-	if err != nil {
-		fmt.Println("add taskCode timer error:", err)
-	}
-
-	//定时同步电脑相关的统计数据
-	_, err = global.GVA_Timer.AddTaskByFunc("CreateComputerStatisticsData", "40 9,19,29,39,49,59 7-23 * * * ", serviceStatisticsLog.CreateComputerStatisticsData)
-	if err != nil {
-		fmt.Println("add CreateComputerStatisticsData timer error:", err)
-	}
-	// 同步游戏相关的统计数据
-	_, err = global.GVA_Timer.AddTaskByFunc("TodayCreateStatisticsGameInfoLog", "2 8,18,28,38,48,58 6-23 * * * ", serviceStatisticsLog.TodayCreateStatisticsGameInfoLog)
-	if err != nil {
-		fmt.Println("add TodayCreateStatisticsGameInfoLog timer error:", err)
-	}
-	// 同步任务统计数据
-	_, err = global.GVA_Timer.AddTaskByFunc("TaskStatisticsDataCache", "20 0/3 6-23 * * * ", serviceStatisticsLog.TaskStatisticsDataCache)
-	if err != nil {
-		fmt.Println("add TaskStatisticsDataCache timer error:", err)
-	}
-	// 重试失败数据
-	_, err = global.GVA_Timer.AddTaskByFunc("createFailLog", "2 5,15,25,35,45,55 6-23 * * * ", ServiceLogList.CreateFailLog)
-	if err != nil {
-		fmt.Println("everyDayResetStatisticsCache timer error:", err)
-	}
-	// 定时检查电脑上报
-	_, err = global.GVA_Timer.AddTaskByFunc("RegularCheckPc", "2 57 8-23 * * * ", serviceStatisticsLog.RegularCheckPc)
-	if err != nil {
-		fmt.Println("RegularCheckPc timer error:", err)
-	}
-	// 新建日志表
-	_, err = global.GVA_Timer.AddTaskByFunc("RegularCreateLogingTable", "2 1 19 20 * * ", ServiceLogList.RegularCreateLogingTable)
-	if err != nil {
-		fmt.Println("add RegularCreateLogingTable timer error:", err)
-	}
-	// 定时删缓存
-	_, err = global.GVA_Timer.AddTaskByFunc("RegularDelCheckData", "2 33 11 * * *", serviceStatisticsLog.RegularDelCheckData)
-	if err != nil {
-		fmt.Println("add RegularDelCheckData timer error:", err)
-	}
-	//定时添加任务
-	_, err = global.GVA_Timer.AddTaskByFunc("EveryDaySyncTaskData", "30 22 21 * * *", syncData.EveryDaySyncTaskData)
-	if err != nil {
-		fmt.Println("add EveryDaySyncTaskData timer error:", err)
-	}
-	//同步任务数据
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncTaskData", "2 0/3 1-23 * * *", syncData.SyncTaskData)
-	if err != nil {
-		fmt.Println("add SyncTaskData timer error:", err)
-	}
-	// 数优任务统计
-	_, err = global.GVA_Timer.AddTaskByFunc("DayTargetDataStatistics", "40 2 5 * * *", syncData.DayTargetDataStatistics)
-	if err != nil {
-		fmt.Println("add DayTargetDataStatistics timer error:", err)
-	}
+	//// 定时更新前一天的统计数据
+	//_, err := global.GVA_Timer.AddTaskByFunc("StatisticsLog", "2 8 5 * * * ", serviceStatisticsLog.CreateStatisticsLog)
+	//if err != nil {
+	//	fmt.Println("add taskCode timer error:", err)
+	//}
+	//
+	////定时同步电脑相关的统计数据
+	//_, err = global.GVA_Timer.AddTaskByFunc("CreateComputerStatisticsData", "40 9,19,29,39,49,59 7-23 * * * ", serviceStatisticsLog.CreateComputerStatisticsData)
+	//if err != nil {
+	//	fmt.Println("add CreateComputerStatisticsData timer error:", err)
+	//}
+	//// 同步游戏相关的统计数据
+	//_, err = global.GVA_Timer.AddTaskByFunc("TodayCreateStatisticsGameInfoLog", "2 8,18,28,38,48,58 6-23 * * * ", serviceStatisticsLog.TodayCreateStatisticsGameInfoLog)
+	//if err != nil {
+	//	fmt.Println("add TodayCreateStatisticsGameInfoLog timer error:", err)
+	//}
+	//// 同步任务统计数据
+	//_, err = global.GVA_Timer.AddTaskByFunc("TaskStatisticsDataCache", "20 0/3 6-23 * * * ", serviceStatisticsLog.TaskStatisticsDataCache)
+	//if err != nil {
+	//	fmt.Println("add TaskStatisticsDataCache timer error:", err)
+	//}
+	//// 重试失败数据
+	//_, err = global.GVA_Timer.AddTaskByFunc("createFailLog", "2 5,15,25,35,45,55 6-23 * * * ", ServiceLogList.CreateFailLog)
+	//if err != nil {
+	//	fmt.Println("everyDayResetStatisticsCache timer error:", err)
+	//}
+	//// 定时检查电脑上报
+	//_, err = global.GVA_Timer.AddTaskByFunc("RegularCheckPc", "2 57 8-23 * * * ", serviceStatisticsLog.RegularCheckPc)
+	//if err != nil {
+	//	fmt.Println("RegularCheckPc timer error:", err)
+	//}
+	//// 新建日志表
+	//_, err = global.GVA_Timer.AddTaskByFunc("RegularCreateLogingTable", "2 1 19 20 * * ", ServiceLogList.RegularCreateLogingTable)
+	//if err != nil {
+	//	fmt.Println("add RegularCreateLogingTable timer error:", err)
+	//}
+	//// 定时删缓存
+	//_, err = global.GVA_Timer.AddTaskByFunc("RegularDelCheckData", "2 33 11 * * *", serviceStatisticsLog.RegularDelCheckData)
+	//if err != nil {
+	//	fmt.Println("add RegularDelCheckData timer error:", err)
+	//}
+	////定时添加任务
+	//_, err = global.GVA_Timer.AddTaskByFunc("EveryDaySyncTaskData", "30 22 21 * * *", syncData.EveryDaySyncTaskData)
+	//if err != nil {
+	//	fmt.Println("add EveryDaySyncTaskData timer error:", err)
+	//}
+	////同步任务数据
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncTaskData", "2 0/3 1-23 * * *", syncData.SyncTaskData)
+	//if err != nil {
+	//	fmt.Println("add SyncTaskData timer error:", err)
+	//}
+	//// 数优任务统计
+	//_, err = global.GVA_Timer.AddTaskByFunc("DayTargetDataStatistics", "40 2 5 * * *", syncData.DayTargetDataStatistics)
+	//if err != nil {
+	//	fmt.Println("add DayTargetDataStatistics timer error:", err)
+	//}
 
 
 	//// 定时检查是否有电脑到期,修改租机状态@every 1s
 	//// 定时检查是否有电脑到期,修改租机状态@every 1s
 	//_, err = global.GVA_Timer.AddTaskByFunc("CheckIsExpire", "0 0/5 * * * *", serviceRentComputer.CheckIsExpire)
 	//_, err = global.GVA_Timer.AddTaskByFunc("CheckIsExpire", "0 0/5 * * * *", serviceRentComputer.CheckIsExpire)
@@ -109,61 +111,67 @@ func Timer() {
 
 
 	//定时获取扫码平台余额,每小时执行一次
 	//定时获取扫码平台余额,每小时执行一次
 	//_, err = global.GVA_Timer.AddTaskByFunc("SyncGetWeChatScannerBalance", "0 58 * * * *", serviceWeChatScannerApi.SyncGetWeChatScannerBalance)
 	//_, err = global.GVA_Timer.AddTaskByFunc("SyncGetWeChatScannerBalance", "0 58 * * * *", serviceWeChatScannerApi.SyncGetWeChatScannerBalance)
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncGetWeChatScannerBalance", "0 58 * * * *", serviceWeChatScannerApi.SyncGetWeChatScannerBalance)
-	if err != nil {
-		fmt.Println("add SyncGetWeChatScannerBalance timer error:", err)
-	}
-	//定时更新异常率
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncAbnormalRateByBatch", "0 1,31 * * * *", serviceDataAbnormalRate.SyncAbnormalRateByBatch)
-	if err != nil {
-		fmt.Println("add SyncAbnormalRateByBatch timer error:", err)
-	}
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncGetWeChatScannerBalance", "0 58 * * * *", serviceWeChatScannerApi.SyncGetWeChatScannerBalance)
+	//if err != nil {
+	//	fmt.Println("add SyncGetWeChatScannerBalance timer error:", err)
+	//}
+	////定时更新异常率
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncAbnormalRateByBatch", "0 1,31 * * * *", serviceDataAbnormalRate.SyncAbnormalRateByBatch)
+	//if err != nil {
+	//	fmt.Println("add SyncAbnormalRateByBatch timer error:", err)
+	//}
 
 
 	//定时更新当日微信扫码订单列表
 	//定时更新当日微信扫码订单列表
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncTodayWeChatScannerDetailed", "0 3,33 * * * *", serviceWeChatScannerDetailed.SyncTodayWeChatScannerDetailed)
-	if err != nil {
-		fmt.Println("add SyncTodayWeChatScannerDetailed timer error:", err)
-	}
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncTodayWeChatScannerDetailed", "0 3,33 * * * *", serviceWeChatScannerDetailed.SyncTodayWeChatScannerDetailed)
+	//if err != nil {
+	//	fmt.Println("add SyncTodayWeChatScannerDetailed timer error:", err)
+	//}
 
 
 	//0点更新昨日微信扫码订单列表
 	//0点更新昨日微信扫码订单列表
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncYesterdayWeChatScannerDetailed", "1 1 0 * * *", serviceWeChatScannerDetailed.SyncYesterdayWeChatScannerDetailed)
-	if err != nil {
-		fmt.Println("add SyncYesterdayWeChatScannerDetailed timer error:", err)
-	}
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncYesterdayWeChatScannerDetailed", "1 1 0 * * *", serviceWeChatScannerDetailed.SyncYesterdayWeChatScannerDetailed)
+	//if err != nil {
+	//	fmt.Println("add SyncYesterdayWeChatScannerDetailed timer error:", err)
+	//}
 
 
 	//半小时同步一次机房设备信息,播报是否有异常
 	//半小时同步一次机房设备信息,播报是否有异常
-	_, err = global.GVA_Timer.AddTaskByFunc("SyncJfDevicesMessage", "0 0,30 * * * *", robotService.SyncJfDevicesMessage)
-	if err != nil {
-		fmt.Println("add SyncJfDevicesMessage timer error:", err)
-	}
-
-	// 活跃定时推送消息
-	_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "20 29,59 8-21 * * *", syncData.TaskMsgSend)
-	if err != nil {
-		fmt.Println("add TaskMsgSend timer error:", err)
-	}
-
-	// 活跃定时推送消息
-	_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "20 0/10 22-23 * * *", syncData.TaskMsgSend)
-	if err != nil {
-		fmt.Println("add TaskMsgSend timer error:", err)
-	}
-
-	// 付费定时推送消息
-	_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "40 15,30,45,59 8-21 * * *", syncData.TaskFreeMsgSend)
-	if err != nil {
-		fmt.Println("add TaskFreeMsgSend timer error:", err)
-	}
-
-	// 付费定时推送消息
-	_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "40 0/5 22-23 * * *", syncData.TaskFreeMsgSend)
-	if err != nil {
-		fmt.Println("add TaskFreeMsgSend timer error:", err)
-	}
+	//_, err = global.GVA_Timer.AddTaskByFunc("SyncJfDevicesMessage", "0 0,30 * * * *", robotService.SyncJfDevicesMessage)
+	//if err != nil {
+	//	fmt.Println("add SyncJfDevicesMessage timer error:", err)
+	//}
+	//
+	//// 活跃定时推送消息
+	//_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "20 29,59 8-21 * * *", syncData.TaskMsgSend)
+	//if err != nil {
+	//	fmt.Println("add TaskMsgSend timer error:", err)
+	//}
+	//
+	//// 活跃定时推送消息
+	//_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "20 0/10 22-23 * * *", syncData.TaskMsgSend)
+	//if err != nil {
+	//	fmt.Println("add TaskMsgSend timer error:", err)
+	//}
+	//
+	//// 付费定时推送消息
+	//_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "40 15,30,45,59 8-21 * * *", syncData.TaskFreeMsgSend)
+	//if err != nil {
+	//	fmt.Println("add TaskFreeMsgSend timer error:", err)
+	//}
+	//
+	//// 付费定时推送消息
+	//_, err = global.GVA_Timer.AddTaskByFunc("TaskMsgSend", "40 0/5 22-23 * * *", syncData.TaskFreeMsgSend)
+	//if err != nil {
+	//	fmt.Println("add TaskFreeMsgSend timer error:", err)
+	//}
+	//
+	//// 23起检测任务完成情况
+	//_, err = global.GVA_Timer.AddTaskByFunc("CheckTaskCompletedInfo", "10 0/4 23 * * *", syncData.CheckTaskCompletedInfo)
+	//if err != nil {
+	//	fmt.Println("add CheckTaskCompletedInfo timer error:", err)
+	//}
 
 
-	// 23起检测任务完成情况
-	_, err = global.GVA_Timer.AddTaskByFunc("CheckTaskCompletedInfo", "10 0/4 23 * * *", syncData.CheckTaskCompletedInfo)
+	//定时更新游戏版本号和链接
+	_, err := global.GVA_Timer.AddTaskByFunc("UpdateGameVersion", "0 3/10 * * * *", serviceDownLoadUrl.UpdateGameVersion)
 	if err != nil {
 	if err != nil {
-		fmt.Println("add CheckTaskCompletedInfo timer error:", err)
+		fmt.Println("add UpdateGameVersion timer error:", err)
 	}
 	}
 }
 }

+ 19 - 0
model/fileManager/download_url.go

@@ -0,0 +1,19 @@
+package fileManager
+
+// DownLoadUrl 游戏下载链接记录表
+type DownLoadUrl struct {
+	Id                 int    `json:"id"`
+	CreateTime         string `json:"create_time"`          // 创建时间
+	UpdateTime         string `json:"update_time"`          // 更新时间
+	TaskId             int    `json:"task_id"`              //关联任务id,默认为0,表示无关联
+	PackageUrl         string `json:"package_url"`          //打包工具的游戏下载链接
+	PackageVersionCode int    `json:"package_version_code"` //打包工具的游戏版本号(int型)
+	AppUrl             string `json:"app_url"`              //小绵羊app里的游戏下载链接
+	AppVersionName     string `json:"app_version_name"`     //小绵羊app里的游戏版本号名
+	AppFlag            int    `json:"app_flag"`             //小绵羊app里的强更标志 2:非强更 1:强更,默认为2
+	PushFlag           int    `json:"push_flag"`            //是否已推送至微信群 0:否 1:是,默认为1
+}
+
+func (DownLoadUrl) TableName() string {
+	return "download_url"
+}

+ 2 - 2
model/fileManager/file_folder.go

@@ -2,10 +2,10 @@ package fileManager
 
 
 // FileFolder 文件夹
 // FileFolder 文件夹
 type FileFolder struct {
 type FileFolder struct {
-	Id         uint   `json:"id"`
+	Id         int    `json:"id"`
 	CreateTime string `json:"create_time"` // 创建时间
 	CreateTime string `json:"create_time"` // 创建时间
 	UpdateTime string `json:"update_time"` // 更新时间
 	UpdateTime string `json:"update_time"` // 更新时间
-	Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
+	Name       string `json:""`            //文件夹名称,通常为'任务ID_任务名称'
 	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
 	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
 	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
 	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
 }
 }

+ 11 - 0
model/fileManager/request/file_folder.go

@@ -1,5 +1,9 @@
 package request
 package request
 
 
+import (
+	"log-server/model/fileManager"
+)
+
 type FileFolderRequest struct {
 type FileFolderRequest struct {
 	Id         uint   `json:"id"`
 	Id         uint   `json:"id"`
 	CreateTime string `json:"create_time"` // 创建时间
 	CreateTime string `json:"create_time"` // 创建时间
@@ -8,3 +12,10 @@ type FileFolderRequest struct {
 	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
 	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
 	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
 	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
 }
 }
+
+type FileFolderPageRequest struct {
+	fileManager.FileFolder
+	PageInfo
+	OrderKey string `json:"orderKey"` // 排序
+	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+}

+ 3 - 1
router/fileManager/file_folder.go

@@ -12,6 +12,8 @@ func (e *FileFolderRouter) InitFileFolderRouter(Router *gin.RouterGroup) {
 	excelRouter := Router.Group("fileManager")
 	excelRouter := Router.Group("fileManager")
 	api := v1.ApiGroupApp.FileManagerGroup.ApiFileFolder
 	api := v1.ApiGroupApp.FileManagerGroup.ApiFileFolder
 	{
 	{
-		excelRouter.POST("getAllTaskSimple", api.GetAllTaskSimple) //查询记录
+		excelRouter.POST("getAllTaskSimple", api.GetAllTaskSimple)   //查询记录
+		excelRouter.POST("addFileFolder", api.AddFileFolder)         //新建文件夹
+		excelRouter.POST("getFolderFileList", api.GetFolderFileList) //新建文件夹
 	}
 	}
 }
 }

+ 186 - 0
service/fileManager/download_url.go

@@ -0,0 +1,186 @@
+package fileManager
+
+import (
+	"errors"
+	"fmt"
+	"github.com/bitly/go-simplejson"
+	"go.uber.org/zap"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/fileManager"
+	"log-server/model/task"
+	"log-server/service/system"
+	"log-server/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type ServiceDownLoadUrl struct {
+}
+
+var robotService = new(system.RobotService)
+
+// UpdateGameVersion 定时更新游戏版本号和链接
+func (s *ServiceDownLoadUrl) UpdateGameVersion() {
+	nowTime := time.Now().Format("2006-01-02 15:04:05")
+	taskList, err := s.GetAllTaskByRun()
+	if err != nil {
+		global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,查询所有在运行的任务失败:"+nowTime, zap.Error(err))
+		return
+	}
+	content := ""
+	var directorName string
+	for _, v := range taskList {
+		global.GVA_LOG.Info(v.GameIdXmy + v.TaskName)
+		if v.GameIdXmy == "" {
+			continue
+		}
+		result, err := s.GetGameDownLoadUrlAndVersion(v.GameIdXmy)
+		if err != nil {
+			return
+		}
+		dataJson, _ := simplejson.NewJson(result)
+		code, _ := dataJson.Get("code").Int()
+		//global.GVA_LOG.Info(strconv.Itoa(code))
+		//msg, _ := dataJson.Get("msg").String()
+		//global.GVA_LOG.Info(msg)
+		if code != 0 {
+			continue
+		}
+		packageUrl, _ := dataJson.Get("data").Get("package").Get("download_url").String()
+		//global.GVA_LOG.Info(packageUrl)
+		packageVersionCode, _ := dataJson.Get("data").Get("package").Get("version_code").Int()
+		//global.GVA_LOG.Info(strconv.Itoa(packageVersionCode))
+
+		appUrl, _ := dataJson.Get("data").Get("app").Get("download_url").String()
+		//global.GVA_LOG.Info(appUrl)
+		appVersionName, _ := dataJson.Get("data").Get("app").Get("version_name").String()
+		//global.GVA_LOG.Info(appVersionName)
+		appFlag, _ := dataJson.Get("data").Get("app").Get("flag").Int()
+		//global.GVA_LOG.Info(strconv.Itoa(appFlag))
+
+		one := new(fileManager.DownLoadUrl)
+		one.PackageUrl = packageUrl
+		one.PackageVersionCode = packageVersionCode
+		one.AppUrl = appUrl
+		one.AppVersionName = appVersionName
+		one.AppFlag = appFlag
+		one.TaskId = v.TaskId
+		one.CreateTime = time.Now().Format("2006-01-02 15:04:05")
+		one.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
+		//先查询是否存在,存在则对比版本号与链接;不存在则插入
+		old := fileManager.DownLoadUrl{}
+		var keyWord string
+		if !errors.Is(global.GVA_DB.Model(&fileManager.DownLoadUrl{}).Where("task_id = ?", v.TaskId).First(&old).Error, gorm.ErrRecordNotFound) {
+			flagPackage := false
+			if one.PackageVersionCode > old.PackageVersionCode {
+				flagPackage = true
+				//global.GVA_LOG.Info("package有新版本")
+				if one.PackageUrl != "" {
+					keyWord += "在打包平台有新版本: " + one.PackageUrl + ";<font color=\"warning\">更新大概率为强制更新</font>;"
+					//keyWord += "在打包平台有新版本: [点击下载](" + one.PackageUrl + ");"
+				}
+			}
+			flagApp := false
+			sv1 := s.StrsToSlice(one.AppVersionName)
+			sv2 := s.StrsToSlice(old.AppVersionName)
+			s1Appended, s2Appended := s.ApeendZreo(sv1, sv2)
+			for i := 0; i < len(s1Appended); i++ {
+				if s1Appended[i] > s2Appended[i] {
+					flagApp = true
+					//global.GVA_LOG.Info("app有新版本")
+					if one.AppUrl != "" {
+						keyWord += "在小绵羊APP有新版本: " + one.AppUrl + ";"
+						if one.AppFlag == 1 {
+							global.GVA_LOG.Info("游戏有强更")
+							keyWord += "<font color=\"warning\">更新可能为强制更新</font>;"
+						}
+					}
+					break
+				}
+			}
+			if flagPackage == true || flagApp == true {
+				err = global.GVA_DB.Model(&fileManager.DownLoadUrl{}).Where("task_id = ?", v.TaskId).Updates(one).Error
+			}
+			if err != nil {
+				global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,执行数据库操作失败:"+nowTime, zap.Error(err))
+				return
+			}
+			//播报内容
+			if keyWord != "" {
+				if directorName != v.User {
+					content += ">#### **" + v.User + "**\n " + strconv.Itoa(v.TaskId) + " " + v.TaskName + keyWord + "\n"
+				} else {
+					content += strconv.Itoa(v.TaskId) + " " + v.TaskName + keyWord + "\n"
+				}
+				directorName = v.User
+			}
+		} else {
+			err = global.GVA_DB.Create(&one).Error
+		}
+		if err != nil {
+			global.GVA_LOG.Error("定时更新游戏版本号和链接执行失败,执行数据库操作失败:"+nowTime, zap.Error(err))
+			return
+		}
+	}
+	if content != "" {
+		content = ">#### **【游戏更新】预警** (" + nowTime + "):\n" + content
+		//global.GVA_LOG.Info(content)
+		url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
+		_, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
+		url2 := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
+		_, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url2, content)
+	}
+}
+
+// GetAllTaskByRun 查询所有在运行的任务
+func (s *ServiceDownLoadUrl) GetAllTaskByRun() (list []task.GameTask, err error) {
+	var taskList []task.GameTask
+	db := global.GVA_DB.Model(&task.GameTask{})
+	db.Where("status = 1")
+	err = db.Order("user").Find(&taskList).Error
+	return taskList, err
+}
+
+// GetGameDownLoadUrlAndVersion 获取游戏版本和下载链接
+func (s *ServiceDownLoadUrl) GetGameDownLoadUrlAndVersion(xmyId string) (result []byte, err error) {
+	url := "http://rtd.kfzs.com/get_version.php"
+	params := map[string]string{
+		"game_id": xmyId,
+	}
+	result, err = utils.HttpGet(url, params)
+	return
+}
+
+// ApeendZreo 补全切片
+func (s *ServiceDownLoadUrl) ApeendZreo(s1, s2 []string) ([]string, []string) {
+	var count int
+	if len(s1) > len(s2) {
+		count = len(s1) - len(s2)
+		for i := 0; i < count; i++ {
+			s2 = append(s2, "0")
+		}
+	}
+	if len(s1) < len(s2) {
+		count = len(s2) - len(s1)
+		for i := 0; i < count; i++ {
+			s1 = append(s1, "0")
+		}
+	}
+
+	return s1, s2
+}
+
+func (s *ServiceDownLoadUrl) StrsToSlice(version string) []string {
+	return strings.Split(version, ".")
+}
+
+func (s *ServiceDownLoadUrl) StrToInt64(str string) int64 {
+	res, err := strconv.Atoi(str)
+	if err != nil {
+		fmt.Println("Invalid Number string")
+		return -1
+	}
+	return int64(res)
+}

+ 1 - 0
service/fileManager/enter.go

@@ -3,6 +3,7 @@ package fileManager
 type ServiceGroup struct {
 type ServiceGroup struct {
 	// Code generated by log-server Begin; DO NOT EDIT.
 	// Code generated by log-server Begin; DO NOT EDIT.
 	ServiceFileFolder
 	ServiceFileFolder
+	ServiceDownLoadUrl
 	//ServiceRentComputerShop
 	//ServiceRentComputerShop
 	//ServiceRentSetMeal
 	//ServiceRentSetMeal
 	//ServiceRentComputerLedger
 	//ServiceRentComputerLedger

+ 34 - 16
service/fileManager/file_folder.go

@@ -16,13 +16,11 @@ import (
 type ServiceFileFolder struct {
 type ServiceFileFolder struct {
 }
 }
 
 
-// fileList 获取当前父文件夹下所有的子文件夹和文件
-func (s *ServiceFileFolder) fileList(ctx context.Context, api fileManager.FileFolder, info request.PageInfo, order string, desc bool) (interface{}, int64, error) {
+// FileList 获取当前父文件夹下所有的子文件夹和文件
+func (s *ServiceFileFolder) FileList(ctx context.Context, api fileManager.FileFolder, info request.PageInfo, order string, desc bool) (interface{}, int64, error) {
 	//开始查询当前父文件夹下的所有文件夹(目录)
 	//开始查询当前父文件夹下的所有文件夹(目录)
 	db := global.GVA_DB.Model(&fileManager.FileFolder{})
 	db := global.GVA_DB.Model(&fileManager.FileFolder{})
-	if api.ParentId != 0 {
-		db = db.Where("parent_id = ?", api.ParentId)
-	}
+	db = db.Where("parent_id = ?", api.ParentId)
 	var total int64
 	var total int64
 	err := db.Count(&total).Error
 	err := db.Count(&total).Error
 	if err != nil {
 	if err != nil {
@@ -38,7 +36,7 @@ func (s *ServiceFileFolder) fileList(ctx context.Context, api fileManager.FileFo
 		// 设置有效排序key 防止sql注入
 		// 设置有效排序key 防止sql注入
 		// 感谢 Tom4t0 提交漏洞信息
 		// 感谢 Tom4t0 提交漏洞信息
 		orderMap := make(map[string]bool, 3)
 		orderMap := make(map[string]bool, 3)
-		orderMap["pc_num"] = true
+		orderMap["name"] = true
 		//orderMap["game_id"] = true
 		//orderMap["game_id"] = true
 		//orderMap["operator"] = true
 		//orderMap["operator"] = true
 		if orderMap[order] {
 		if orderMap[order] {
@@ -53,7 +51,7 @@ func (s *ServiceFileFolder) fileList(ctx context.Context, api fileManager.FileFo
 		}
 		}
 		err = db.Order(OrderStr).Find(&folderListRes).Error
 		err = db.Order(OrderStr).Find(&folderListRes).Error
 	} else {
 	} else {
-		err = db.Order("id").Find(&folderListRes).Error
+		err = db.Order("name").Find(&folderListRes).Error
 	}
 	}
 	if err != nil {
 	if err != nil {
 		return nil, 0, err
 		return nil, 0, err
@@ -107,15 +105,9 @@ func (s *ServiceFileFolder) fileList(ctx context.Context, api fileManager.FileFo
 //	return total
 //	return total
 //}
 //}
 
 
-func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderRequest) (err error) {
-	//Id         uint   `json:"id"`
-	//CreateTime string `json:"create_time"` // 创建时间
-	//UpdateTime string `json:"update_time"` // 更新时间
-	//Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
-	//ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
-	//TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
+func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderRequest) (parentId int, parentName string, err error) {
 	if !errors.Is(global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&fileManager.FileFolder{}).Error, gorm.ErrRecordNotFound) {
 	if !errors.Is(global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&fileManager.FileFolder{}).Error, gorm.ErrRecordNotFound) {
-		return errors.New("文件夹已存在")
+		return requestFolder.ParentId, requestFolder.Name, errors.New("文件夹已存在")
 	}
 	}
 	folder := new(fileManager.FileFolder)
 	folder := new(fileManager.FileFolder)
 	folder.Name = requestFolder.Name
 	folder.Name = requestFolder.Name
@@ -123,7 +115,33 @@ func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderReques
 	folder.TaskId = requestFolder.TaskId
 	folder.TaskId = requestFolder.TaskId
 	folder.CreateTime = time.Now().Format("2006-01-02 15:04:05")
 	folder.CreateTime = time.Now().Format("2006-01-02 15:04:05")
 	folder.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
 	folder.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
-	return global.GVA_DB.Create(&folder).Error
+	err = global.GVA_DB.Create(&folder).Error
+	if err != nil {
+		return requestFolder.ParentId, requestFolder.Name, err
+	}
+	//查询刚刚创建文件夹的id
+	insertFolder := fileManager.FileFolder{}
+	err = global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&insertFolder).Error
+	if err != nil {
+		return requestFolder.ParentId, requestFolder.Name, err
+	}
+	//判断如果是与任务相关联,则默认创建脚本、镜像、游戏包三个文件夹
+	folderDefaultList := []string{"脚本", "镜像", "apk"}
+	if requestFolder.TaskId != 0 {
+		for _, name := range folderDefaultList {
+			one := new(fileManager.FileFolder)
+			one.Name = name
+			one.ParentId = insertFolder.Id
+			one.TaskId = 0
+			one.CreateTime = time.Now().Format("2006-01-02 15:04:05")
+			one.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
+			err = global.GVA_DB.Create(&one).Error
+			if err != nil {
+				return requestFolder.ParentId, requestFolder.Name, err
+			}
+		}
+	}
+	return insertFolder.Id, insertFolder.Name, err
 }
 }
 
 
 // GetAllTaskSimple 查询所有任务
 // GetAllTaskSimple 查询所有任务