file_folder.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. if api.ParentId != 0 {
  21. db = db.Where("parent_id = ?", api.ParentId)
  22. }
  23. var total int64
  24. err := db.Count(&total).Error
  25. if err != nil {
  26. return nil, 0, err
  27. }
  28. limit := info.PageSize
  29. offset := info.PageSize * (info.Page - 1)
  30. //var statisticsLogs []*log.LogComputer
  31. var folderListRes []*response.FileFolderResponse
  32. db = db.Limit(limit).Offset(offset)
  33. if order != "" {
  34. var OrderStr string
  35. // 设置有效排序key 防止sql注入
  36. // 感谢 Tom4t0 提交漏洞信息
  37. orderMap := make(map[string]bool, 3)
  38. orderMap["pc_num"] = true
  39. //orderMap["game_id"] = true
  40. //orderMap["operator"] = true
  41. if orderMap[order] {
  42. if desc {
  43. OrderStr = order + " desc"
  44. } else {
  45. OrderStr = order
  46. }
  47. } else { // didn't matched any order key in `orderMap`
  48. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  49. return folderListRes, total, err
  50. }
  51. err = db.Order(OrderStr).Find(&folderListRes).Error
  52. } else {
  53. err = db.Order("id").Find(&folderListRes).Error
  54. }
  55. if err != nil {
  56. return nil, 0, err
  57. }
  58. var folderList []*response.FileFolderResponse
  59. for _, one := range folderListRes {
  60. folder := new(response.FileFolderResponse)
  61. folder.Id = one.Id
  62. folder.UpdateTime = one.UpdateTime
  63. folder.CreateTime = one.CreateTime
  64. folder.Name = one.Name
  65. folder.ParentId = one.ParentId
  66. folder.TaskId = one.TaskId
  67. folderList = append(folderList, folder)
  68. }
  69. //开始查询当前父文件夹下的所有文件
  70. //===============================
  71. return folderList, total, err
  72. }
  73. //
  74. //func (s *ServiceRentComputer) GetRentComputerNum(ctx context.Context, api rentComputer.RentComputer) int64 {
  75. // var total int64
  76. //
  77. // db := global.GVA_DB.Model(&rentComputer.RentComputer{})
  78. // db = db.Distinct("id")
  79. // //db = db.Where("is_off_shelf = 0 and is_expire != 1")
  80. // if api.PcNum != "" {
  81. // db = db.Where("rent_computer.pc_num = ?", api.PcNum)
  82. // }
  83. // if api.ShopId != 0 {
  84. // db = db.Where("rent_computer.shop_id = ?", api.ShopId)
  85. // }
  86. // if api.SetMealId != 0 {
  87. // db = db.Where("rent_computer.set_meal_id = ?", api.SetMealId)
  88. // }
  89. // if api.DirectorName != "ALL" {
  90. // if api.DirectorName == "" {
  91. // db = db.Where("rent_computer.director_name IS NULL")
  92. // } else {
  93. // db = db.Where("rent_computer.director_name = ?", api.DirectorName)
  94. // }
  95. // }
  96. // if api.IsExpire != -1 {
  97. // db = db.Where("rent_computer.is_expire = ?", api.IsExpire)
  98. // }
  99. // _ = db.Count(&total).Error
  100. // return total
  101. //}
  102. func (s *ServiceFileFolder) AddFileFolder(requestFolder request.FileFolderRequest) (err error) {
  103. //Id uint `json:"id"`
  104. //CreateTime string `json:"create_time"` // 创建时间
  105. //UpdateTime string `json:"update_time"` // 更新时间
  106. //Name string `json:"name"` //文件夹名称,通常为'任务ID_任务名称'
  107. //ParentId int `json:"parent_id"` //父文件夹id,默认为0,表示跟目录
  108. //TaskId int `json:"task_id"` //关联任务id,默认为0,表示无关联
  109. 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) {
  110. return errors.New("文件夹已存在")
  111. }
  112. folder := new(fileManager.FileFolder)
  113. folder.Name = requestFolder.Name
  114. folder.ParentId = requestFolder.ParentId
  115. folder.TaskId = requestFolder.TaskId
  116. folder.CreateTime = time.Now().Format("2006-01-02 15:04:05")
  117. folder.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
  118. return global.GVA_DB.Create(&folder).Error
  119. }
  120. // GetAllTaskSimple 查询所有任务
  121. func (s *ServiceFileFolder) GetAllTaskSimple() (list interface{}, err error) {
  122. var taskList []task.GameTask
  123. db := global.GVA_DB.Model(&task.GameTask{})
  124. err = db.Order("id").Find(&taskList).Error
  125. return taskList, err
  126. }