project_dao.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package dao
  2. import (
  3. "errors"
  4. "gorm.io/gorm"
  5. "time"
  6. "youngee_b_api/app/entity"
  7. "youngee_b_api/app/vo"
  8. )
  9. type ProjectDAO struct{}
  10. func (d ProjectDAO) GetProjectById(ProjectId string) (*entity.Project, error) {
  11. var Project entity.Project
  12. err := Db.Where("project_id = ?", ProjectId).First(&Project).Error
  13. if err != nil {
  14. if errors.Is(err, gorm.ErrRecordNotFound) {
  15. return nil, nil
  16. } else {
  17. return nil, err
  18. }
  19. }
  20. return &Project, err
  21. }
  22. // 根据enterpriseId查询指定某天的所有带货数据
  23. func (d ProjectDAO) GetProjectListOfDay(enterpriseId string, date time.Time) ([]entity.Project, error) {
  24. var Projects []entity.Project
  25. // 构建查询
  26. query := Db.Model(&entity.Project{})
  27. if enterpriseId != "" {
  28. query = query.Where("enterprise_id = ?", enterpriseId)
  29. }
  30. // 将日期部分提取出来进行匹配
  31. query = query.Where("DATE(created_at) = ?", date.Format("2006-01-02"))
  32. err := query.Find(&Projects).Error
  33. return Projects, err
  34. }
  35. // 创建种草任务
  36. func (d ProjectDAO) CreateProject(project entity.Project) error {
  37. err := Db.Omit("recruit_ddl", "auto_fail_at", "auto_script_break_at", "auto_sketch_break_at", "pay_at", "pass_at", "finish_at", "submit_at").Create(&project).Error
  38. if err != nil {
  39. return err
  40. }
  41. return nil
  42. }
  43. // 更新种草任务
  44. func (d ProjectDAO) UpdateProject(project entity.Project) error {
  45. err := Db.Model(&entity.Project{}).Where("project_id = ?", project.ProjectId).Updates(project).Error
  46. if err != nil {
  47. return err
  48. }
  49. return nil
  50. }
  51. // 获取种草任务列表
  52. func (d ProjectDAO) GetProjectPreviews(param *vo.ProjectSearchParam) ([]vo.ReProjectTaskPreview, int64, error) {
  53. var reProjectTaskPreviews []vo.ReProjectTaskPreview
  54. var projects []entity.Project
  55. var total int64
  56. query := Db.Model(&entity.Project{})
  57. // 动态添加查询条件
  58. if param.SubAccountId == 0 {
  59. if param.EnterpriseId == "" {
  60. return reProjectTaskPreviews, 0, errors.New("enterpriseId is empty")
  61. }
  62. query = query.Where("enterprise_id = ?", param.EnterpriseId)
  63. } else {
  64. query = query.Where("sub_account_id = ?", param.SubAccountId)
  65. }
  66. if param.ProjectType != 0 {
  67. query = query.Where("project_type = ?", param.ProjectType)
  68. }
  69. if param.ProjectPlatform != 0 {
  70. query = query.Where("project_platform = ?", param.ProjectPlatform)
  71. }
  72. if param.ProjectStatus != 0 {
  73. query = query.Where("project_status = ?", param.ProjectStatus)
  74. }
  75. if param.ProjectForm != 0 {
  76. query = query.Where("project_form = ?", param.ProjectForm)
  77. }
  78. if param.ContentType != 0 {
  79. query = query.Where("content_type = ?", param.ContentType)
  80. }
  81. query.Count(&total)
  82. query = query.Select("enterprise_id, sub_account_id, project_id, project_platform, project_status, estimated_cost, project_form, content_type, need_review, need_quality, need_calculate, product_id")
  83. offset := (param.Page - 1) * param.PageSize
  84. if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&projects).Error; err != nil {
  85. return nil, 0, err
  86. }
  87. for _, project := range projects {
  88. reProjectTaskPreview := vo.ReProjectTaskPreview{
  89. EnterpriseId: project.EnterpriseID,
  90. SubAccountId: project.SubAccountId,
  91. ProjectId: project.ProjectId,
  92. ProjectPlatform: project.ProjectPlatform,
  93. ProjectStatus: project.ProjectStatus,
  94. EstimatedCost: project.EstimatedCost,
  95. ProjectForm: project.ProjectForm,
  96. ContentType: project.ContentType,
  97. NeedReview: project.NeedReview,
  98. NeedQuality: project.NeedQuality,
  99. NeedCalculate: project.NeedCalculate,
  100. ProductId: project.ProductID,
  101. }
  102. reProjectTaskPreviews = append(reProjectTaskPreviews, reProjectTaskPreview)
  103. }
  104. return reProjectTaskPreviews, total, nil
  105. }
  106. // 删除种草任务
  107. func (d ProjectDAO) DeleteProject(projectId string) (*string, error) {
  108. if projectId == "" {
  109. return &projectId, nil
  110. }
  111. err := Db.Where("project_id = ?", projectId).Delete(&entity.Project{}).Error
  112. if err != nil {
  113. return nil, err
  114. }
  115. return &projectId, nil
  116. }