task.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/caixw/lib.go/conv"
  6. "reflect"
  7. "strings"
  8. "time"
  9. "youngee_m_api/model/common_model"
  10. "youngee_m_api/model/gorm_model"
  11. "youngee_m_api/model/http_model"
  12. "youngee_m_api/pack"
  13. "youngee_m_api/util"
  14. "github.com/sirupsen/logrus"
  15. )
  16. func GetTaskList(ctx context.Context, projectID int64) ([]gorm_model.YoungeeTaskInfo, error) {
  17. db := GetReadDB(ctx)
  18. tasks := []gorm_model.YoungeeTaskInfo{}
  19. err := db.Where("project_id=?", projectID).Find(&tasks).Error
  20. if err != nil {
  21. return nil, err
  22. }
  23. return tasks, nil
  24. }
  25. func UpdateLogisticsStatus(ctx context.Context, taskID int64, status int64) error {
  26. db := GetReadDB(ctx)
  27. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("logistics_status", status).Error
  28. if err != nil {
  29. logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
  30. return err
  31. }
  32. return nil
  33. }
  34. func UpdateLogisticsDate(ctx context.Context, taskID int64) error {
  35. db := GetReadDB(ctx)
  36. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("delivery_date", time.Now()).Error
  37. if err != nil {
  38. logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsDate error,err:%+v", err)
  39. return err
  40. }
  41. return nil
  42. }
  43. func GetProjectIdByTaskId(ctx context.Context, taskID int64) (*int, error) {
  44. db := GetReadDB(ctx)
  45. task := &gorm_model.YoungeeTaskInfo{}
  46. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Scan(task).Error
  47. if err != nil {
  48. logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
  49. return nil, err
  50. }
  51. return &task.ProjectId, nil
  52. }
  53. func ChangeTaskStatus(ctx context.Context, taskIds []string, taskStatus string) ([]int64, error) {
  54. db := GetReadDB(ctx)
  55. taskSta := conv.MustInt(taskStatus, 0)
  56. if err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
  57. Updates(gorm_model.YoungeeTaskInfo{TaskStatus: taskSta}).Error; err != nil {
  58. logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
  59. return nil, err
  60. }
  61. var taskInfos []gorm_model.YoungeeTaskInfo
  62. err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).Find(&taskInfos).Error
  63. if err != nil {
  64. logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]3 error query mysql total, err:%+v", err)
  65. return nil, err
  66. }
  67. var recruitStrategysIDs []int64
  68. recruitStrategys := gorm_model.RecruitStrategy{}
  69. for _, taskInfo := range taskInfos {
  70. err2 := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id=? AND strategy_id=?", taskInfo.ProjectId, taskInfo.StrategyId).Scan(&recruitStrategys).Error
  71. if err2 != nil {
  72. logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]4 error query mysql total, err:%+v", err2)
  73. return nil, err2
  74. }
  75. recruitStrategysIDs = append(recruitStrategysIDs, recruitStrategys.RecruitStrategyID)
  76. }
  77. return recruitStrategysIDs, nil
  78. }
  79. func UpdateTaskStage(ctx context.Context, projectID int64, taskStatus int64, taskStage int64) error {
  80. db := GetReadDB(ctx)
  81. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
  82. if err != nil {
  83. logrus.WithContext(ctx).Errorf("[UpdateTaskStatusPaying]2 error query mysql total, err:%+v", err)
  84. return err
  85. }
  86. return nil
  87. }
  88. func UpdateTaskSelectAtByProjectId(ctx context.Context, projectID int64, taskStatus int64) error {
  89. db := GetReadDB(ctx)
  90. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("select_date", time.Now()).Error
  91. if err != nil {
  92. logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
  93. return err
  94. }
  95. return nil
  96. }
  97. func UpdateTaskStageByProjectId(ctx context.Context, projectID int64, taskStatus int64, taskStage int64) error {
  98. db := GetReadDB(ctx)
  99. err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
  100. if err != nil {
  101. logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
  102. return err
  103. }
  104. return nil
  105. }
  106. func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskInviteInfo, int64, error) {
  107. db := GetReadDB(ctx)
  108. // 查询task表信息
  109. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_stage != 3")
  110. // 根据Project条件过滤
  111. conditionType := reflect.TypeOf(conditions).Elem()
  112. conditionValue := reflect.ValueOf(conditions).Elem()
  113. var platform_nickname string = ""
  114. for i := 0; i < conditionType.NumField(); i++ {
  115. field := conditionType.Field(i)
  116. tag := field.Tag.Get("condition")
  117. value := conditionValue.FieldByName(field.Name)
  118. if tag == "task_status" {
  119. fmt.Printf("link %+v", value.Interface() == int64(0))
  120. if value.Interface() == int64(0) {
  121. db = db.Where("task_status <> 2")
  122. } else {
  123. db = db.Where("task_status = 2")
  124. }
  125. continue
  126. } else if !util.IsBlank(value) {
  127. if tag == "platform_nickname" {
  128. platform_nickname = fmt.Sprintf("%v", value.Interface())
  129. continue
  130. } else if tag == "project_id" {
  131. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  132. }
  133. }
  134. }
  135. var taskInfos []gorm_model.YoungeeTaskInfo
  136. db = db.Model(gorm_model.YoungeeTaskInfo{})
  137. // 查询总数
  138. var totalTask int64
  139. if err := db.Count(&totalTask).Error; err != nil {
  140. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  141. return nil, 0, err
  142. }
  143. db.Order("task_id").Find(&taskInfos)
  144. // 查询该页数据
  145. limit := pageSize
  146. offset := pageSize * pageNum // assert pageNum start with 0
  147. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  148. if err != nil {
  149. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  150. return nil, 0, err
  151. }
  152. var taskDatas []*http_model.SpecialTaskInviteInfo
  153. var newTaskDatas []*http_model.SpecialTaskInviteInfo
  154. taskDatas = pack.YoungeeTaskInfoToSpecialTaskInviteInfo(taskInfos)
  155. for _, v := range taskDatas {
  156. if platform_nickname == "" {
  157. newTaskDatas = append(newTaskDatas, v)
  158. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  159. newTaskDatas = append(newTaskDatas, v)
  160. } else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
  161. newTaskDatas = append(newTaskDatas, v)
  162. } else {
  163. totalTask--
  164. }
  165. }
  166. return newTaskDatas, totalTask, nil
  167. }