package db import ( "context" "time" "youngee_m_api/model/gorm_model" "youngee_m_api/util" "github.com/sirupsen/logrus" ) // Terminate 批量提交解约申请 func Terminate(ctx context.Context, TaskIDs, projectIds []int) error { db := GetReadDB(ctx) err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ? and default_status = 1", TaskIDs). Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error if err != nil { logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeContractInfo error,err:%+v", err) return err } err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 9}).Error if err != nil { logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err) return err } util.RemoveIntRepByMap(projectIds) var unfinishedNum int64 for _, projectId := range projectIds { err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error if err1 != nil { logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err) return err1 } if unfinishedNum == 0 { // 1. 更新项目状态为结束 err2 := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates("project_status = 10").Error if err2 != nil { logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err) return err2 } // 2. 释放企业账户因项目冻结的资金 // 1) 计算剩余资金 // 2) 释放剩余资金 } } return nil }