terminate.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package db
  2. import (
  3. "context"
  4. "time"
  5. "youngee_m_api/model/gorm_model"
  6. "youngee_m_api/util"
  7. "github.com/sirupsen/logrus"
  8. )
  9. // Terminate 批量提交解约申请
  10. func Terminate(ctx context.Context, TaskIDs, projectIds []int) error {
  11. db := GetReadDB(ctx)
  12. err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ? and default_status = 1", TaskIDs).
  13. Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error
  14. if err != nil {
  15. logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeContractInfo error,err:%+v", err)
  16. return err
  17. }
  18. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 9}).Error
  19. if err != nil {
  20. logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
  21. return err
  22. }
  23. util.RemoveIntRepByMap(projectIds)
  24. var unfinishedNum int64
  25. for _, projectId := range projectIds {
  26. err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error
  27. if err1 != nil {
  28. logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
  29. return err1
  30. }
  31. if unfinishedNum == 0 {
  32. // 1. 更新项目状态为结束
  33. err2 := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates("project_status = 10").Error
  34. if err2 != nil {
  35. logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
  36. return err2
  37. }
  38. // 2. 释放企业账户因项目冻结的资金
  39. // 1) 计算剩余资金
  40. // 2) 释放剩余资金
  41. }
  42. }
  43. return nil
  44. }