Ver Fonte

完善自动处理任务

Ohio-HYF há 2 anos atrás
pai
commit
7e3c7147d7
1 ficheiros alterados com 36 adições e 1 exclusões
  1. 36 1
      db/terminate.go

+ 36 - 1
db/terminate.go

@@ -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