|
@@ -13,6 +13,7 @@ import (
|
|
|
|
|
|
"github.com/caixw/lib.go/conv"
|
|
|
"github.com/sirupsen/logrus"
|
|
|
+ "gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
func CreatePricingStrategy(ctx context.Context, req *http_model.AddPricingRequest) (string, string, error) {
|
|
@@ -597,6 +598,58 @@ func GetAutoCaseCloseTask() error {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 4. 判断是否全部任务已结案,若已全部结案则触发项目结案
|
|
|
+ // 查询 task_stage<15 的任务数量
|
|
|
+ for _, projectInfo := range projectInfos {
|
|
|
+ var unFinishedTaskNumber int64
|
|
|
+ db8 := GetReadDB(context.Background())
|
|
|
+ err = db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage < 15", projectInfo.ProjectID).Count(&unFinishedTaskNumber).Error
|
|
|
+ if err != nil {
|
|
|
+ log.Println("DB GetAutoCaseCloseTask error in data:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // var finishedNum int64
|
|
|
+ // db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).Count(&finishedNum)
|
|
|
+ if unFinishedTaskNumber == 0 {
|
|
|
+ // 若为0则触发项目结案
|
|
|
+ db9 := GetReadDB(context.Background())
|
|
|
+ // 1. 更新项目状态为已结束
|
|
|
+ err := db9.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectInfo.ProjectID).Updates(map[string]interface{}{"project_status": 10}).Error
|
|
|
+ if err != nil {
|
|
|
+ log.Println("DB GetAutoCaseCloseTask error in data:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // 2. 释放企业账户因项目冻结的资金
|
|
|
+ // 1). 计算剩余资金
|
|
|
+ var allPayment float64
|
|
|
+ var realPayment float64
|
|
|
+ err = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.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 = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.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)
|
|
|
+
|
|
|
+ // 2). 释放剩余资金
|
|
|
+ err = db9.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", projectInfo.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
|
|
|
}
|
|
|
|