Procházet zdrojové kódy

ip异常播报分支合并

maker před 2 roky
rodič
revize
0cbfaf32da

+ 30 - 0
api/v1/fileManager/file_qiniu.go

@@ -44,6 +44,24 @@ func (v *ApiFileQiniu) GetQiniuToken(c *gin.Context) {
 	response.OkWithDetailed(data, "获取七牛上传TOKEN成功", c)
 }
 
+// GetMirrorDownloadByTaskId 根据任务id获取最新镜像下载链接
+func (v *ApiFileQiniu) GetMirrorDownloadByTaskId(c *gin.Context) {
+	//var paramsInfo request.FileQiniuRequest
+	//_ = c.ShouldBindJSON(&paramsInfo)
+	//global.GVA_LOG.Warn(strconv.Itoa(paramsInfo.TaskId))
+	taskId := c.Query("task_id")
+	//global.GVA_LOG.Warn(taskId)
+	//if taskId == "" {
+	//	response.FailWithMessage("获取失败,参数不正确", c)
+	//}
+	if data, err := ServiceFileQiniu.GetMirrorDownloadByTaskId(taskId); err != nil {
+		//global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败,"+err.Error(), c)
+	} else {
+		response.OkWithDetailed(data, "获取成功", c)
+	}
+}
+
 // DeleteQiniuFile 删除单个文件
 func (v *ApiFileQiniu) DeleteQiniuFile(c *gin.Context) {
 	var paramsInfo request.FileQiniuRequest
@@ -79,3 +97,15 @@ func (v *ApiFileQiniu) RenameQiniuFileAndRecord(c *gin.Context) {
 		response.OkWithMessage("文件重命名成功", c)
 	}
 }
+
+// UpdateMirrorPushPolicy 修改镜像更新策略
+func (v *ApiFileQiniu) UpdateMirrorPushPolicy(c *gin.Context) {
+	var paramsInfo request.FileQiniuRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if err := ServiceFileQiniu.UpdateMirrorPushPolicy(paramsInfo); err != nil {
+		global.GVA_LOG.Error("修改镜像更新策略失败!", zap.Error(err))
+		response.FailWithMessage("修改镜像更新策略失败, "+err.Error(), c)
+	} else {
+		response.OkWithMessage("修改镜像更新策略成功", c)
+	}
+}

+ 6 - 0
initialize/timer.go

@@ -24,6 +24,7 @@ var serviceWeChatScannerDetailed = new(dataStatistics.ServiceWeChatScannerDetail
 var serviceDownLoadUrl = new(fileManager.ServiceDownLoadUrl)
 var robotService = new(system.RobotService)
 var ServiceRegularTask = new(task.ServiceRegularTask)
+var serviceFileQiniu = new(fileManager.ServiceFileQiniu)
 
 func Timer() {
 	if global.GVA_CONFIG.Timer.Start {
@@ -204,4 +205,9 @@ func Timer() {
 	if err != nil {
 		fmt.Println("add SyncIPMessage timer error:", err)
 	}
+	//定时查看延迟更新的镜像是否到期
+	_, err = global.GVA_Timer.AddTaskByFunc("CheckPushTime", "35 0/2 * * * *", serviceFileQiniu.CheckPushTime)
+	if err != nil {
+		fmt.Println("add CheckPushTime timer error:", err)
+	}
 }

+ 4 - 0
model/fileManager/file_qiniu.go

@@ -13,6 +13,10 @@ type FileQiniu struct {
 	QiniuKey     string `json:"qiniu_key"`     //七牛云key,方便删除文件
 	QiniuHash    string `json:"qiniu_hash"`    //七牛云hash
 	FileType     int    `json:"file_type"`     //文件类型
+	MD5          string `json:"md5"`           //文件MD5值
+	PushPolicy   int    `json:"push_policy"`   //更新推送策略
+	PushTime     string `json:"push_time"`     //更新推送时间
+
 	//文件类型
 	/**
 	  {

+ 3 - 0
model/fileManager/request/file_qiniu.go

@@ -15,4 +15,7 @@ type FileQiniuRequest struct {
 	QiniuHash    string `json:"qiniu_hash"`     //七牛云hash
 	FileType     int    `json:"file_type"`      //文件类型
 	FileTypeName string `json:"file_type_name"` //类型名
+	MD5          string `json:"md5"`            //文件MD5值
+	PushPolicy   int    `json:"push_policy"`    //更新推送策略
+	PushTime     string `json:"push_time"`      //更新推送时间
 }

+ 15 - 0
model/fileManager/response/file_qiniu.go

@@ -12,4 +12,19 @@ type FileQiniuResponse struct {
 	QiniuKey     string `json:"qiniu_key"`     //七牛云key,方便删除文件
 	QiniuHash    string `json:"qiniu_hash"`    //七牛云hash
 	FileType     int    `json:"file_type"`     //文件类型
+	MD5          string `json:"md5"`           //文件MD5值
+	PushPolicy   int    `json:"push_policy"`   //更新推送策略
+	PushTime     string `json:"push_time"`     //更新推送时间
+}
+
+type QiniuMirrorMessage struct {
+	//CreateTime   string `json:"create_time"`   // 创建时间
+	TaskId       int    `json:"task_id"`       //关联任务id,默认为0
+	FileName     string `json:"file_name"`     //文件名称
+	FileVersion  int64  `json:"file_version"`  //文件版本
+	QiniuAddress string `json:"qiniu_address"` //七牛云文件地址
+	QiniuHash    string `json:"qiniu_hash"`    //七牛云hash
+	MD5          string `json:"md5"`           //文件MD5值
+	//PushPolicy   int    `json:"push_policy"`   //更新推送策略
+	//PushTime     string `json:"push_time"`     //更新推送时间
 }

+ 8 - 7
router/fileManager/file_qiniu.go

@@ -12,12 +12,13 @@ func (e *FileQiniuRouter) InitFileQiniuRouter(Router *gin.RouterGroup) {
 	excelRouter := Router.Group("fileManager")
 	api := v1.ApiGroupApp.FileManagerGroup.ApiFileQiniu
 	{
-		excelRouter.POST("queryVersionByType", api.QueryVersionByType)             //查询
-		excelRouter.POST("addQiniuFile", api.AddQiniuFile)                         //addQiniuFile
-		excelRouter.POST("getQiniuToken", api.GetQiniuToken)                       //获取七牛token
-		excelRouter.POST("deleteQiniuFile", api.DeleteQiniuFile)                   //删除单个文件
-		excelRouter.POST("deleteQiniuFileAndRecord", api.DeleteQiniuFileAndRecord) //删除单个文件
-		excelRouter.POST("renameQiniuFileAndRecord", api.RenameQiniuFileAndRecord) //删除单个文件
-
+		excelRouter.POST("queryVersionByType", api.QueryVersionByType)              //查询
+		excelRouter.POST("addQiniuFile", api.AddQiniuFile)                          //addQiniuFile
+		excelRouter.POST("getQiniuToken", api.GetQiniuToken)                        //获取七牛token
+		excelRouter.POST("deleteQiniuFile", api.DeleteQiniuFile)                    //删除单个文件
+		excelRouter.POST("deleteQiniuFileAndRecord", api.DeleteQiniuFileAndRecord)  //删除单个文件
+		excelRouter.POST("renameQiniuFileAndRecord", api.RenameQiniuFileAndRecord)  //删除单个文件
+		excelRouter.GET("getMirrorDownloadByTaskId", api.GetMirrorDownloadByTaskId) //根据任务id获取最新镜像下载链接
+		excelRouter.POST("updateMirrorPushPolicy", api.UpdateMirrorPushPolicy)      //删除单个文件
 	}
 }

+ 54 - 0
service/fileManager/file_qiniu.go

@@ -10,6 +10,7 @@ import (
 	"log-server/model/fileManager"
 	"log-server/model/fileManager/request"
 	"log-server/model/fileManager/response"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -54,6 +55,12 @@ func (s *ServiceFileQiniu) AddQiniuFile(requestCoding request.FileQiniuRequest)
 	file.FileType = requestCoding.FileType
 	file.CreateTime = time.Now().Format("2006-01-02 15:04:05")
 	file.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
+	global.GVA_LOG.Warn(requestCoding.MD5)
+	global.GVA_LOG.Warn(strconv.Itoa(requestCoding.PushPolicy))
+	global.GVA_LOG.Warn(requestCoding.PushTime)
+	file.MD5 = requestCoding.MD5
+	file.PushPolicy = requestCoding.PushPolicy
+	file.PushTime = requestCoding.PushTime
 	return global.GVA_DB.Create(&file).Error
 }
 
@@ -69,6 +76,41 @@ func (s *ServiceFileQiniu) QueryFilesByParentId(parentId int) (interface{}, erro
 	return fileList, err
 }
 
+// GetMirrorDownloadByTaskId 根据任务id获取最新镜像下载链接
+func (s *ServiceFileQiniu) GetMirrorDownloadByTaskId(taskId string) (interface{}, error) {
+	//SELECT * FROM file_qiniu WHERE task_id = 1000605 AND (file_type = 2 OR file_type = 4) AND push_policy = 1 ORDER BY file_version DESC LIMIT 1
+	db := global.GVA_DB.Model(&fileManager.FileQiniu{})
+	db = db.Where("task_id = ? AND (file_type = 2 OR file_type = 4) AND push_policy = 1", taskId)
+	file := fileManager.FileQiniu{}
+	err := db.Order("file_version desc").First(&file).Error
+	if err != nil {
+		return nil, err
+	}
+	qiniuMirrorMessage := new(response.QiniuMirrorMessage)
+	qiniuMirrorMessage.TaskId = file.TaskId
+	qiniuMirrorMessage.FileName = file.FileName
+	qiniuMirrorMessage.FileVersion = file.FileVersion
+	qiniuMirrorMessage.QiniuAddress = file.QiniuAddress
+	qiniuMirrorMessage.QiniuHash = file.QiniuHash
+	qiniuMirrorMessage.MD5 = file.MD5
+	//qiniuMirrorMessage.CreateTime = file.CreateTime
+	//qiniuMirrorMessage.PushPolicy = file.PushPolicy
+	//qiniuMirrorMessage.PushTime = file.PushTime
+
+	return qiniuMirrorMessage, err
+}
+
+// CheckPushTime 定时查看延迟更新的镜像是否到期
+func (s *ServiceFileQiniu) CheckPushTime() {
+	global.GVA_LOG.Info("定时查看延迟更新的镜像是否到期开始执行:" + time.Now().Format("2006-01-02 15:04:05"))
+	db := global.GVA_DB.Model(&fileManager.FileQiniu{})
+	db = db.Where("(file_type = 2 OR file_type = 4) AND push_policy = 2")
+	db = db.Where("push_time >= ?", time.Now().Format("2006-01-02 15:04:05"))
+	db.Update("push_policy", 1)
+	global.GVA_LOG.Info("定时查看延迟更新的镜像是否到期执行成功:" + time.Now().Format("2006-01-02 15:04:05"))
+	return
+}
+
 // GetQiniuToken 获取七牛上传token
 func (s *ServiceFileQiniu) GetQiniuToken() interface{} {
 	putPolicy := storage.PutPolicy{
@@ -160,3 +202,15 @@ func (s *ServiceFileQiniu) RenameQiniuFileAndRecord(requestCoding request.FileQi
 	err = global.GVA_DB.Save(file).Error
 	return err
 }
+
+// UpdateMirrorPushPolicy 修改镜像更新策略
+func (s *ServiceFileQiniu) UpdateMirrorPushPolicy(requestCoding request.FileQiniuRequest) (err error) {
+	file := fileManager.FileQiniu{}
+	if errors.Is(global.GVA_DB.Where("id = ?", requestCoding.Id).First(&file).Error, gorm.ErrRecordNotFound) {
+		return errors.New("数据库中未找到该记录")
+	}
+	file.PushPolicy = requestCoding.PushPolicy
+	file.PushTime = requestCoding.PushTime
+	err = global.GVA_DB.Save(file).Error
+	return err
+}