Bläddra i källkod

旧版后台数据查询功能

倚楼听风雨 3 år sedan
förälder
incheckning
d968f4c38e

+ 2 - 0
api/v1/dataStatistics/enter.go

@@ -8,6 +8,7 @@ type ApiGroup struct {
 	ApiWeChatScannerApi
 	ApiWeChatScannerDetailed
 	ApiWeChatScannerLedger
+	ApiOldDataShow
 	// Code generated by log-server End; DO NOT EDIT.
 }
 
@@ -16,4 +17,5 @@ var (
 	ServiceWeChatScannerApi      = service.ServiceGroupApp.DataStatisticsServiceGroup.ServiceWeChatScannerApi
 	ServiceWeChatScannerDetailed = service.ServiceGroupApp.DataStatisticsServiceGroup.ServiceWeChatScannerDetailed
 	ServiceWeChatScannerLedger   = service.ServiceGroupApp.DataStatisticsServiceGroup.ServiceWeChatScannerLedger
+	ServiceOldDataShow           = service.ServiceGroupApp.DataStatisticsServiceGroup.ServiceOldDataShow
 )

+ 56 - 0
api/v1/dataStatistics/oldDataShow.go

@@ -0,0 +1,56 @@
+package dataStatistics
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/dataStatistics/request"
+	"log-server/model/log/response"
+)
+
+type ApiOldDataShow struct {
+}
+
+func (s *ApiOldDataShow) GetOldDataList(c *gin.Context) {
+	var paramsInfo request.OldDataShowRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	/*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}*/
+	list, total, err := ServiceOldDataShow.OldDataShowList(c, paramsInfo.OldDataShow2, 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)
+	}
+}
+
+func (s *ApiOldDataShow) ExportSyDataListExcel(c *gin.Context) {
+	var excelInfo request.ExcelOldDataInfo
+	_ = c.ShouldBindJSON(&excelInfo)
+	paramsInfo := excelInfo.InfoList
+	paramsInfo.PageSize = 1000
+	paramsInfo.Page = 1
+	list, _, err := ServiceOldDataShow.OldDataShowList(c, paramsInfo.OldDataShow2, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	if err != nil {
+		global.GVA_LOG.Error("获取数据失败!", zap.Error(err))
+		response.FailWithMessage("获取数据失败", c)
+		return
+	}
+	filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
+	err = ServiceOldDataShow.ParseInfoList2Excel(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)
+}

+ 1 - 0
initialize/router.go

@@ -75,6 +75,7 @@ func Routers() *gin.Engine {
 		dataStatisticsRouter.InitWeChatScannerApiRouter(PublicGroup)      //数据统计
 		dataStatisticsRouter.InitWeChatScannerDetailedRouter(PublicGroup) //数据统计
 		dataStatisticsRouter.InitWeChatScannerLedgerRouter(PublicGroup)   //数据统计
+		dataStatisticsRouter.InitOldDataShowRouter(PublicGroup)
 		fileManagerRouter.InitFileFolderRouter(PublicGroup)
 		fileManagerRouter.InitFileTypeRouter(PublicGroup)
 		fileManagerRouter.InitFileQiniuRouter(PublicGroup)

+ 23 - 0
model/dataStatistics/oldDataShow.go

@@ -0,0 +1,23 @@
+package dataStatistics
+
+type OldDataShow struct {
+	Id              uint   `json:"id"`
+	UpdateTime      string `json:"updateTime"`      // 更新时间
+	CreateTime      string `json:"createTime"`      // 创建时间
+	TaskId          int    `json:"task_id"`         //任务id
+	TaskName        string `json:"task_name"`       //任务名
+	NewDate         string `json:"new_date"`        // 日期
+	TargetNew       int    `json:"target_new"`      //
+	TargetPay       int    `json:"target_pay"`      //
+	TargetActive    int    `json:"target_active"`   //
+	CompleteNew     int    `json:"complete_new"`    //
+	CompletePay     int    `json:"complete_pay"`    //
+	CompleteActive  int    `json:"complete_active"` //
+	IsComplete      int    `json:"is_complete"`     //
+	Amount          string `json:"amount"`          //
+	Remark          string `json:"remark"`
+	CompleteNewHand int    `json:"complete_new_hand"`
+	CompleteLcHand  int    `json:"complete_lc_hand"`
+	CompletePayHand int    `json:"complete_pay_hand"`
+	AmountHand      int    `json:"amount_hand"`
+}

+ 23 - 0
model/dataStatistics/request/oldDataShow.go

@@ -0,0 +1,23 @@
+package request
+
+type OldDataShowRequest struct {
+	OldDataShow2
+	PageInfo
+	OrderKey string `json:"orderKey"` // 排序
+	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+}
+
+type OldDataShow2 struct {
+	TaskId   int      `json:"task_id"`   //任务id
+	TaskName string   `json:"task_name"` //任务名
+	NewDate  []string `json:"new_date"`  // 日期
+}
+type ExcelOldDataInfo struct {
+	FileName string `json:"fileName"` // 文件名
+	InfoList struct {
+		OldDataShow2
+		PageInfo
+		OrderKey string `json:"orderKey"` // 排序
+		Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+	} `json:"infoList"`
+}

BIN
resource/excel/2022-12-07,2022-12-08-数优数据.xlsx


+ 18 - 0
router/dataStatistics/oldDataShow.go

@@ -0,0 +1,18 @@
+package dataStatistics
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type OldDataShowRouter struct {
+}
+
+func (e *WeChatScannerApiRouter) InitOldDataShowRouter(Router *gin.RouterGroup) {
+	excelRouter := Router.Group("dataStatistics")
+	api := v1.ApiGroupApp.DataStatisticsGroup.ApiOldDataShow
+	{
+		excelRouter.POST("getOldDataList", api.GetOldDataList)               //查询记录
+		excelRouter.POST("exportSyDataListExcel", api.ExportSyDataListExcel) //
+	}
+}

+ 1 - 0
service/dataStatistics/enter.go

@@ -6,5 +6,6 @@ type ServiceGroup struct {
 	ServiceWeChatScannerApi
 	ServiceWeChatScannerDetailed
 	ServiceWeChatScannerLedger
+	ServiceOldDataShow
 	// Code generated by log-server End; DO NOT EDIT.
 }

+ 125 - 0
service/dataStatistics/oldDataShow.go

@@ -0,0 +1,125 @@
+package dataStatistics
+
+import (
+	"context"
+	"fmt"
+	"github.com/xuri/excelize/v2"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/dataStatistics"
+	"log-server/model/dataStatistics/request"
+)
+
+type ServiceOldDataShow struct {
+}
+
+func (s *ServiceOldDataShow) OldDataShowList(ctx context.Context, api request.OldDataShow2, info request.PageInfo, order string, desc bool) ([]*dataStatistics.OldDataShow, int64, error) {
+	db := global.GVA_DB.Table("shuyou_game_target")
+	db = db.Select("shuyou_game_target.id,shuyou_game_target.task_id,shuyou_game_target.task_name,shuyou_game_target.new_date," +
+		"shuyou_game_target.target_new,shuyou_game_target.target_pay,shuyou_game_target.target_active,c.complete_new,c.complete_pay,c.complete_active," +
+		"c.is_complete,c.amount,c.remark,h.complete_new_hand,h.complete_lc_hand,h.complete_pay_hand,h.amount_hand")
+	db = db.Joins("left join shuyou_game_complete c on c.task_id = shuyou_game_target.task_id and c.new_date = shuyou_game_target.new_date")
+	db = db.Joins("left join shuyou_game_complete_hand h on h.task_id = shuyou_game_target.task_id and h.new_date = shuyou_game_target.new_date")
+	if api.TaskId != 0 {
+		db = db.Where("shuyou_game_target.task_id = ?", api.TaskId)
+	}
+	if api.TaskName != "" {
+		db = db.Where("shuyou_game_target.task_name like ?", "%"+api.TaskName+"%")
+	}
+	if len(api.NewDate) == 0 {
+		api.NewDate = append(api.NewDate, "2023-02-22")
+		api.NewDate = append(api.NewDate, "2023-02-22")
+	}
+	db = db.Where("shuyou_game_target.new_date >= ? and shuyou_game_target.new_date <= ?", api.NewDate[0], api.NewDate[1])
+
+	var total int64
+	err := db.Count(&total).Error
+	//if err != nil {
+	//	return nil, 0, err
+	//}
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	//var statisticsLogs []*log.LogComputer
+	var dateList []*dataStatistics.OldDataShow
+	db = db.Limit(limit).Offset(offset)
+	if order != "" {
+		var OrderStr string
+		// 设置有效排序key 防止sql注入
+		// 感谢 Tom4t0 提交漏洞信息
+		orderMap := make(map[string]bool, 3)
+		orderMap["id"] = true
+		//orderMap["game_id"] = true
+		//orderMap["operator"] = true
+		if orderMap[order] {
+			if desc {
+				OrderStr = order + " desc"
+			} else {
+				OrderStr = order + " desc"
+			}
+		} else { // didn't matched any order key in `orderMap`
+			global.GVA_LOG.Error("获取失败!", zap.Error(err))
+			return dateList, total, err
+		}
+		err = db.Order(OrderStr).Find(&dateList).Error
+	} else {
+		err = db.Order("id").Find(&dateList).Error
+	}
+	if err != nil {
+		return nil, 0, err
+	}
+	return dateList, total, err
+}
+
+func (s *ServiceOldDataShow) ParseInfoList2Excel(infoList []*dataStatistics.OldDataShow, filePath string) (err error) {
+	excel := excelize.NewFile()
+	err = excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "任务ID", "任务名称", "目标新增", "目标留存", "目标付费", "完成新增", "完成留存", "完成付费", "未完成新增", "未完成留存", "未完成付费", "手动付费数量", "手动付费金额", "异常记录", "总付费金额"})
+	if err != nil {
+		return err
+	}
+	for i, one := range infoList {
+		axis := fmt.Sprintf("A%d", i+2)
+		targetLc := one.TargetActive - one.TargetNew
+		if targetLc < 0 {
+			targetLc = 0
+		}
+		completeLc := one.CompleteActive - one.CompleteNew
+		if completeLc < 0 {
+			completeLc = 0
+		}
+		imcompleteNew := one.TargetNew - one.CompleteNew
+		if targetLc < 0 {
+			targetLc = 0
+		}
+		imcompleteLc := targetLc - (one.CompleteActive - one.CompleteNew)
+		if targetLc < 0 {
+			targetLc = 0
+		}
+		imcompletePay := one.TargetPay - one.CompletePay
+		if targetLc < 0 {
+			targetLc = 0
+		}
+		err = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
+			one.NewDate,
+			one.TaskId,
+			one.TaskName,
+			one.TargetNew,
+			targetLc,
+			one.TargetPay,
+			one.CompleteNew,
+			completeLc,
+			one.CompletePay,
+			imcompleteNew,
+			imcompleteLc,
+			imcompletePay,
+			one.CompletePayHand,
+			one.AmountHand,
+			one.Remark,
+			one.Amount,
+		})
+		if err != nil {
+			return err
+		}
+	}
+	err = excel.SaveAs(filePath)
+	return err
+}

+ 5 - 0
service/rentComputer/rent_computer.go

@@ -325,6 +325,8 @@ func (s *ServiceRentComputer) RentingOutRentComputer(api request.RentingOutRentC
 	info.RentDuration = info.RentDuration - int(surplusDay)
 	info.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
 	info.Remark = info.Remark + remark
+	info.IsOffShelf = 1
+	info.PcNum = "offShelf_" + info.PcNum + "_" + strconv.Itoa(int(time.Now().Unix()))
 	err = global.GVA_DB.Model(&rentComputer.RentComputer{}).Where("id = ?", info.Id).Updates(info).Error
 	if err != nil {
 		return "退租机器信息修改失败!", err, ""
@@ -397,6 +399,8 @@ func (s *ServiceRentComputer) ReplaceNumRentComputer(api request.ReplaceNumRentC
 	infoOld.RentEnd = time.Now().Format("2006-01-02 15:04:05")
 	infoOld.Remark = remark
 	infoOld.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
+	infoOld.IsOffShelf = 1
+	infoOld.PcNum = "offShelf_" + infoOld.PcNum + "_" + strconv.Itoa(int(time.Now().Unix()))
 	err = global.GVA_DB.Model(&rentComputer.RentComputer{}).Where("id = ?", infoOld.Id).Updates(infoOld).Error
 	if err != nil {
 		return "旧编号租机修改失败!", err, ""
@@ -601,6 +605,7 @@ func (s *ServiceRentComputer) CheckIsExpire() {
 		computer.RentPriceUsed = c.RentPriceUsed
 		computer.SetMealId = c.SetMealId
 		computer.IsOffShelf = c.IsOffShelf
+		computer.DirectorName = c.DirectorName
 
 		err = global.GVA_DB.Save(computer).Error
 	}