Przeglądaj źródła

文件上传未完成

倚楼听风雨 3 lat temu
rodzic
commit
1edfb9138a

+ 2 - 0
api/v1/enter.go

@@ -3,6 +3,7 @@ package v1
 import (
 	"log-server/api/v1/dataStatistics"
 	"log-server/api/v1/example"
+	"log-server/api/v1/fileManager"
 	"log-server/api/v1/log"
 	"log-server/api/v1/rentComputer"
 	"log-server/api/v1/system"
@@ -19,6 +20,7 @@ type ApiGroup struct {
 	GroupTask            task.GroupTask
 	RentComputerApiGroup rentComputer.ApiGroup
 	DataStatisticsGroup  dataStatistics.ApiGroup
+	FileManagerGroup     fileManager.ApiGroup
 }
 
 var ApiGroupApp = new(ApiGroup)

+ 19 - 0
api/v1/fileManager/enter.go

@@ -0,0 +1,19 @@
+package fileManager
+
+import "log-server/service"
+
+type ApiGroup struct {
+	// Code generated by log-server Begin; DO NOT EDIT.
+	ApiFileFolder
+	//ApiRentComputerShop
+	//ApiRentSetMeal
+	//ApiRentComputerLedger
+	// Code generated by log-server End; DO NOT EDIT.
+}
+
+var (
+	ServiceFileFolder = service.ServiceGroupApp.FileManagerServiceGroup.ServiceFileFolder
+	// ServiceRentComputerLedger = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentComputerLedger
+	// ServiceRentComputerShop   = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentComputerShop
+	// ServiceRentSetMeal        = service.ServiceGroupApp.RentComputerServiceGroup.ServiceRentSetMeal
+)

+ 25 - 0
api/v1/fileManager/file_folder.go

@@ -0,0 +1,25 @@
+package fileManager
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/response"
+)
+
+type ApiFileFolder struct {
+}
+
+// GetAllTaskSimple 查询所有任务
+func (api *ApiFileFolder) GetAllTaskSimple(c *gin.Context) {
+
+	if list, err := ServiceFileFolder.GetAllTaskSimple(); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		//响应结果
+		response.OkWithDetailed(response.PageResult{
+			List: list,
+		}, "获取成功", c)
+	}
+}

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

@@ -0,0 +1,4 @@
+package fileManager
+
+type ApiFileQiniu struct {
+}

+ 2 - 0
initialize/router.go

@@ -25,6 +25,7 @@ func Routers() *gin.Engine {
 	typeManageRouter := router.RouterGroupApp.TypeManage
 	rentComputerRouter := router.RouterGroupApp.RentComputer
 	dataStatisticsRouter := router.RouterGroupApp.DataStatistics
+	fileManagerRouter := router.RouterGroupApp.FileManager
 	// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
 	// VUE_APP_BASE_API = /
 	// VUE_APP_BASE_PATH = http://localhost
@@ -72,6 +73,7 @@ func Routers() *gin.Engine {
 		dataStatisticsRouter.InitWeChatScannerApiRouter(PublicGroup)      //数据统计
 		dataStatisticsRouter.InitWeChatScannerDetailedRouter(PublicGroup) //数据统计
 		dataStatisticsRouter.InitWeChatScannerLedgerRouter(PublicGroup)   //数据统计
+		fileManagerRouter.InitFileFolderRouter(PublicGroup)
 
 	}
 	PrivateGroup := Router.Group("")

+ 15 - 0
model/fileManager/file_folder.go

@@ -0,0 +1,15 @@
+package fileManager
+
+// FileFolder 文件夹
+type FileFolder struct {
+	Id         uint   `json:"id"`
+	CreateTime string `json:"create_time"` // 创建时间
+	UpdateTime string `json:"update_time"` // 更新时间
+	Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
+	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
+	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
+}
+
+func (FileFolder) TableName() string {
+	return "file_folder"
+}

+ 67 - 0
model/fileManager/file_qiniu.go

@@ -0,0 +1,67 @@
+package fileManager
+
+// FileQiniu 七牛文件
+type FileQiniu 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"`     //文件类型
+	//文件类型
+	/**
+	  {
+	    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 (FileQiniu) TableName() string {
+	return "file_qiniu"
+}

+ 28 - 0
model/fileManager/request/common.go

@@ -0,0 +1,28 @@
+package request
+
+// PageInfo Paging common input parameter structure
+type PageInfo struct {
+	Page     int    `json:"page" form:"page"`         // 页码
+	PageSize int    `json:"pageSize" form:"pageSize"` // 每页大小
+	Keyword  string `json:"keyword" form:"keyword"`   //关键字
+}
+
+// GetById Find by id structure
+type GetById struct {
+	ID int `json:"id" form:"id"` // 主键ID
+}
+
+func (r *GetById) Uint() uint {
+	return uint(r.ID)
+}
+
+type IdsReq struct {
+	Ids []int `json:"ids" form:"ids"`
+}
+
+// GetAuthorityId Get role by id structure
+type GetAuthorityId struct {
+	AuthorityId uint `json:"authorityId" form:"authorityId"` // 角色ID
+}
+
+type Empty struct{}

+ 10 - 0
model/fileManager/request/file_folder.go

@@ -0,0 +1,10 @@
+package request
+
+type FileFolderRequest struct {
+	Id         uint   `json:"id"`
+	CreateTime string `json:"create_time"` // 创建时间
+	UpdateTime string `json:"update_time"` // 更新时间
+	Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
+	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
+	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
+}

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

@@ -0,0 +1,16 @@
+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"`     //文件类型
+
+}

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

@@ -0,0 +1,8 @@
+package response
+
+type PageResult struct {
+	List     interface{} `json:"list"`
+	Total    int64       `json:"total"`
+	Page     int         `json:"page"`
+	PageSize int         `json:"pageSize"`
+}

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

@@ -0,0 +1,10 @@
+package response
+
+type FileFolderResponse struct {
+	Id         uint   `json:"id"`
+	CreateTime string `json:"create_time"` // 创建时间
+	UpdateTime string `json:"update_time"` // 更新时间
+	Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
+	ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
+	TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
+}

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

@@ -0,0 +1 @@
+package response

+ 2 - 0
router/enter.go

@@ -3,6 +3,7 @@ package router
 import (
 	"log-server/router/dataStatistics"
 	"log-server/router/example"
+	"log-server/router/fileManager"
 	"log-server/router/log"
 	"log-server/router/rentComputer"
 	"log-server/router/system"
@@ -19,6 +20,7 @@ type RouterGroup struct {
 	Task           task.GameTaskRouter
 	RentComputer   rentComputer.RouterGroup
 	DataStatistics dataStatistics.RouterGroup
+	FileManager    fileManager.RouterGroup
 }
 
 var RouterGroupApp = new(RouterGroup)

+ 7 - 0
router/fileManager/enter.go

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

+ 17 - 0
router/fileManager/file_folder.go

@@ -0,0 +1,17 @@
+package fileManager
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type FileFolderRouter struct {
+}
+
+func (e *FileFolderRouter) InitFileFolderRouter(Router *gin.RouterGroup) {
+	excelRouter := Router.Group("fileManager")
+	api := v1.ApiGroupApp.FileManagerGroup.ApiFileFolder
+	{
+		excelRouter.POST("getAllTaskSimple", api.GetAllTaskSimple) //查询记录
+	}
+}

+ 2 - 0
service/enter.go

@@ -3,6 +3,7 @@ package service
 import (
 	"log-server/service/dataStatistics"
 	"log-server/service/example"
+	"log-server/service/fileManager"
 	"log-server/service/log"
 	"log-server/service/rentComputer"
 	"log-server/service/system"
@@ -18,6 +19,7 @@ type ServiceGroup struct {
 	TaskServiceGroup           task.ServiceGroup
 	RentComputerServiceGroup   rentComputer.ServiceGroup
 	DataStatisticsServiceGroup dataStatistics.ServiceGroup
+	FileManagerServiceGroup    fileManager.ServiceGroup
 }
 
 var ServiceGroupApp = new(ServiceGroup)

+ 10 - 0
service/fileManager/enter.go

@@ -0,0 +1,10 @@
+package fileManager
+
+type ServiceGroup struct {
+	// Code generated by log-server Begin; DO NOT EDIT.
+	ServiceFileFolder
+	//ServiceRentComputerShop
+	//ServiceRentSetMeal
+	//ServiceRentComputerLedger
+	// Code generated by log-server End; DO NOT EDIT.
+}

+ 135 - 0
service/fileManager/file_folder.go

@@ -0,0 +1,135 @@
+package fileManager
+
+import (
+	"context"
+	"errors"
+	"go.uber.org/zap"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/fileManager"
+	"log-server/model/fileManager/request"
+	"log-server/model/fileManager/response"
+	"log-server/model/task"
+	"time"
+)
+
+type ServiceFileFolder struct {
+}
+
+// fileList 获取当前父文件夹下所有的子文件夹和文件
+func (s *ServiceFileFolder) fileList(ctx context.Context, api fileManager.FileFolder, info request.PageInfo, order string, desc bool) (interface{}, int64, error) {
+	//开始查询当前父文件夹下的所有文件夹(目录)
+	db := global.GVA_DB.Model(&fileManager.FileFolder{})
+	if api.ParentId != 0 {
+		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["pc_num"] = 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("id").Find(&folderListRes).Error
+	}
+	if err != nil {
+		return nil, 0, err
+	}
+	var folderList []*response.FileFolderResponse
+
+	for _, one := range folderListRes {
+
+		folder := new(response.FileFolderResponse)
+		folder.Id = one.Id
+		folder.UpdateTime = one.UpdateTime
+		folder.CreateTime = one.CreateTime
+		folder.Name = one.Name
+		folder.ParentId = one.ParentId
+		folder.TaskId = one.TaskId
+		folderList = append(folderList, folder)
+	}
+	//开始查询当前父文件夹下的所有文件
+
+	//===============================
+	return folderList, total, err
+}
+
+//
+//func (s *ServiceRentComputer) GetRentComputerNum(ctx context.Context, api rentComputer.RentComputer) int64 {
+//	var total int64
+//
+//	db := global.GVA_DB.Model(&rentComputer.RentComputer{})
+//	db = db.Distinct("id")
+//	//db = db.Where("is_off_shelf = 0 and is_expire != 1")
+//	if api.PcNum != "" {
+//		db = db.Where("rent_computer.pc_num = ?", api.PcNum)
+//	}
+//	if api.ShopId != 0 {
+//		db = db.Where("rent_computer.shop_id = ?", api.ShopId)
+//	}
+//	if api.SetMealId != 0 {
+//		db = db.Where("rent_computer.set_meal_id = ?", api.SetMealId)
+//	}
+//	if api.DirectorName != "ALL" {
+//		if api.DirectorName == "" {
+//			db = db.Where("rent_computer.director_name IS NULL")
+//		} else {
+//			db = db.Where("rent_computer.director_name = ?", api.DirectorName)
+//		}
+//	}
+//	if api.IsExpire != -1 {
+//		db = db.Where("rent_computer.is_expire = ?", api.IsExpire)
+//	}
+//	_ = db.Count(&total).Error
+//	return total
+//}
+
+func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderRequest) (err error) {
+	//Id         uint   `json:"id"`
+	//CreateTime string `json:"create_time"` // 创建时间
+	//UpdateTime string `json:"update_time"` // 更新时间
+	//Name       string `json:"name"`        //文件夹名称,通常为'任务ID_任务名称'
+	//ParentId   int    `json:"parent_id"`   //父文件夹id,默认为0,表示跟目录
+	//TaskId     int    `json:"task_id"`     //关联任务id,默认为0,表示无关联
+	if !errors.Is(global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&fileManager.FileFolder{}).Error, gorm.ErrRecordNotFound) {
+		return errors.New("文件夹已存在")
+	}
+	folder := new(fileManager.FileFolder)
+	folder.Name = requestFolder.Name
+	folder.ParentId = requestFolder.ParentId
+	folder.TaskId = requestFolder.TaskId
+	folder.CreateTime = time.Now().Format("2006-01-02 15:04:05")
+	folder.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
+	return global.GVA_DB.Create(&folder).Error
+}
+
+// GetAllTaskSimple 查询所有任务
+func (s *ServiceFileFolder) GetAllTaskSimple() (list interface{}, err error) {
+	var taskList []task.GameTask
+	db := global.GVA_DB.Model(&task.GameTask{})
+	err = db.Order("id").Find(&taskList).Error
+	return taskList, err
+}