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{}) 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 } 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) (parentId int, parentName string, err error) { 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 requestFolder.ParentId, requestFolder.Name, 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") err = global.GVA_DB.Create(&folder).Error if err != nil { return requestFolder.ParentId, requestFolder.Name, err } //查询刚刚创建文件夹的id insertFolder := fileManager.FileFolder{} err = global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&insertFolder).Error if err != nil { return requestFolder.ParentId, requestFolder.Name, err } //判断如果是与任务相关联,则默认创建脚本、镜像、游戏包三个文件夹 folderDefaultList := []string{"脚本", "镜像", "apk"} if requestFolder.TaskId != 0 { for _, name := range folderDefaultList { one := new(fileManager.FileFolder) one.Name = name one.ParentId = insertFolder.Id one.TaskId = 0 one.CreateTime = time.Now().Format("2006-01-02 15:04:05") one.UpdateTime = time.Now().Format("2006-01-02 15:04:05") err = global.GVA_DB.Create(&one).Error if err != nil { return requestFolder.ParentId, requestFolder.Name, err } } } return insertFolder.Id, insertFolder.Name, err } // 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 }