瀏覽代碼

代码拉取Merge branch 'master' of http://10.8.230.114:3000/wangbin/log-server

maker 3 年之前
父節點
當前提交
c7c5fa9a09
共有 35 個文件被更改,包括 612 次插入145 次删除
  1. 4 3
      api/v1/fileManager/enter.go
  2. 30 24
      api/v1/fileManager/file_folder.go
  3. 65 0
      api/v1/fileManager/file_qiniu.go
  4. 24 0
      api/v1/fileManager/file_type.go
  5. 2 2
      go.mod
  6. 2 0
      go.sum
  7. 2 0
      initialize/router.go
  8. 5 5
      initialize/timer.go
  9. 61 0
      model/fileManager/file_type.go
  10. 11 11
      model/fileManager/request/file_qiniu.go
  11. 8 0
      model/fileManager/response/file_folder.go
  12. 14 0
      model/fileManager/response/file_qiniu.go
  13. 二進制
      resource/excel/2022-11-12-pc.xlsx
  14. 二進制
      resource/excel/2023-02-12-扫码消耗明细.xlsx
  15. 二進制
      resource/excel/2023-02-13-pc.xlsx
  16. 二進制
      resource/excel/2023-02-13-扫码消耗明细.xlsx
  17. 二進制
      resource/excel/2023-02-18-租机台账.xlsx
  18. 二進制
      resource/excel/2023-02-19-租机台账.xlsx
  19. 二進制
      resource/excel/2023-02-20-扫码消耗明细.xlsx
  20. 二進制
      resource/excel/2023-02-20-租机台账.xlsx
  21. 二進制
      resource/excel/2023-2-28/1677551871.xlsx
  22. 2 0
      router/fileManager/enter.go
  23. 2 1
      router/fileManager/file_folder.go
  24. 22 0
      router/fileManager/file_qiniu.go
  25. 17 0
      router/fileManager/file_type.go
  26. 67 20
      service/dataStatistics/data_abnormal_rate.go
  27. 14 4
      service/dataStatistics/wechat_scanner_api.go
  28. 47 16
      service/dataStatistics/wechat_scanner_detailed.go
  29. 12 6
      service/dataStatistics/wechat_scanner_ledger.go
  30. 2 0
      service/fileManager/enter.go
  31. 36 44
      service/fileManager/file_folder.go
  32. 129 0
      service/fileManager/file_qiniu.go
  33. 17 0
      service/fileManager/file_type.go
  34. 7 4
      service/rentComputer/rent_computer.go
  35. 10 5
      service/rentComputer/rent_computer_ledger.go

+ 4 - 3
api/v1/fileManager/enter.go

@@ -5,6 +5,8 @@ import "log-server/service"
 type ApiGroup struct {
 	// Code generated by log-server Begin; DO NOT EDIT.
 	ApiFileFolder
+	ApiFileType
+	ApiFileQiniu
 	//ApiRentComputerShop
 	//ApiRentSetMeal
 	//ApiRentComputerLedger
@@ -13,7 +15,6 @@ type ApiGroup struct {
 
 var (
 	ServiceFileFolder = service.ServiceGroupApp.FileManagerServiceGroup.ServiceFileFolder
-	// ServiceRentComputerLedger = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentComputerLedger
-	// ServiceRentComputerShop   = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentComputerShop
-	// ServiceRentSetMeal        = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentSetMeal
+	ServiceFileType   = service.ServiceGroupApp.FileManagerServiceGroup.ServiceFileType
+	ServiceFileQiniu  = service.ServiceGroupApp.FileManagerServiceGroup.ServiceFileQiniu
 )

+ 30 - 24
api/v1/fileManager/file_folder.go

@@ -6,14 +6,11 @@ import (
 	"log-server/global"
 	"log-server/model/common/response"
 	"log-server/model/fileManager/request"
+	"strconv"
 )
 
 type ApiFileFolder struct {
 }
-type IdName struct {
-	id   int
-	name string
-}
 
 func (v *ApiFileFolder) AddFileFolder(c *gin.Context) {
 	var api request.FileFolderRequest
@@ -27,11 +24,8 @@ func (v *ApiFileFolder) AddFileFolder(c *gin.Context) {
 		global.GVA_LOG.Error("文件夹创建失败!", zap.Error(err))
 		response.FailWithMessage("文件夹创建失败,"+err.Error(), c)
 	} else {
-		idName := IdName{
-			parentId,
-			parentName,
-		}
-		response.OkWithDetailed(idName, "文件夹创建成功", c)
+		global.GVA_LOG.Info(parentName)
+		response.OkWithDetailed(map[string]string{"id": strconv.Itoa(parentId), "name": parentName}, "文件夹创建成功", c)
 	}
 }
 
@@ -49,25 +43,37 @@ func (api *ApiFileFolder) GetAllTaskSimple(c *gin.Context) {
 	}
 }
 
+// SelectFolderMsg 查询目录信息
+func (api *ApiFileFolder) SelectFolderMsg(c *gin.Context) {
+	var info request.FileFolderRequest
+	_ = c.ShouldBindJSON(&info)
+	if data, err := ServiceFileFolder.SelectFolderMsg(info); err != nil {
+		response.OkWithDetailed(map[string]interface{}{"data": data}, "获取失败", c)
+	} else {
+		response.OkWithDetailed(map[string]interface{}{"data": data}, "获取成功", 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)
+	//开始查询当前父文件夹下的所有文件夹
+	folderList, err := ServiceFileFolder.FileFolderList(c, paramsInfo.FileFolder)
 	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)
+		global.GVA_LOG.Error("FileFolderList获取失败!", zap.Error(err))
+		response.FailWithMessage("FileFolderList获取失败", c)
+	}
+	//===============================
+	//开始查询当前父文件夹下的所有文件
+	fileList, err := ServiceFileQiniu.QueryFilesByParentId(paramsInfo.FileFolder.ParentId)
+	if err != nil {
+		global.GVA_LOG.Error("QueryFilesByParentId获取失败!", zap.Error(err))
+		response.FailWithMessage("QueryFilesByParentId获取失败", c)
 	}
+	//===============================
+	response.OkWithDetailed(map[string]interface{}{
+		"folderList": folderList,
+		"fileList":   fileList,
+	}, "获取成功", c)
 }

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

@@ -1,4 +1,69 @@
 package fileManager
 
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/response"
+	"log-server/model/fileManager/request"
+)
+
 type ApiFileQiniu struct {
 }
+
+// QueryVersionByType 查询某task_id下某一类型文件最新一个渠道号
+func (r *ApiFileQiniu) QueryVersionByType(c *gin.Context) {
+	var paramsInfo request.FileQiniuRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+
+	if fileVersion, err := ServiceFileQiniu.QueryVersionByType(paramsInfo); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(map[string]int64{"fileVersion": fileVersion}, "获取成功", c)
+	}
+}
+
+// AddQiniuFile 新增文件
+func (r *ApiFileQiniu) AddQiniuFile(c *gin.Context) {
+	var paramsInfo request.FileQiniuRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+
+	if err := ServiceFileQiniu.AddQiniuFile(paramsInfo); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithMessage("文件上传成功", c)
+	}
+}
+
+// GetQiniuToken 获取七牛上传token
+func (v *ApiFileQiniu) GetQiniuToken(c *gin.Context) {
+
+	data := ServiceFileQiniu.GetQiniuToken()
+	response.OkWithDetailed(data, "获取七牛上传TOKEN成功", c)
+}
+
+// DeleteQiniuFile 删除单个文件
+func (v *ApiFileQiniu) DeleteQiniuFile(c *gin.Context) {
+	var paramsInfo request.FileQiniuRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if err := ServiceFileQiniu.DeleteQiniuFile(paramsInfo); err != nil {
+		global.GVA_LOG.Error("文件删除失败!", zap.Error(err))
+		response.FailWithMessage("文件删除失败,"+err.Error(), c)
+	} else {
+		response.OkWithMessage("文件删除成功", c)
+	}
+}
+
+// DeleteQiniuFileAndRecord 从七牛云删除文件并且清除数据库记录
+func (v *ApiFileQiniu) DeleteQiniuFileAndRecord(c *gin.Context) {
+	var paramsInfo request.FileQiniuRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if err := ServiceFileQiniu.DeleteQiniuFileAndRecord(paramsInfo); err != nil {
+		global.GVA_LOG.Error("文件删除失败!", zap.Error(err))
+		response.FailWithMessage("文件删除失败,"+err.Error(), c)
+	} else {
+		response.OkWithMessage("文件删除成功", c)
+	}
+}

+ 24 - 0
api/v1/fileManager/file_type.go

@@ -0,0 +1,24 @@
+package fileManager
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/response"
+)
+
+type ApiFileType struct {
+}
+
+func (r *ApiFileType) GetAllFileType(c *gin.Context) {
+
+	if list, err := ServiceFileType.GetAllFileType(); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		//响应结果
+		response.OkWithDetailed(response.PageResult{
+			List: list,
+		}, "获取成功", c)
+	}
+}

+ 2 - 2
go.mod

@@ -7,7 +7,8 @@ require (
 	github.com/aliyun/aliyun-oss-go-sdk v2.1.6+incompatible
 	github.com/aws/aws-sdk-go v1.42.27
 	github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
-	github.com/bitly/go-simplejson v0.5.0 // indirect
+	github.com/bitly/go-simplejson v0.5.0
+	github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
 	github.com/casbin/casbin/v2 v2.11.0
 	github.com/casbin/gorm-adapter/v3 v3.0.2
 	github.com/flipped-aurora/ws v1.0.2
@@ -19,7 +20,6 @@ require (
 	github.com/go-redis/redis/v8 v8.11.0
 	github.com/go-sql-driver/mysql v1.5.0
 	github.com/golang-jwt/jwt/v4 v4.3.0
-	github.com/google/uuid v1.1.2 // indirect
 	github.com/gookit/color v1.3.1
 	github.com/huaweicloud/huaweicloud-sdk-go-obs v3.21.8+incompatible
 	github.com/jackc/pgx/v4 v4.15.0 // indirect

+ 2 - 0
go.sum

@@ -47,6 +47,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
 github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
 github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
 github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
+github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
+github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
 github.com/casbin/casbin/v2 v2.2.2/go.mod h1:XXtYGrs/0zlOsJMeRteEdVi/FsB0ph7KgNfjoCoJUD8=
 github.com/casbin/casbin/v2 v2.11.0 h1:6M/sWT9gh2pUcL541be/rllWEVxcEV6wdg1t7MN6fHQ=
 github.com/casbin/casbin/v2 v2.11.0/go.mod h1:XXtYGrs/0zlOsJMeRteEdVi/FsB0ph7KgNfjoCoJUD8=

+ 2 - 0
initialize/router.go

@@ -76,6 +76,8 @@ func Routers() *gin.Engine {
 		dataStatisticsRouter.InitWeChatScannerDetailedRouter(PublicGroup) //数据统计
 		dataStatisticsRouter.InitWeChatScannerLedgerRouter(PublicGroup)   //数据统计
 		fileManagerRouter.InitFileFolderRouter(PublicGroup)
+		fileManagerRouter.InitFileTypeRouter(PublicGroup)
+		fileManagerRouter.InitFileQiniuRouter(PublicGroup)
 
 	}
 	PrivateGroup := Router.Group("")

+ 5 - 5
initialize/timer.go

@@ -111,6 +111,7 @@ func Timer() {
 	//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 {
@@ -175,6 +176,7 @@ func Timer() {
 	//if err != nil {
 	//	fmt.Println("add SyncGetWeChatScannerBalance timer error:", err)
 	//}
+
 	////定时更新异常率
 	//_, err = global.GVA_Timer.AddTaskByFunc("SyncAbnormalRateByBatch", "0 1,31 * * * *", serviceDataAbnormalRate.SyncAbnormalRateByBatch)
 	//if err != nil {
@@ -230,13 +232,11 @@ func Timer() {
 	//}
 
 	//定时更新游戏版本号和链接
-	_, err := global.GVA_Timer.AddTaskByFunc("UpdateGameVersion", "0 3/15 * * * *", serviceDownLoadUrl.UpdateGameVersion)
-	if err != nil {
-		fmt.Println("add UpdateGameVersion timer error:", err)
-	}
+	//_, err := global.GVA_Timer.AddTaskByFunc("UpdateGameVersion", "0 3/15 * * * *", serviceDownLoadUrl.UpdateGameVersion)
 	//if err != nil {
-	//	fmt.Println("add SyncGetWeChatScannerBalance timer error:", err)
+	//	fmt.Println("add UpdateGameVersion timer error:", err)
 	//}
+
 	////定时更新异常率
 	//_, err = global.GVA_Timer.AddTaskByFunc("SyncAbnormalRateByBatch", "0 1,31 * * * *", serviceDataAbnormalRate.SyncAbnormalRateByBatch)
 	//if err != nil {

+ 61 - 0
model/fileManager/file_type.go

@@ -0,0 +1,61 @@
+package fileManager
+
+// FileType 文件类型
+type FileType struct {
+	Id         uint   `json:"id"`
+	CreateTime string `json:"create_time"` // 创建时间
+	UpdateTime string `json:"update_time"` // 更新时间
+	Name       string `json:"name"`        //文件类型
+	Describe   string `json:"describe"`    //补充描述,文件后缀
+	//文件类型
+	/**
+	  {
+	    value: "0",
+	    label: "游戏包.apk"
+	  },
+	  {
+	    value: "1",
+	    label: "雷电镜像.ldbk"
+	  },
+	  {
+	    value: "2",
+	    label: "夜神镜像.npbk"
+	  },
+	  {
+	    value: "3",
+	    label: "易脚本.dll"
+	  },
+	  {
+	    value: "4",
+	    label: "易语言中控.exe"
+	  },
+	  {
+	    value: "5",
+	    label: "小精灵.apk"
+	  },
+	  {
+	    value: "6",
+	    label: "Tar包更新.tar"
+	  },
+	  {
+	    value: "7",
+	    label: "Bat.bat"
+	  },
+	  {
+	    value: "8",
+	    label: "shell脚本.sh"
+	  },
+	  {
+	    value: "9",
+	    label: "小绵羊.apk"
+	  },
+	  {
+	    value: "10",
+	    label: "其他文件.*"
+	  }
+	*/
+}
+
+func (FileType) TableName() string {
+	return "file_type"
+}

+ 11 - 11
model/fileManager/request/file_qiniu.go

@@ -2,15 +2,15 @@ package request
 
 type FileQiniuRequest struct {
 	Id           uint   `json:"id"`
-	CreateTime   string `json:"create_time"`   // 创建时间
-	UpdateTime   string `json:"update_time"`   // 更新时间
-	ParentId     int    `json:"parent_id"`     //父文件夹id
-	TaskId       int    `json:"task_id"`       //关联任务id,默认为0
-	FileName     string `json:"file_name"`     //文件名称
-	FileVersion  int64  `json:"file_version"`  //文件版本
-	QiniuAddress string `json:"qiniu_address"` //七牛云文件地址
-	QiniuKey     string `json:"qiniu_key"`     //七牛云key,方便删除文件
-	QiniuHash    string `json:"qiniu_hash"`    //七牛云hash
-	FileType     int    `json:"file_type"`     //文件类型
-
+	CreateTime   string `json:"create_time"`    // 创建时间
+	UpdateTime   string `json:"update_time"`    // 更新时间
+	ParentId     int    `json:"parent_id"`      //父文件夹id
+	TaskId       int    `json:"task_id"`        //关联任务id,默认为0
+	FileName     string `json:"file_name"`      //文件名称
+	FileVersion  int64  `json:"file_version"`   //文件版本
+	QiniuAddress string `json:"qiniu_address"`  //七牛云文件地址
+	QiniuKey     string `json:"qiniu_key"`      //七牛云key,方便删除文件
+	QiniuHash    string `json:"qiniu_hash"`     //七牛云hash
+	FileType     int    `json:"file_type"`      //文件类型
+	FileTypeName string `json:"file_type_name"` //类型名
 }

+ 8 - 0
model/fileManager/response/file_folder.go

@@ -8,3 +8,11 @@ type FileFolderResponse struct {
 	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
 	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
 }
+
+type FileFolderResponse2 struct {
+	Id       int    `json:"id"`
+	Name     string `json:"name"`      //文件夹名称,通常为'任务ID_任务名称'
+	ParentId int    `json:"parent_id"` //父文件夹id,默认为0,表示跟目录
+	TaskId   int    `json:"task_id"`   //关联任务id,默认为0,表示无关联
+	TaskName string `json:"task_name"`
+}

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

@@ -1 +1,15 @@
 package response
+
+type FileQiniuResponse struct {
+	Id           uint   `json:"id"`
+	CreateTime   string `json:"create_time"`   // 创建时间
+	UpdateTime   string `json:"update_time"`   // 更新时间
+	ParentId     int    `json:"parent_id"`     //父文件夹id
+	TaskId       int    `json:"task_id"`       //关联任务id,默认为0
+	FileName     string `json:"file_name"`     //文件名称
+	FileVersion  int64  `json:"file_version"`  //文件版本
+	QiniuAddress string `json:"qiniu_address"` //七牛云文件地址
+	QiniuKey     string `json:"qiniu_key"`     //七牛云key,方便删除文件
+	QiniuHash    string `json:"qiniu_hash"`    //七牛云hash
+	FileType     int    `json:"file_type"`     //文件类型
+}

二進制
resource/excel/2022-11-12-pc.xlsx


二進制
resource/excel/2023-02-12-扫码消耗明细.xlsx


二進制
resource/excel/2023-02-13-pc.xlsx


二進制
resource/excel/2023-02-13-扫码消耗明细.xlsx


二進制
resource/excel/2023-02-18-租机台账.xlsx


二進制
resource/excel/2023-02-19-租机台账.xlsx


二進制
resource/excel/2023-02-20-扫码消耗明细.xlsx


二進制
resource/excel/2023-02-20-租机台账.xlsx


二進制
resource/excel/2023-2-28/1677551871.xlsx


+ 2 - 0
router/fileManager/enter.go

@@ -3,5 +3,7 @@ package fileManager
 type RouterGroup struct {
 	// Code generated by log-server Begin; DO NOT EDIT.
 	FileFolderRouter
+	FileTypeRouter
+	FileQiniuRouter
 	// Code generated by log-server End; DO NOT EDIT.
 }

+ 2 - 1
router/fileManager/file_folder.go

@@ -14,6 +14,7 @@ func (e *FileFolderRouter) InitFileFolderRouter(Router *gin.RouterGroup) {
 	{
 		excelRouter.POST("getAllTaskSimple", api.GetAllTaskSimple)   //查询记录
 		excelRouter.POST("addFileFolder", api.AddFileFolder)         //新建文件夹
-		excelRouter.POST("getFolderFileList", api.GetFolderFileList) //新建文件夹
+		excelRouter.POST("getFolderFileList", api.GetFolderFileList) //
+		excelRouter.POST("selectFolderMsg", api.SelectFolderMsg)     //
 	}
 }

+ 22 - 0
router/fileManager/file_qiniu.go

@@ -0,0 +1,22 @@
+package fileManager
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type FileQiniuRouter struct {
+}
+
+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) //删除单个文件
+
+	}
+}

+ 17 - 0
router/fileManager/file_type.go

@@ -0,0 +1,17 @@
+package fileManager
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type FileTypeRouter struct {
+}
+
+func (e *FileTypeRouter) InitFileTypeRouter(Router *gin.RouterGroup) {
+	excelRouter := Router.Group("fileManager")
+	api := v1.ApiGroupApp.FileManagerGroup.ApiFileType
+	{
+		excelRouter.POST("getAllFileType", api.GetAllFileType) //查询
+	}
+}

+ 67 - 20
service/dataStatistics/data_abnormal_rate.go

@@ -183,8 +183,14 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 		global.GVA_LOG.Error("获取机房数据失败RequestXjfTaskData", zap.Error(err))
 		return
 	}
-	xjfJson, _ := simplejson.NewJson(dataXjf)
-	xjfArr, _ := xjfJson.Array()
+	xjfJson, err := simplejson.NewJson(dataXjf)
+	if err != nil {
+		return
+	}
+	xjfArr, err := xjfJson.Array()
+	if err != nil {
+		return
+	}
 	//查询微信扫码订单数
 
 	//var num map[string]map[int]int /*创建集合,存储机房查询日志接口返回值 */
@@ -198,10 +204,19 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 		if k == "登陆_成功" {
 			arrNum6 := make(map[int]int)
 			for _, ss := range action6 {
-				result = s.QueryXjfLogByBatch(ss, actionResult)
+				result, err = s.QueryXjfLogByBatch(ss, actionResult)
+				if err != nil {
+					return
+				}
 				if string(result) != "null" {
-					dataJson, _ := simplejson.NewJson(result)
-					dataArr, _ := dataJson.Array()
+					dataJson, err := simplejson.NewJson(result)
+					if err != nil {
+						return
+					}
+					dataArr, err := dataJson.Array()
+					if err != nil {
+						return
+					}
 					for iii, _ := range dataArr {
 						info := dataJson.GetIndex(iii)
 						gameId, _ := info.Get("game_id").Int()
@@ -220,17 +235,32 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 			}
 			num[k] = arrNum6
 		} else {
-			result = s.QueryXjfLogByBatch(action, actionResult)
+			result, err = s.QueryXjfLogByBatch(action, actionResult)
+			if err != nil {
+				return
+			}
 			if string(result) == "null" {
 				continue
 			}
-			dataJson, _ := simplejson.NewJson(result)
-			dataArr, _ := dataJson.Array()
+			dataJson, err := simplejson.NewJson(result)
+			if err != nil {
+				return
+			}
+			dataArr, err := dataJson.Array()
+			if err != nil {
+				return
+			}
 			arrTemp := make(map[int]int)
 			for iii, _ := range dataArr {
 				info := dataJson.GetIndex(iii)
-				gameId, _ := info.Get("game_id").Int()
-				total, _ := info.Get("total").Int()
+				gameId, err := info.Get("game_id").Int()
+				if err != nil {
+					return
+				}
+				total, err := info.Get("total").Int()
+				if err != nil {
+					return
+				}
 				//global.GVA_LOG.Info(strconv.Itoa(gameId))
 				//global.GVA_LOG.Info(strconv.Itoa(total))
 				//var arr = XjfTotal{GameId: gameId, Total: total}
@@ -314,16 +344,27 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 
 		for iii, _ := range xjfArr {
 			info := xjfJson.GetIndex(iii)
-			gameId, _ := info.Get("game_id").Int()
+			gameId, err := info.Get("game_id").Int()
+			if err != nil {
+				return
+			}
 			if gameId == task.TaskId {
-				orderSuccessRate, _ = info.Get("order_success_rate").String()
+				orderSuccessRate, err = info.Get("order_success_rate").String()
+				if err != nil {
+					return
+				}
 				break
 			}
 		}
 		orderSuccessRateArr := strings.Split(orderSuccessRate, "/")
-		numOrderPay, _ = strconv.Atoi(orderSuccessRateArr[0]) // 付费订单数
-		numPay, _ = strconv.Atoi(orderSuccessRateArr[1])      // 付费成功数
-		ratePaySuccess = orderSuccessRateArr[2]               //付费成功率
+		if len(orderSuccessRateArr) == 3 {
+			numOrderPay, err = strconv.Atoi(orderSuccessRateArr[0]) // 付费订单数
+			numPay, err = strconv.Atoi(orderSuccessRateArr[1])      // 付费成功数
+			if err != nil {
+				return
+			}
+			ratePaySuccess = orderSuccessRateArr[2] //付费成功率
+		}
 
 		var data dataStatistics.DataAbnormalRate
 		data.CreateTime = time.Now().Format("2006-01-02 15:04:05")
@@ -352,16 +393,22 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 		data.NumPay = numPay
 		data.RatePaySuccess = ratePaySuccess
 
-		global.GVA_LOG.Info(data.TaskName)
+		//global.GVA_LOG.Info(data.TaskName)
 
 		if !errors.Is(global.GVA_DB.Model(&dataStatistics.DataAbnormalRate{}).Where("new_date = ? and task_id = ? and hour = ?", newDate, taskId, hour).First(&dataStatistics.DataAbnormalRate{}).Error, gorm.ErrRecordNotFound) {
 			//已存在,更新
 			//global.GVA_LOG.Info("已存在,更新")
-			_ = global.GVA_DB.Model(&dataStatistics.DataAbnormalRate{}).Where("new_date = ? and task_id = ? and hour = ?", newDate, taskId, hour).Updates(data).Error
+			err = global.GVA_DB.Model(&dataStatistics.DataAbnormalRate{}).Where("new_date = ? and task_id = ? and hour = ?", newDate, taskId, hour).Updates(data).Error
+			if err != nil {
+				return
+			}
 		} else {
 			//不存在,新建
 			//global.GVA_LOG.Info("不存在,新建")
-			_ = global.GVA_DB.Create(&data).Error
+			err = global.GVA_DB.Create(&data).Error
+			if err != nil {
+				return
+			}
 		}
 	}
 
@@ -369,7 +416,7 @@ func (s *ServiceDataAbnormalRate) SyncAbnormalRateByBatch() {
 }
 
 // QueryXjfLogByBatch 请求机房任务数据
-func (s *ServiceDataAbnormalRate) QueryXjfLogByBatch(action string, actionResult string) (result []byte) {
+func (s *ServiceDataAbnormalRate) QueryXjfLogByBatch(action string, actionResult string) (result []byte, err error) {
 	today := time.Now().Format("2006-01-02")
 	jfUrl := "http://xjf.lianyou.fun:8099/v1/device/get_log_by_game"
 	jfParams := map[string]string{
@@ -377,7 +424,7 @@ func (s *ServiceDataAbnormalRate) QueryXjfLogByBatch(action string, actionResult
 		"action":        action,
 		"action_result": actionResult,
 	}
-	result, _ = utils.HttpGet(jfUrl, jfParams)
+	result, err = utils.HttpGet(jfUrl, jfParams)
 	return
 }
 

+ 14 - 4
service/dataStatistics/wechat_scanner_api.go

@@ -119,15 +119,25 @@ func (s *ServiceWeChatScannerApi) SyncGetWeChatScannerBalance() {
 	if err != nil {
 		global.GVA_LOG.Error("获取海马扫码余额失败,平台可能异常,请注意排查!!!")
 		keyWord = "获取海马扫码余额失败,平台可能异常,请注意排查!!!,错误信息:" + err.Error() + "\n"
+		content += keyWord
+		url := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
+		_, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
+		return
 	}
 	//global.GVA_LOG.Info("1:" + string(hm))
 	//hm2 := strings.Trim(string(hm), "")
 	hm2 := strings.Replace(string(hm), string(ZWNBSP), empty, -1)
 	hm = []byte(hm2)
-	dataHm, _ := simplejson.NewJson(hm)
-	//global.GVA_LOG.Info("2:" + dataHm)
-	code, _ := dataHm.Get("code").Int()
-
+	dataHm, err := simplejson.NewJson(hm)
+	if err != nil {
+		global.GVA_LOG.Error("NewJson,请注意排查!!!")
+		return
+	}
+	code, err := dataHm.Get("code").Int()
+	if err != nil {
+		global.GVA_LOG.Error("Int,请注意排查!!!")
+		return
+	}
 	balanceHm := "0"
 	if code == 1 {
 		balanceHm, _ = dataHm.Get("data").String()

+ 47 - 16
service/dataStatistics/wechat_scanner_detailed.go

@@ -131,20 +131,36 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 		888811:   {GameName: "热血合击tx-10360903 ", LcPriceNew: 0.35, LcPriceRetained: 0.01, HmPriceNew: 0.4, HmPriceRetained: 0.01},
 	}
 	for k, v := range tencentTasks {
-		result := s.getJfWechatOrder(k, today)
-		dataJson, _ := simplejson.NewJson(result)
-		dataArr, _ := dataJson.Array()
-
+		result, err := s.getJfWechatOrder(k, today)
+		if err != nil {
+			return
+		}
+		dataJson, err := simplejson.NewJson(result)
+		if err != nil {
+			return
+		}
+		dataArr, err := dataJson.Array()
+		if err != nil {
+			return
+		}
 		for index, _ := range dataArr {
 			info := dataJson.GetIndex(index)
 			//GameId, _ := info.Get("GameId").Int()
-			WeChatOrder, _ := info.Get("WeChatOrder").String()
-			Retained, _ := info.Get("Retained").Int()
-			Time, _ := info.Get("Time").String()
+			WeChatOrder, err := info.Get("WeChatOrder").String()
+			Retained, err := info.Get("Retained").Int()
+			Time, err := info.Get("Time").String()
+			if err != nil {
+				return
+			}
 
 			orderArr := strings.Split(WeChatOrder, "|")
-			orderId := orderArr[0]
-			platform := orderArr[1]
+			orderId := ""
+			platform := ""
+			if len(orderArr) == 2 {
+				orderId = orderArr[0]
+				platform = orderArr[1]
+			}
+
 			var data dataStatistics.WeChatScannerDetailed
 			data.NewDate = today
 			data.TaskId = k
@@ -154,7 +170,10 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 			data.AuthorizationTime = Time
 			data.TaskName = v.GameName
 			if errors.Is(global.GVA_DB.Model(&dataStatistics.WeChatScannerDetailed{}).Where("new_date = ? and task_id = ? and order_id = ?", today, k, orderId).First(&dataStatistics.WeChatScannerDetailed{}).Error, gorm.ErrRecordNotFound) {
-				_ = global.GVA_DB.Create(&data).Error
+				err = global.GVA_DB.Create(&data).Error
+				if err != nil {
+					return
+				}
 			}
 		}
 		//计算微信扫码消耗
@@ -171,7 +190,10 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 			PriceRetained := 0.00
 			UnitPriceNew := 0.00
 			UnitPriceRetained := 0.00
-			_ = global.GVA_DB.Model(&dataStatistics.WeChatScannerDetailed{}).Select("platform", "COUNT(*) AS count").Where("new_date = ? and task_id = ? and platform = ? and new_retained = 1", today, k, platform).First(&listNum).Error
+			err = global.GVA_DB.Model(&dataStatistics.WeChatScannerDetailed{}).Select("platform", "COUNT(*) AS count").Where("new_date = ? and task_id = ? and platform = ? and new_retained = 1", today, k, platform).First(&listNum).Error
+			if err != nil {
+				return
+			}
 			for _, e := range listNum {
 				if e.Platform == "海马" {
 					PriceNew = v.HmPriceNew * float64(e.Count)
@@ -184,7 +206,10 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 				}
 			}
 			var listNum2 []PlatformNum
-			_ = global.GVA_DB.Model(&dataStatistics.WeChatScannerDetailed{}).Select("platform", "COUNT(*) AS count").Where("new_date = ? and task_id = ? and platform = ? and new_retained >= 2", today, k, platform).First(&listNum2).Error
+			err = global.GVA_DB.Model(&dataStatistics.WeChatScannerDetailed{}).Select("platform", "COUNT(*) AS count").Where("new_date = ? and task_id = ? and platform = ? and new_retained >= 2", today, k, platform).First(&listNum2).Error
+			if err != nil {
+				return
+			}
 			for _, e := range listNum2 {
 				if e.Platform == "海马" {
 					PriceRetained = v.HmPriceRetained * float64(e.Count)
@@ -205,9 +230,15 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 			//global.GVA_LOG.Info(db1Ledger.LedgerRetained)
 			//global.GVA_LOG.Info(db1Ledger.Ledger)
 			if !errors.Is(global.GVA_DB.Model(&dataStatistics.WeChatScannerLedger{}).Where("new_date = ? and task_id = ? and platform = ?", today, k, platform).First(&dataStatistics.WeChatScannerLedger{}).Error, gorm.ErrRecordNotFound) {
-				_ = global.GVA_DB.Model(&dataStatistics.WeChatScannerLedger{}).Where("new_date = ? and task_id = ? and platform = ?", today, k, platform).Updates(db1Ledger).Error
+				err = global.GVA_DB.Model(&dataStatistics.WeChatScannerLedger{}).Where("new_date = ? and task_id = ? and platform = ?", today, k, platform).Updates(db1Ledger).Error
+				if err != nil {
+					return
+				}
 			} else {
-				_ = global.GVA_DB.Create(&db1Ledger).Error
+				err = global.GVA_DB.Create(&db1Ledger).Error
+				if err != nil {
+					return
+				}
 			}
 
 		}
@@ -218,12 +249,12 @@ func (s *ServiceWeChatScannerDetailed) SyncWeChatScannerDetailed(today string) {
 // SyncGetWeChatScannerBalance 定时获取扫码平台余额
 //
 // getJfWechatOrder 获取机房后台微信订单列表信息
-func (s *ServiceWeChatScannerDetailed) getJfWechatOrder(gameId int, date string) (result []byte) {
+func (s *ServiceWeChatScannerDetailed) getJfWechatOrder(gameId int, date string) (result []byte, err error) {
 	jfUrl := "http://xjf.lianyou.fun:8099/v1/account/get_wechat_order"
 	jfParams := map[string]string{
 		"game_id": strconv.Itoa(gameId),
 		"date":    date,
 	}
-	result, _ = utils.HttpGet(jfUrl, jfParams)
+	result, err = utils.HttpGet(jfUrl, jfParams)
 	return
 }

+ 12 - 6
service/dataStatistics/wechat_scanner_ledger.go

@@ -36,9 +36,9 @@ func (s *ServiceWeChatScannerLedger) WeChatScannerLedgerList(ctx context.Context
 	}
 	var total int64
 	err := db.Count(&total).Error
-	//if err != nil {
-	//	return nil, 0, err
-	//}
+	if err != nil {
+		return nil, 0, err
+	}
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	//var statisticsLogs []*log.LogComputer
@@ -90,11 +90,14 @@ func (s *ServiceWeChatScannerLedger) WeChatScannerLedgerList(ctx context.Context
 
 func (exa *ServiceWeChatScannerLedger) ParseInfoList2Excel(infoList []*response.WeChatScannerLedgerResponse, filePath string) error {
 	excel := excelize.NewFile()
-	_ = excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "任务ID", "任务名称", "平台", "新增单价", "留存单价", "总消耗", "新增消耗", "留存消耗"})
+	err := excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "任务ID", "任务名称", "平台", "新增单价", "留存单价", "总消耗", "新增消耗", "留存消耗"})
+	if err != nil {
+		return err
+	}
 
 	for i, one := range infoList {
 		axis := fmt.Sprintf("A%d", i+2)
-		_ = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
+		err = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
 			one.NewDate,
 			one.TaskId,
 			one.TaskName,
@@ -105,7 +108,10 @@ func (exa *ServiceWeChatScannerLedger) ParseInfoList2Excel(infoList []*response.
 			one.LedgerNew,
 			one.LedgerRetained,
 		})
+		if err != nil {
+			return err
+		}
 	}
-	err := excel.SaveAs(filePath)
+	err = excel.SaveAs(filePath)
 	return err
 }

+ 2 - 0
service/fileManager/enter.go

@@ -4,6 +4,8 @@ type ServiceGroup struct {
 	// Code generated by log-server Begin; DO NOT EDIT.
 	ServiceFileFolder
 	ServiceDownLoadUrl
+	ServiceFileType
+	ServiceFileQiniu
 	//ServiceRentComputerShop
 	//ServiceRentSetMeal
 	//ServiceRentComputerLedger

+ 36 - 44
service/fileManager/file_folder.go

@@ -3,7 +3,6 @@ package fileManager
 import (
 	"context"
 	"errors"
-	"go.uber.org/zap"
 	"gorm.io/gorm"
 	"log-server/global"
 	"log-server/model/fileManager"
@@ -16,50 +15,19 @@ import (
 type ServiceFileFolder struct {
 }
 
-// FileList 获取当前父文件夹下所有的子文件夹和文件
-func (s *ServiceFileFolder) FileList(ctx context.Context, api fileManager.FileFolder, info request.PageInfo, order string, desc bool) (interface{}, int64, error) {
+// FileFolderList 获取当前父文件夹下所有的子文件夹
+func (s *ServiceFileFolder) FileFolderList(ctx context.Context, api fileManager.FileFolder) (interface{}, error) {
 	//开始查询当前父文件夹下的所有文件夹(目录)
 	db := global.GVA_DB.Model(&fileManager.FileFolder{})
 	db = db.Where("parent_id = ?", api.ParentId)
-	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 folderListRes []*response.FileFolderResponse
-	db = db.Limit(limit).Offset(offset)
-	if order != "" {
-		var OrderStr string
-		// 设置有效排序key 防止sql注入
-		// 感谢 Tom4t0 提交漏洞信息
-		orderMap := make(map[string]bool, 3)
-		orderMap["name"] = true
-		//orderMap["game_id"] = true
-		//orderMap["operator"] = 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 folderListRes, total, err
-		}
-		err = db.Order(OrderStr).Find(&folderListRes).Error
-	} else {
-		err = db.Order("name").Find(&folderListRes).Error
-	}
+	err := db.Order("name").Find(&folderListRes).Error
 	if err != nil {
-		return nil, 0, err
+		return nil, err
 	}
 	var folderList []*response.FileFolderResponse
-
 	for _, one := range folderListRes {
-
 		folder := new(response.FileFolderResponse)
 		folder.Id = one.Id
 		folder.UpdateTime = one.UpdateTime
@@ -69,10 +37,7 @@ func (s *ServiceFileFolder) FileList(ctx context.Context, api fileManager.FileFo
 		folder.TaskId = one.TaskId
 		folderList = append(folderList, folder)
 	}
-	//开始查询当前父文件夹下的所有文件
-
-	//===============================
-	return folderList, total, err
+	return folderList, err
 }
 
 //
@@ -125,12 +90,15 @@ func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderReques
 	if err != nil {
 		return requestFolder.ParentId, requestFolder.Name, err
 	}
-	//判断如果是与任务相关联,则默认创建脚本、镜像、游戏包三个文件夹
-	folderDefaultList := []string{"脚本", "镜像", "apk"}
+	//判断如果是与任务相关联,则默认创建几个文件夹
+	serviceFileType := new(ServiceFileType)
+	typeList, _ := serviceFileType.GetAllFileType()
+
+	//folderDefaultList := []string{"易语言脚本", "雷电镜像", "游戏包", "夜神镜像", "其他文件"}
 	if requestFolder.TaskId != 0 {
-		for _, name := range folderDefaultList {
+		for _, v := range typeList {
 			one := new(fileManager.FileFolder)
-			one.Name = name
+			one.Name = v.Name
 			one.ParentId = insertFolder.Id
 			one.TaskId = 0
 			one.CreateTime = time.Now().Format("2006-01-02 15:04:05")
@@ -151,3 +119,27 @@ func (s *ServiceFileFolder) GetAllTaskSimple() (list interface{}, err error) {
 	err = db.Order("id").Find(&taskList).Error
 	return taskList, err
 }
+
+// SelectFolderMsg 查询目录信息
+func (s *ServiceFileFolder) SelectFolderMsg(requestFolder request.FileFolderRequest) (interface{}, error) {
+	var folder fileManager.FileFolder
+	err := global.GVA_DB.Where("id = ?", requestFolder.Id).First(&folder).Error
+	if err != nil {
+		return nil, errors.New("目录不存在")
+	} else {
+		if folder.TaskId == 0 {
+			return nil, errors.New("不是上层目录")
+		}
+		var taskInfo task.GameTask
+		db := global.GVA_DB.Model(&task.GameTask{})
+		db.Where("task_id", folder.TaskId)
+		err := db.Find(&taskInfo).Error
+		var res response.FileFolderResponse2
+		res.Id = folder.Id
+		res.Name = folder.Name
+		res.ParentId = folder.ParentId
+		res.TaskId = folder.TaskId
+		res.TaskName = taskInfo.TaskName
+		return res, err
+	}
+}

+ 129 - 0
service/fileManager/file_qiniu.go

@@ -0,0 +1,129 @@
+package fileManager
+
+import (
+	"errors"
+	"fmt"
+	"github.com/qiniu/api.v7/v7/auth/qbox"
+	"github.com/qiniu/api.v7/v7/storage"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/fileManager"
+	"log-server/model/fileManager/request"
+	"log-server/model/fileManager/response"
+	"time"
+)
+
+type ServiceFileQiniu struct {
+}
+
+// 公司七牛信息
+const accessKey = "B81Gsvry2StqKVE3txS-7v9GBBfqykC9zhebmxnW" //七牛云ak,sk,bucket
+const secretKey = "YEZJuYcdeF7vRvzffxpopAVR-jMPZg9pZ-4IKTVW"
+const bucket0 = "pinaishop"
+const CName = "http://cdn.pinaishop.kfzs.com/" //七牛云外链
+
+// QueryVersionByType 查询某一类文件最新的版本号
+func (s *ServiceFileQiniu) QueryVersionByType(req request.FileQiniuRequest) (int64, error) {
+	file := fileManager.FileQiniu{}
+	if errors.Is(global.GVA_DB.Model(&fileManager.FileQiniu{}).Where("task_id = ? and file_type = ?", req.TaskId, req.FileType).Order("file_version desc").First(&file).Error, gorm.ErrRecordNotFound) {
+		return 0, nil
+	}
+	return file.FileVersion, nil
+}
+
+// AddQiniuFile 新增文件
+func (s *ServiceFileQiniu) AddQiniuFile(requestCoding request.FileQiniuRequest) (err error) {
+	//查询真实的父文件夹ID
+	parentFolder := fileManager.FileFolder{}
+	global.GVA_LOG.Info(requestCoding.FileTypeName)
+	err = global.GVA_DB.Where("parent_id = ? and name = ?", requestCoding.ParentId, requestCoding.FileTypeName).First(&parentFolder).Error
+	//==================================
+	if !errors.Is(global.GVA_DB.Where("parent_id = ? and file_name = ?", requestCoding.ParentId, requestCoding.FileName).First(&fileManager.FileQiniu{}).Error, gorm.ErrRecordNotFound) {
+		return errors.New("该目录下已存在同名文件")
+	}
+	file := new(fileManager.FileQiniu)
+	file.ParentId = parentFolder.Id
+	file.TaskId = requestCoding.TaskId
+	file.FileName = requestCoding.FileName
+	file.FileVersion = requestCoding.FileVersion
+	file.QiniuAddress = requestCoding.QiniuAddress
+	file.QiniuKey = requestCoding.QiniuKey
+	file.QiniuHash = requestCoding.QiniuHash
+	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")
+	return global.GVA_DB.Create(&file).Error
+}
+
+// QueryFilesByParentId 查询当前目录下的文件
+func (s *ServiceFileQiniu) QueryFilesByParentId(parentId int) (interface{}, error) {
+	db := global.GVA_DB.Model(&fileManager.FileQiniu{})
+	db = db.Where("parent_id = ?", parentId)
+	var fileList []*response.FileQiniuResponse
+	err := db.Order("create_time desc").Find(&fileList).Error
+	if err != nil {
+		return nil, err
+	}
+	return fileList, err
+}
+
+// GetQiniuToken 获取七牛上传token
+func (s *ServiceFileQiniu) GetQiniuToken() interface{} {
+	putPolicy := storage.PutPolicy{
+		Scope:      bucket0,
+		ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
+	}
+	putPolicy.Expires = 3600 * 5 //设置有效期时长为5小时
+	mac := qbox.NewMac(accessKey, secretKey)
+	uploadToken := putPolicy.UploadToken(mac)
+	date := map[string]string{
+		"token": uploadToken,
+		"cName": CName,
+	}
+	return date
+}
+
+// DeleteQiniuFile 删除单个文件
+func (s *ServiceFileQiniu) DeleteQiniuFile(requestCoding request.FileQiniuRequest) (err error) {
+	mac := qbox.NewMac(accessKey, secretKey)
+	cfg := storage.Config{
+		// 是否使用https域名进行资源管理
+		UseHTTPS: true,
+	}
+	// 指定空间所在的区域,如果不指定将自动探测
+	// 如果没有特殊需求,默认不需要指定
+	//cfg.Region=&storage.ZoneHuabei
+	bucketManager := storage.NewBucketManager(mac, &cfg)
+	bucket := bucket0
+	key := requestCoding.QiniuKey
+	//
+	err = bucketManager.Delete(bucket, key)
+	if err != nil {
+		fmt.Println(err)
+		return err
+	}
+	return err
+}
+
+// DeleteQiniuFileAndRecord 从七牛云删除文件并且清除数据库记录
+func (s *ServiceFileQiniu) DeleteQiniuFileAndRecord(requestCoding request.FileQiniuRequest) (err error) {
+	mac := qbox.NewMac(accessKey, secretKey)
+	cfg := storage.Config{
+		// 是否使用https域名进行资源管理
+		UseHTTPS: true,
+	}
+	// 指定空间所在的区域,如果不指定将自动探测
+	// 如果没有特殊需求,默认不需要指定
+	//cfg.Region=&storage.ZoneHuabei
+	bucketManager := storage.NewBucketManager(mac, &cfg)
+	bucket := bucket0
+	key := requestCoding.QiniuKey
+	//
+	err = bucketManager.Delete(bucket, key)
+	if err != nil {
+		fmt.Println(err)
+		return err
+	}
+	err = global.GVA_DB.Delete(&fileManager.FileQiniu{}, "id = ?", requestCoding.Id).Error
+	return err
+}

+ 17 - 0
service/fileManager/file_type.go

@@ -0,0 +1,17 @@
+package fileManager
+
+import (
+	"log-server/global"
+	"log-server/model/fileManager"
+)
+
+type ServiceFileType struct {
+}
+
+// GetAllFileType 查询所有
+func (s *ServiceFileType) GetAllFileType() ([]fileManager.FileType, error) {
+	var typeList []fileManager.FileType
+	db := global.GVA_DB.Model(&fileManager.FileType{})
+	err := db.Order("id").Find(&typeList).Error
+	return typeList, err
+}

+ 7 - 4
service/rentComputer/rent_computer.go

@@ -57,9 +57,9 @@ func (s *ServiceRentComputer) RentComputerList(ctx context.Context, api rentComp
 
 	var total int64
 	err := db.Count(&total).Error
-	//if err != nil {
-	//	return nil, 0, err
-	//}
+	if err != nil {
+		return nil, 0, err
+	}
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	//var statisticsLogs []*log.LogComputer
@@ -427,7 +427,10 @@ func (exa *ServiceRentComputer) ParseExcel2InfoList(filePath string) (err error)
 				return errors.New("Excel格式错误")
 			}
 		}
-
+		if len(row) == 0 {
+			//global.GVA_LOG.Info("数组为空")
+			continue
+		}
 		c := new(rentComputer.RentComputer)
 		c.PcNum = row[0]
 		c.PcName = row[0]

+ 10 - 5
service/rentComputer/rent_computer_ledger.go

@@ -130,13 +130,15 @@ func (service *ServiceRentComputerLedger) GetRentComputerLedgerNum(ctx context.C
 	return total
 }
 
-func (service *ServiceRentComputerLedger) ParseInfoList2Excel(infoList []*response.RentComputerLedgerResponse, filePath string) error {
+func (service *ServiceRentComputerLedger) ParseInfoList2Excel(infoList []*response.RentComputerLedgerResponse, filePath string) (err error) {
 	excel := excelize.NewFile()
-	_ = excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "供应商", "编号", "起租日期", "到期日期", "租期", "套餐", "价格", "天租金", "已产生租金", "备注"})
-
+	err = excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "供应商", "编号", "起租日期", "到期日期", "租期", "套餐", "价格", "天租金", "已产生租金", "备注"})
+	if err != nil {
+		return err
+	}
 	for i, one := range infoList {
 		axis := fmt.Sprintf("A%d", i+2)
-		_ = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
+		err = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
 			one.NewDate,
 			one.ShopName,
 			one.PcNum,
@@ -149,7 +151,10 @@ func (service *ServiceRentComputerLedger) ParseInfoList2Excel(infoList []*respon
 			one.RentPriceUsedThen,
 			one.Remark,
 		})
+		if err != nil {
+			return err
+		}
 	}
-	err := excel.SaveAs(filePath)
+	err = excel.SaveAs(filePath)
 	return err
 }