|
@@ -2,10 +2,14 @@ package db
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
"time"
|
|
|
"youngee_m_api/model/gorm_model"
|
|
|
"youngee_m_api/util"
|
|
|
|
|
|
+ "gorm.io/gorm"
|
|
|
+
|
|
|
"github.com/sirupsen/logrus"
|
|
|
)
|
|
|
|
|
@@ -31,6 +35,8 @@ func Terminate(ctx context.Context, TaskIDs, projectIds []int) error {
|
|
|
logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
|
|
|
return err1
|
|
|
}
|
|
|
+ // var finishedNum int64
|
|
|
+ // db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
|
|
|
if unfinishedNum == 0 {
|
|
|
// 1. 更新项目状态为结束
|
|
|
err2 := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates("project_status = 10").Error
|
|
@@ -38,9 +44,38 @@ func Terminate(ctx context.Context, TaskIDs, projectIds []int) error {
|
|
|
logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
|
|
|
return err2
|
|
|
}
|
|
|
+
|
|
|
// 2. 释放企业账户因项目冻结的资金
|
|
|
// 1) 计算剩余资金
|
|
|
- // 2) 释放剩余资金
|
|
|
+ db1 := GetReadDB(ctx)
|
|
|
+ var allPayment float64
|
|
|
+ var realPayment float64
|
|
|
+ err = db1.Model(gorm_model.YoungeeTaskInfo{}).
|
|
|
+ Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
|
|
|
+ if err != nil {
|
|
|
+ log.Println("DB GetAutoCaseCloseTask error in data:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ err = db1.Model(gorm_model.YoungeeTaskInfo{}).Select("sum(real_payment) as realPayment").
|
|
|
+ Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
|
|
|
+ if err != nil {
|
|
|
+ log.Println("DB GetAutoCaseCloseTask error in data:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
|
|
|
+ db2 := GetReadDB(ctx)
|
|
|
+ var enterpriseID int64
|
|
|
+ db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", projectId).Find(&enterpriseID)
|
|
|
+ // 2). 释放剩余资金
|
|
|
+ err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseID).Updates(
|
|
|
+ map[string]interface{}{
|
|
|
+ "frozen_balance": gorm.Expr("frozen_balance - ?", allPayment),
|
|
|
+ "balance": gorm.Expr("balance - ?", realPayment),
|
|
|
+ "available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
|
|
|
+ if err != nil {
|
|
|
+ log.Println("DB GetAutoCaseCloseTask error in data:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return nil
|