auto_task.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package db
  2. import (
  3. "context"
  4. "github.com/issue9/conv"
  5. "time"
  6. "youngee_b_api/model/gorm_model"
  7. log "github.com/sirupsen/logrus"
  8. )
  9. func AutoUpdateStatus() error {
  10. db := GetReadDB(context.Background())
  11. // 查找所有到达招募截止时间的项目id
  12. var projectIds []string
  13. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("project_status = 6").Find(&projectIds)
  14. //fmt.Println("projectIds",projectIds)
  15. if len(projectIds) != 0 {
  16. for _, projectId := range projectIds {
  17. db1 := GetReadDB(context.Background())
  18. db1 = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 1", projectId).Update("task_status", 3)
  19. }
  20. }
  21. db1 := GetReadDB(context.Background())
  22. // 更新招募中项目状态为待支付
  23. err := db1.Debug().Model(gorm_model.ProjectInfo{}).
  24. Where("project_status = ? AND recruit_ddl < ?", 4, time.Now()).Update("project_status", 6).Error
  25. if err != nil {
  26. log.Println("DB AutoUpdateStatus error :", err)
  27. return err
  28. }
  29. return nil
  30. }
  31. func GetLastAutoTaskID() (int, error) {
  32. db := GetReadDB(context.Background())
  33. // 查找最后一个
  34. LastTask := gorm_model.InfoAutoTask{}
  35. result := db.Last(&LastTask)
  36. err := result.Error
  37. if err != nil {
  38. log.Println("DB GetLastAutoTaskID:", err)
  39. return 0, err
  40. }
  41. //fmt.Printf("auto task %+v %+v", result, LastTask)
  42. return LastTask.AutoTaskID, nil
  43. }
  44. func AutoUpdateApplyTimes() error {
  45. db := GetReadDB(context.Background())
  46. // 查询task表信息
  47. db = db.Debug().Model(gorm_model.YoungeeTalentInfo{})
  48. err := db.Where("1 = 1").Update("apply_num", 5).Error
  49. if err != nil {
  50. log.Println("DB AutoUpdateStatus error :", err)
  51. return err
  52. }
  53. return nil
  54. }
  55. func AutoCompleteSelection() error {
  56. db := GetReadDB(context.Background())
  57. // 查询selection表,查询所有到截至时间的选品项目
  58. var completedSelectionList []gorm_model.YounggeeSelectionInfo
  59. err := db.Model(gorm_model.YounggeeSelectionInfo{}).Where("task_ddl < ?", time.Now()).Scan(&completedSelectionList).Error
  60. if err != nil {
  61. log.Println("DB AutoCompleteSelection error :", err)
  62. return err
  63. }
  64. // 遍历结束选品列表
  65. for _, v := range completedSelectionList {
  66. if v.SelectionStatus == 6 { // 若处于执行中阶段
  67. // 查询该选品下所有待结算任务
  68. var settleSecTaskList []gorm_model.YounggeeSecTaskInfo
  69. err = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("selection_id = ? and task_stage = 9", v.SelectionID).Scan(&settleSecTaskList).Error
  70. if err != nil {
  71. log.Println("DB AutoCompleteSelection error :", err)
  72. return err
  73. }
  74. // 结算选品
  75. for _, w := range settleSecTaskList {
  76. // 更新任务信息
  77. updateSecTaskData := gorm_model.YounggeeSecTaskInfo{
  78. TaskID: w.TaskID,
  79. TaskStage: 10,
  80. AssignmentStatus: 5,
  81. IsPayReward: 0,
  82. IsPayPayment: 0,
  83. CompleteDate: time.Now(),
  84. }
  85. _, err = UpdateSecTask(context.Background(), updateSecTaskData)
  86. if err != nil {
  87. log.Println("DB AutoCompleteSelection error :", err)
  88. return err
  89. }
  90. // 添加任务日志和达人消息
  91. err = CreateTaskLog(context.Background(), w.TaskID, "结算时间")
  92. if err != nil {
  93. log.Println("DB AutoCompleteSelection error :", err)
  94. }
  95. err = CreateMessageBySecTaskId(context.Background(), 5, 1, w.TaskID)
  96. if err != nil {
  97. log.Println("DB AutoCompleteSelection error :", err)
  98. return err
  99. }
  100. }
  101. // 计算结算金额,并返还剩余冻结资金
  102. var leftMoney float64 = conv.MustFloat64(v.EstimatedCost, 0) - conv.MustFloat64(v.SettlementAmount, 0)
  103. _, err = UpdateEnterpriseBalance(context.Background(), v.EnterpriseID, 0, leftMoney, -leftMoney)
  104. if err != nil {
  105. log.Println("DB AutoCompleteSelection error :", err)
  106. return err
  107. }
  108. // 更新选品阶段为已结案
  109. updateSelectionInfo := gorm_model.YounggeeSelectionInfo{
  110. SelectionID: v.SelectionID,
  111. SelectionStatus: 8,
  112. FinishAt: time.Now(),
  113. }
  114. err = UpdateSelection(context.Background(), updateSelectionInfo)
  115. if err != nil {
  116. log.Println("DB AutoCompleteSelection error :", err)
  117. return err
  118. }
  119. } else { // 否则
  120. // 更新选品阶段为失效,失效原因为逾期未支付
  121. updateSelectionInfo := gorm_model.YounggeeSelectionInfo{
  122. SelectionID: v.SelectionID,
  123. SelectionStatus: 7,
  124. FailReason: 1,
  125. FinishAt: time.Now(),
  126. }
  127. err = UpdateSelection(context.Background(), updateSelectionInfo)
  128. if err != nil {
  129. log.Println("DB AutoCompleteSelection error :", err)
  130. return err
  131. }
  132. }
  133. }
  134. return nil
  135. }