file_folder.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package fileManager
  2. import (
  3. "context"
  4. "errors"
  5. "go.uber.org/zap"
  6. "gorm.io/gorm"
  7. "log-server/global"
  8. "log-server/model/fileManager"
  9. "log-server/model/fileManager/request"
  10. "log-server/model/fileManager/response"
  11. "log-server/model/task"
  12. "time"
  13. )
  14. type ServiceFileFolder struct {
  15. }
  16. // FileList 获取当前父文件夹下所有的子文件夹和文件
  17. func (s *ServiceFileFolder) FileList(ctx context.Context, api fileManager.FileFolder, info request.PageInfo, order string, desc bool) (interface{}, int64, error) {
  18. //开始查询当前父文件夹下的所有文件夹(目录)
  19. db := global.GVA_DB.Model(&fileManager.FileFolder{})
  20. db = db.Where("parent_id = ?", api.ParentId)
  21. var total int64
  22. err := db.Count(&total).Error
  23. if err != nil {
  24. return nil, 0, err
  25. }
  26. limit := info.PageSize
  27. offset := info.PageSize * (info.Page - 1)
  28. //var statisticsLogs []*log.LogComputer
  29. var folderListRes []*response.FileFolderResponse
  30. db = db.Limit(limit).Offset(offset)
  31. if order != "" {
  32. var OrderStr string
  33. // 设置有效排序key 防止sql注入
  34. // 感谢 Tom4t0 提交漏洞信息
  35. orderMap := make(map[string]bool, 3)
  36. orderMap["name"] = true
  37. //orderMap["game_id"] = true
  38. //orderMap["operator"] = true
  39. if orderMap[order] {
  40. if desc {
  41. OrderStr = order + " desc"
  42. } else {
  43. OrderStr = order
  44. }
  45. } else { // didn't matched any order key in `orderMap`
  46. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  47. return folderListRes, total, err
  48. }
  49. err = db.Order(OrderStr).Find(&folderListRes).Error
  50. } else {
  51. err = db.Order("name").Find(&folderListRes).Error
  52. }
  53. if err != nil {
  54. return nil, 0, err
  55. }
  56. var folderList []*response.FileFolderResponse
  57. for _, one := range folderListRes {
  58. folder := new(response.FileFolderResponse)
  59. folder.Id = one.Id
  60. folder.UpdateTime = one.UpdateTime
  61. folder.CreateTime = one.CreateTime
  62. folder.Name = one.Name
  63. folder.ParentId = one.ParentId
  64. folder.TaskId = one.TaskId
  65. folderList = append(folderList, folder)
  66. }
  67. //开始查询当前父文件夹下的所有文件
  68. //===============================
  69. return folderList, total, err
  70. }
  71. //
  72. //func (s *ServiceRentComputer) GetRentComputerNum(ctx context.Context, api rentComputer.RentComputer) int64 {
  73. // var total int64
  74. //
  75. // db := global.GVA_DB.Model(&rentComputer.RentComputer{})
  76. // db = db.Distinct("id")
  77. // //db = db.Where("is_off_shelf = 0 and is_expire != 1")
  78. // if api.PcNum != "" {
  79. // db = db.Where("rent_computer.pc_num = ?", api.PcNum)
  80. // }
  81. // if api.ShopId != 0 {
  82. // db = db.Where("rent_computer.shop_id = ?", api.ShopId)
  83. // }
  84. // if api.SetMealId != 0 {
  85. // db = db.Where("rent_computer.set_meal_id = ?", api.SetMealId)
  86. // }
  87. // if api.DirectorName != "ALL" {
  88. // if api.DirectorName == "" {
  89. // db = db.Where("rent_computer.director_name IS NULL")
  90. // } else {
  91. // db = db.Where("rent_computer.director_name = ?", api.DirectorName)
  92. // }
  93. // }
  94. // if api.IsExpire != -1 {
  95. // db = db.Where("rent_computer.is_expire = ?", api.IsExpire)
  96. // }
  97. // _ = db.Count(&total).Error
  98. // return total
  99. //}
  100. func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderRequest) (parentId int, parentName string, err error) {
  101. 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) {
  102. return requestFolder.ParentId, requestFolder.Name, errors.New("文件夹已存在")
  103. }
  104. folder := new(fileManager.FileFolder)
  105. folder.Name = requestFolder.Name
  106. folder.ParentId = requestFolder.ParentId
  107. folder.TaskId = requestFolder.TaskId
  108. folder.CreateTime = time.Now().Format("2006-01-02 15:04:05")
  109. folder.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
  110. err = global.GVA_DB.Create(&folder).Error
  111. if err != nil {
  112. return requestFolder.ParentId, requestFolder.Name, err
  113. }
  114. //查询刚刚创建文件夹的id
  115. insertFolder := fileManager.FileFolder{}
  116. err = global.GVA_DB.Where("name = ? and parent_id = ? and task_id = ?", requestFolder.Name, requestFolder.ParentId, requestFolder.TaskId).First(&insertFolder).Error
  117. if err != nil {
  118. return requestFolder.ParentId, requestFolder.Name, err
  119. }
  120. //判断如果是与任务相关联,则默认创建脚本、镜像、游戏包三个文件夹
  121. folderDefaultList := []string{"脚本", "镜像", "apk"}
  122. if requestFolder.TaskId != 0 {
  123. for _, name := range folderDefaultList {
  124. one := new(fileManager.FileFolder)
  125. one.Name = name
  126. one.ParentId = insertFolder.Id
  127. one.TaskId = 0
  128. one.CreateTime = time.Now().Format("2006-01-02 15:04:05")
  129. one.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
  130. err = global.GVA_DB.Create(&one).Error
  131. if err != nil {
  132. return requestFolder.ParentId, requestFolder.Name, err
  133. }
  134. }
  135. }
  136. return insertFolder.Id, insertFolder.Name, err
  137. }
  138. // GetAllTaskSimple 查询所有任务
  139. func (s *ServiceFileFolder) GetAllTaskSimple() (list interface{}, err error) {
  140. var taskList []task.GameTask
  141. db := global.GVA_DB.Model(&task.GameTask{})
  142. err = db.Order("id").Find(&taskList).Error
  143. return taskList, err
  144. }