|
|
@@ -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
|
|
|
+}
|