Explorar o código

7日数据及导出等级统计上传

maker %!s(int64=2) %!d(string=hai) anos
pai
achega
e40f2c6232

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

@@ -1,6 +1,7 @@
 package levelMonitor
 
 import (
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
 	"log-server/global"
@@ -67,6 +68,28 @@ func (a *ImageRecordApi) GetImageRecordList(c *gin.Context) {
 	}
 }
 
+//获取7日数据
+func (a *ImageRecordApi) GetWeekImageRecordStatistics(c *gin.Context)  {
+	var weekDataRequest request.WeekImageRecordStatisticsRequest
+	_ = c.ShouldBindJSON(&weekDataRequest)
+	if weekDataRequest.TaskId == 0 {
+		response.FailWithMessage("请传入task_id", c)
+		return
+	}
+	if weekDataRequest.CreateDate == "" {
+		response.FailWithMessage("请传入create_date", c)
+		return
+	}
+
+	list, err := imageRecordService.GetWeekImageRecordStatistics(weekDataRequest.TaskId, weekDataRequest.CreateDate)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(list, "获取成功", c)
+	}
+}
+
 //获取等级统计数据列表
 func (a *ImageRecordApi) GetImageRecordStatisticsList(c *gin.Context) {
 	var paramsInfo request.SearchImageRecordStatisticsParams
@@ -87,4 +110,35 @@ func (a *ImageRecordApi) GetImageRecordStatisticsList(c *gin.Context) {
 			PageSize: paramsInfo.PageSize,
 		}, "获取成功", c)
 	}
+}
+
+//导出等级统计数据列表
+func (a *ImageRecordApi) ImageRecordStatisticsExport(c *gin.Context) {
+	var excelInfo request.ExcelImageRecordStatistics
+	_ = c.ShouldBindJSON(&excelInfo)
+	fmt.Println(excelInfo)
+	paramsInfo := excelInfo.InfoList
+	paramsInfo.PageSize = 300
+	paramsInfo.Page = 1
+	if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	list, _, err := imageRecordService.GetImageRecordStatisticsList(paramsInfo.ImageRecordStatisticsRequest, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败 "+err.Error(), c)
+	}
+	//var nowTime string = time.Now().Format("2006-01-02_15:04")
+	//excelInfo.FileName = nowTime + "-ip.xlsx"
+	//fmt.Println(excelInfo.FileName)
+	filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
+	err = imageRecordService.ImageRecordStatisticsListExcel(list, filePath)
+	if err != nil {
+		global.GVA_LOG.Error("转换Excel失败!", zap.Error(err))
+		response.FailWithMessage("转换Excel失败", c)
+		return
+	}
+	c.Writer.Header().Add("success", "true")
+	c.File(filePath)
 }

+ 13 - 1
api/v1/task/central_control_conf.go

@@ -85,6 +85,7 @@ func (a *CentralControlApi) UpdateCentralControlConf (c *gin.Context)  {
 	}
 }
 
+//id获取中控配置
 func (a *CentralControlApi) GetCentralControlConfById (c *gin.Context)  {
 	var id request.GetById
 	_ = c.ShouldBindJSON(&id)
@@ -121,4 +122,15 @@ func (a *CentralControlApi) GetCentralControlConfList (c *gin.Context)  {
 			PageSize: pageInfo.PageSize,
 		}, "获取成功", c)
 	}
-}
+}
+
+//获取云中控配置列表
+func (a *CentralControlApi) GetCloudConfList(c *gin.Context)  {
+	list, err := centralControlService.GetCloudConfList()
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(list, "获取成功", c)
+	}
+}

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

@@ -41,3 +41,20 @@ type ImageRecordStatisticsRequest struct {
 	User   string   `json:"user"`
 	Date   []string `json:"date"`
 }
+
+//获取7日数据请求
+type WeekImageRecordStatisticsRequest struct {
+	TaskId int      `json:"task_id"` //任务id
+	CreateDate  string               `json:"create_date"`  //创建日期
+}
+
+//导出统计数据
+type ExcelImageRecordStatistics struct {
+	FileName string `json:"fileName"` // 文件名
+	InfoList struct {
+		ImageRecordStatisticsRequest
+		request.PageInfo
+		OrderKey string `json:"orderKey"` // 排序
+		Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+	} `json:"infoList"`
+}

+ 2 - 0
router/levelMonitor/image_record.go

@@ -13,7 +13,9 @@ func (r *ImageRecordRouter) InitImageRecordRouter(Router *gin.RouterGroup) {
 	imageRecordApi := v1.ApiGroupApp.LevelMonitorGroup.ImageRecordApi
 	{
 		imageRecordRouter.POST("getImageRecordList", imageRecordApi.GetImageRecordList) //获取图片记录列表
+		imageRecordRouter.POST("getWeekImageRecordStatistics", imageRecordApi.GetWeekImageRecordStatistics) //获取7日等级统计数据
 		imageRecordRouter.POST("getImageRecordStatisticsList", imageRecordApi.GetImageRecordStatisticsList) //获取图片记录列表
+		imageRecordRouter.POST("imageRecordStatisticsExport", imageRecordApi.ImageRecordStatisticsExport)	//导出等级统计数据
 		imageRecordRouter.POST("createImageRecord", imageRecordApi.CreateImageRecord)   //创建图片记录
 		imageRecordRouter.POST("uploadOrNot", imageRecordApi.UploadOrNot)               //询问是否上传图片
 	}

+ 10 - 10
router/task/central_control_conf.go

@@ -1,29 +1,29 @@
 package task
 
 import (
-"github.com/gin-gonic/gin"
-v1 "log-server/api/v1"
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
 	"log-server/middleware"
 )
 
 type CentralControlRouter struct {
-
 }
 
 func (r *CentralControlRouter) InitCentralControlRouter(Router *gin.RouterGroup) {
 	GameTaskRouter := Router.Group("gameTask")
 	centralControlConfApi := v1.ApiGroupApp.GroupTask.CentralControlApi
 	{
-		GameTaskRouter.POST("getCentralControlConfList", centralControlConfApi.GetCentralControlConfList)  //获取配置列表
-		GameTaskRouter.POST("getCentralControlConfById", centralControlConfApi.GetCentralControlConfById)  //通过id获取单个配置
+		GameTaskRouter.POST("getCentralControlConfList", centralControlConfApi.GetCentralControlConfList) //获取配置列表
+		GameTaskRouter.POST("getCentralControlConfById", centralControlConfApi.GetCentralControlConfById) //通过id获取单个配置
+		GameTaskRouter.GET("getCloudConfList", centralControlConfApi.GetCloudConfList)                    //获取云中控配置列表
 
 	}
 
 	centralControlConfApi1 := Router.Group("gameTask").Use(middleware.OperationRecord())
 	{
-		centralControlConfApi1.POST("createCentralControlConf", centralControlConfApi.CreateCentralControlConf)   //创建中控配置
-		centralControlConfApi1.POST("deleteCentralControlConf", centralControlConfApi.DeleteCentralControlConf)   //单个删除中控配置
-		centralControlConfApi1.DELETE("deleteCentralControlConfByIds", centralControlConfApi.DeleteCentralControlConfByIds)   //批量删除中控配置
-		centralControlConfApi1.POST("updateCentralControlConf", centralControlConfApi.UpdateCentralControlConf)   //更新中控配置
+		centralControlConfApi1.POST("createCentralControlConf", centralControlConfApi.CreateCentralControlConf)             //创建中控配置
+		centralControlConfApi1.POST("deleteCentralControlConf", centralControlConfApi.DeleteCentralControlConf)             //单个删除中控配置
+		centralControlConfApi1.DELETE("deleteCentralControlConfByIds", centralControlConfApi.DeleteCentralControlConfByIds) //批量删除中控配置
+		centralControlConfApi1.POST("updateCentralControlConf", centralControlConfApi.UpdateCentralControlConf)             //更新中控配置
 	}
-}
+}

+ 67 - 1
service/levelMonitor/image_record.go

@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"github.com/xuri/excelize/v2"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
 	"io/ioutil"
@@ -344,7 +345,19 @@ func (s *ImageRecordService) CreateImageRecordStatistics(taskId int, imageRecord
 		Updates(imageRecordStatistics)
 }
 
-//获取图片统计列表
+//获取7日统计数据
+func (s *ImageRecordService) GetWeekImageRecordStatistics(taskId int, createDate string) (dataList []levelMonitor.ImageRecordStatisticsResponse, err error){
+	db := global.GVA_DB.Model(&levelMonitor.ImageRecordStatistics{})
+	db = db.Select("image_record_statistics.*, game_task.user, game_task.task_name")
+	db = db.Joins("left join game_task on image_record_statistics.task_id = game_task.task_id")
+	err = db.Where("image_record_statistics.task_id = ? and image_record_statistics.create_date < ?", taskId, createDate).Order("create_date desc").Limit(7).Find(&dataList).Error
+	for i, _ := range dataList {
+		dataList[i].CreateDate = dataList[i].CreateDate[:10]
+	}
+	return
+}
+
+//获取等级统计列表
 func (s *ImageRecordService) GetImageRecordStatisticsList(record levelRequest.ImageRecordStatisticsRequest, info request.PageInfo, order string, desc bool) (dataList []levelMonitor.ImageRecordStatisticsResponse, total int64, err error) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
@@ -399,3 +412,56 @@ func (s *ImageRecordService) GetImageRecordStatisticsList(record levelRequest.Im
 	}
 	return dataList, total, err
 }
+
+//导出等级统计列表
+func (s *ImageRecordService) ImageRecordStatisticsListExcel(infoList []levelMonitor.ImageRecordStatisticsResponse, filePath string) error {
+	excel := excelize.NewFile()
+	excel.SetSheetRow("Sheet1", "A1", &[]string{
+		"游戏id",
+		"任务名称",
+		"负责人",
+		"日期",
+		"次留",
+		"3留",
+		"4留",
+		"5留",
+		"6留",
+		"7留",
+		"8留",
+		"9留",
+		"10留",
+		"11留",
+		"12留",
+		"13留",
+		"14留",
+		"15留",
+		"25留",
+		"30留"})
+	for i, statisticsLog := range infoList {
+		axis := fmt.Sprintf("A%d", i+2)
+		excel.SetSheetRow("Sheet1", axis, &[]interface{}{
+			statisticsLog.TaskId,
+			statisticsLog.TaskName,
+			statisticsLog.User,
+			statisticsLog.CreateDate[:10],
+			statisticsLog.Two,
+			statisticsLog.Three,
+			statisticsLog.Four,
+			statisticsLog.Five,
+			statisticsLog.Six,
+			statisticsLog.Seven,
+			statisticsLog.Eight,
+			statisticsLog.Nine,
+			statisticsLog.Ten,
+			statisticsLog.Eleven,
+			statisticsLog.Twelve,
+			statisticsLog.Thirteen,
+			statisticsLog.Fourteen,
+			statisticsLog.Fifteen,
+			statisticsLog.TwentyFive,
+			statisticsLog.Thirty,
+		})
+	}
+	err := excel.SaveAs(filePath)
+	return err
+}

+ 7 - 0
service/task/central_control_conf.go

@@ -108,4 +108,11 @@ func (s *CentralControlService) GetCentralControlConfList(conf task.CentralContr
 	}
 	//是因为只有切片能排序,model没办法排序;还是说为了将数组返回至前端才find扫描至切片呢?
 	return confList, total, err
+}
+
+//获取云配置列表
+func (s *CentralControlService) GetCloudConfList() (dataList []task.CentralControlConf, err error)  {
+	//获取所有的中控配置列表
+	err = global.GVA_DB.Model(&task.CentralControlConf{}).Find(&dataList).Error
+	return
 }