Ver código fonte

图片上传相关接口提交

maker 2 anos atrás
pai
commit
4a26aed88a

+ 3 - 1
api/v1/enter.go

@@ -5,6 +5,7 @@ import (
 	"log-server/api/v1/dataStatistics"
 	"log-server/api/v1/example"
 	"log-server/api/v1/fileManager"
+	"log-server/api/v1/levelMonitor"
 	"log-server/api/v1/log"
 	"log-server/api/v1/rentComputer"
 	"log-server/api/v1/system"
@@ -22,7 +23,8 @@ type ApiGroup struct {
 	RentComputerApiGroup rentComputer.ApiGroup
 	DataStatisticsGroup  dataStatistics.ApiGroup
 	FileManagerGroup     fileManager.ApiGroup
-	IdCardGroup			 card.ApiGroup
+	IdCardGroup          card.ApiGroup
+	LevelMonitorGroup    levelMonitor.ApiGroup
 }
 
 var ApiGroupApp = new(ApiGroup)

+ 11 - 0
api/v1/levelMonitor/enter.go

@@ -0,0 +1,11 @@
+package levelMonitor
+
+import "log-server/service"
+
+type ApiGroup struct {
+	ImageRecordApi
+}
+
+var (
+	imageRecordService = service.ServiceGroupApp.LevelMonitorServiceGroup.ImageRecordService
+)

+ 57 - 0
api/v1/levelMonitor/image_record.go

@@ -0,0 +1,57 @@
+package levelMonitor
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/response"
+	"log-server/model/levelMonitor"
+	"log-server/model/levelMonitor/request"
+	"log-server/utils"
+)
+
+type ImageRecordApi struct {
+}
+
+//创建图片记录
+func (a *ImageRecordApi) CreateImageRecord (c *gin.Context)  {
+	var record levelMonitor.ImageRecord
+	_ = c.ShouldBindJSON(&record)
+	if err := utils.Verify(record, utils.ImageRecordVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := imageRecordService.CreateImageRecord(record); err != nil {
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+}
+
+
+//删除三天前的图片记录
+//func (a *ImageRecordApi) DeleteExpireImageRecord (c *gin.Context)  {}
+
+//查询图片记录列表
+func (a *ImageRecordApi) GetImageRecordList (c *gin.Context)  {
+	var paramsInfo request.SearchImageRecordParams
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	list, total, err := imageRecordService.GetImageRecordList(paramsInfo.ImageRecordRequest, 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)
+	}
+}
+

+ 2 - 0
initialize/router.go

@@ -30,6 +30,7 @@ func Routers() *gin.Engine {
 	rentComputerRouter := router.RouterGroupApp.RentComputer
 	dataStatisticsRouter := router.RouterGroupApp.DataStatistics
 	fileManagerRouter := router.RouterGroupApp.FileManager
+	imageRecordRouter := router.RouterGroupApp.ImageRecord
 	// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
 	// VUE_APP_BASE_API = /
 	// VUE_APP_BASE_PATH = http://localhost
@@ -74,6 +75,7 @@ func Routers() *gin.Engine {
 		uploadFileRouter.InitUploadFileRouter(PublicGroup)
 		centralControlRouter.InitCentralControlRouter(PublicGroup) //中控配置
 		urgentTaskRouter.InitUrgentTaskRouter(PublicGroup)         //紧急任务
+		imageRecordRouter.InitImageRecordRouter(PublicGroup)       //图片上传
 		rentComputerRouter.InitRentComputerRouter(PublicGroup)     //租机管理
 		rentComputerRouter.InitRentComputerShopRouter(PublicGroup) // 租机供应商管理
 		rentComputerRouter.InitRentSetMealRouter(PublicGroup)

+ 10 - 1
initialize/timer.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"log-server/service/dataStatistics"
 	"log-server/service/fileManager"
+	"log-server/service/levelMonitor"
 	"log-server/service/log"
 	"log-server/service/rentComputer"
 	"log-server/service/system"
@@ -23,6 +24,7 @@ var serviceDataAbnormalRate = new(dataStatistics.ServiceDataAbnormalRate)
 var serviceWeChatScannerDetailed = new(dataStatistics.ServiceWeChatScannerDetailed)
 var serviceDownLoadUrl = new(fileManager.ServiceDownLoadUrl)
 var robotService = new(system.RobotService)
+var imageRecordService = new(levelMonitor.ImageRecordService)
 var ServiceRegularTask = new(task.ServiceRegularTask)
 var serviceFileQiniu = new(fileManager.ServiceFileQiniu)
 
@@ -205,7 +207,14 @@ func Timer() {
 	//if err != nil {
 	//	fmt.Println("add SyncIPMessage timer error:", err)
 	//}
-	//
+
+
+	//每天凌晨3点删除一次过期图片信息
+	_, err := global.GVA_Timer.AddTaskByFunc("DeleteExpireImageRecord", "0 0 3 * * ? ", imageRecordService.DeleteExpireImageRecord)
+	if err != nil {
+		fmt.Println("add DeleteExpireImageRecord timer error:", err)
+	}
+
 	////定时查看延迟更新的镜像是否到期
 	//_, err = global.GVA_Timer.AddTaskByFunc("CheckPushTime", "35 0/2 * * * *", serviceFileQiniu.CheckPushTime)
 	//if err != nil {

+ 19 - 0
model/levelMonitor/image_record.go

@@ -0,0 +1,19 @@
+package levelMonitor
+
+import "log-server/model/typeManage"
+
+type ImageRecord struct {
+	Id          int                  `json:"id"`
+	TaskId      int                  `json:"task_id"`      //任务id
+	Account     string               `json:"account"`      //账号
+	ImageBase64 string               `json:"image_base64"` //图片base64文本
+	Status      int                  `json:"status"`       //识别状态, 成功为1, 失败-1, 默认为2未识别
+	Result      string               `json:"result"`       //识别结果
+	CreateDate  string               `json:"create_date"`  //创建日期
+	CreateTime  typeManage.LocalTime `json:"create_time"`
+	UpdateTime  typeManage.LocalTime `json:"update_time"`
+}
+
+func (ImageRecord) TableName() string {
+	return "image_record"
+}

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

@@ -0,0 +1,27 @@
+package request
+
+import (
+	"log-server/model/common/request"
+	"log-server/model/typeManage"
+)
+
+type SearchImageRecordParams struct {
+	ImageRecordRequest
+	request.PageInfo
+	OrderKey string `json:"orderKey"`
+	Desc     bool   `json:"desc"`
+}
+
+//紧急任务请求
+type ImageRecordRequest struct {
+	Id          int                  `json:"id"`
+	TaskId      int                  `json:"task_id"` //任务id
+	Account     string               `json:"account"` //账号
+	Date        []string             `json:"date"`
+	ImageBase64 string               `json:"image_base64"` //图片base64文本
+	Status      int                  `json:"status"`       //识别状态, 成功为1, 失败-1, 默认为2未识别
+	Result      string               `json:"result"`       //识别结果
+	CreateDate  string               `json:"create_date"`  //创建日期
+	CreateTime  typeManage.LocalTime `json:"create_time"`
+	UpdateTime  typeManage.LocalTime `json:"update_time"`
+}

+ 2 - 0
router/enter.go

@@ -5,6 +5,7 @@ import (
 	"log-server/router/dataStatistics"
 	"log-server/router/example"
 	"log-server/router/fileManager"
+	"log-server/router/levelMonitor"
 	"log-server/router/log"
 	"log-server/router/rentComputer"
 	"log-server/router/system"
@@ -27,6 +28,7 @@ type RouterGroup struct {
 	FileManager    fileManager.RouterGroup
 	IpLog          log.IpLogRouter
 	IdCard         card.IdCardRouter
+	ImageRecord    levelMonitor.ImageRecordRouter
 }
 
 var RouterGroupApp = new(RouterGroup)

+ 22 - 0
router/levelMonitor/image_record.go

@@ -0,0 +1,22 @@
+package levelMonitor
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type ImageRecordRouter struct {
+}
+
+func (r *ImageRecordRouter) InitImageRecordRouter(Router *gin.RouterGroup) {
+	imageRecordRouter := Router.Group("levelMonitor")
+	imageRecordApi := v1.ApiGroupApp.LevelMonitorGroup.ImageRecordApi
+	{
+		imageRecordRouter.POST("getImageRecordList", imageRecordApi.GetImageRecordList) //获取图片记录列表
+		imageRecordRouter.POST("createImageRecord", imageRecordApi.CreateImageRecord)   //创建图片记录
+	}
+	//imageRecordRouter1 := Router.Group("levelMonitor").Use(middleware.OperationRecord())
+	//{
+	//	//imageRecordRouter1.POST("createImageRecord", imageRecordApi.CreateImageRecord)             //创建图片记录
+	//}
+}

+ 3 - 1
service/enter.go

@@ -5,6 +5,7 @@ import (
 	"log-server/service/dataStatistics"
 	"log-server/service/example"
 	"log-server/service/fileManager"
+	"log-server/service/levelMonitor"
 	"log-server/service/log"
 	"log-server/service/rentComputer"
 	"log-server/service/system"
@@ -21,7 +22,8 @@ type ServiceGroup struct {
 	RentComputerServiceGroup   rentComputer.ServiceGroup
 	DataStatisticsServiceGroup dataStatistics.ServiceGroup
 	FileManagerServiceGroup    fileManager.ServiceGroup
-	CardServiceGroup		   card.ServiceGroup
+	CardServiceGroup           card.ServiceGroup
+	LevelMonitorServiceGroup   levelMonitor.ServiceGroup
 }
 
 var ServiceGroupApp = new(ServiceGroup)

+ 5 - 0
service/levelMonitor/enter.go

@@ -0,0 +1,5 @@
+package levelMonitor
+
+type ServiceGroup struct {
+	ImageRecordService
+}

+ 93 - 0
service/levelMonitor/image_record.go

@@ -0,0 +1,93 @@
+package levelMonitor
+
+import (
+	"errors"
+	"go.uber.org/zap"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/levelMonitor"
+	levelRequest "log-server/model/levelMonitor/request"
+	"time"
+)
+
+type ImageRecordService struct {
+}
+
+//创建图片记录
+func (s *ImageRecordService) CreateImageRecord (record levelMonitor.ImageRecord) (err error) {
+	//获取今日日期
+	date := time.Now().Format("2006-01-02")
+	var entity levelMonitor.ImageRecord
+	//创建日期赋值
+	record.CreateDate = date
+	record.Status = 2
+	//查找数据库是否存在此账号此游戏今日记录
+	err = global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Where("task_id = ? and account = ? and create_date = ?", record.TaskId, record.Account, date).First(&entity).Error
+	if !errors.Is(err , gorm.ErrRecordNotFound) {
+		return errors.New("此记录已存在,请勿重复添加")
+	}
+	return global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Omit("create_time", "update_time").Create(&record).Error
+}
+
+//删除三日前的图片记录
+func (s *ImageRecordService) DeleteExpireImageRecord() ()  {
+	markTime := time.Now().Add(-time.Hour * 48).Format("2006-01-02")
+	err := global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Delete("create_date < ?", markTime).Error
+	if err != nil {
+		global.GVA_LOG.Info("删除图片信息失败:" + err.Error() + time.Now().Format("2006-01-02 15:04:05"))
+	}
+	return
+}
+
+//获取图片记录列表
+func (s *ImageRecordService) GetImageRecordList(record levelRequest.ImageRecordRequest, info request.PageInfo, order string, desc bool) (recordList []levelMonitor.ImageRecord, total int64, err error) {
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	db := global.GVA_DB.Model(&levelMonitor.ImageRecord{})
+	startDate := time.Now().Format("2006-01-02")
+	endDate := time.Now().Format("2006-01-02")
+	if len(record.Date) == 2 {
+		startDate = record.Date[0]
+		endDate = record.Date[1]
+	}
+	//筛选日期
+	db = db.Where("create_date >= ? and create_date <= ?", startDate, endDate)
+	if record.TaskId != 0 {
+		db = db.Where("task_id = ?", record.TaskId)
+	}
+	err = db.Count(&total).Error
+	if err != nil {
+		return recordList, total, err
+	} else {
+		db = db.Limit(limit).Offset(offset)
+		if order != "" {
+			var OrderStr string
+			// 设置有效排序key 防止sql注入
+			// 感谢 Tom4t0 提交漏洞信息
+			orderMap := make(map[string]bool, 4)
+			orderMap["task_id"] = true
+			orderMap["create_date"] = true
+			orderMap["create_time"] = true
+			orderMap["update_time"] = true
+			if orderMap[order] {
+				if desc {
+					OrderStr = order + " desc"
+				} else {
+					OrderStr = order
+				}
+			} else { // didn't matched any order key in `orderMap`
+				global.GVA_LOG.Error("获取失败!", zap.Error(err))
+				return recordList, total, err
+			}
+			err = db.Order(OrderStr).Find(&recordList).Error
+		} else {
+			err = db.Order("id desc").Find(&recordList).Error
+		}
+	}
+	//遍历更改日期格式
+	for i, _ := range recordList {
+		recordList[i].CreateDate = recordList[i].CreateDate[:10]
+	}
+	return recordList, total, err
+}

+ 1 - 0
utils/verify.go

@@ -32,4 +32,5 @@ var (
 	TaskConfVerify           = Rules{"User": {NotEmpty()}}
 	CentralControlConfVerify = Rules{"Cpu": {NotEmpty()}, "MemorySize": {NotEmpty()}, "TaskId": {NotEmpty()}, "GameId": {NotEmpty()}} //中控配置校验
 	UrgentTaskVerify         = Rules{"TaskId": {NotEmpty()}, "PcCode": {NotEmpty()}}                                                  //紧急任务校验
+	ImageRecordVerify        = Rules{"TaskId": {NotEmpty()}, "Account": {NotEmpty()}, "ImageBase64": {NotEmpty()}}                    //图片记录验证
 )