浏览代码

修改违约

yuliang1112 2 年之前
父节点
当前提交
8668e727a7
共有 5 个文件被更改,包括 73 次插入21 次删除
  1. 1 11
      db/default.go
  2. 5 3
      db/info_pricing_strategy.go
  3. 65 6
      db/terminate.go
  4. 1 0
      model/http_model/task_terminate.go
  5. 1 1
      service/terminate.go

+ 1 - 11
db/default.go

@@ -64,8 +64,6 @@ func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, p
 		taskMap[taskInfo.TaskID] = taskInfo
 	}
 	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
-
 	var DefaultReviewInfos []gorm_model.YoungeeContractInfo
 	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 4)", taskIds)
 	err := db1.Find(&DefaultReviewInfos).Error
@@ -83,16 +81,8 @@ func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, p
 		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
 		return nil, 0, err
 	}
-	var misNum int64
-	if totalDefaultReview > totalTask {
-		misNum = totalDefaultReview - totalTask
-	} else {
-		misNum = totalTask - totalDefaultReview
-	}
-	logrus.Println("totalDefaultReview,totalTalent,misNum:", totalDefaultReview, totalTask, misNum)
-
 	// 查询该页数据
-	limit := pageSize + misNum
+	limit := pageSize
 	offset := pageSize * pageNum // assert pageNum start with 0
 	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
 

+ 5 - 3
db/info_pricing_strategy.go

@@ -10,14 +10,17 @@ import (
 
 func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
 	db := GetReadDB(context.Background())
-	PricingStrategys := []gorm_model.InfoPricingStrategy{}
+	var PricingStrategys []gorm_model.InfoPricingStrategy
 	whereStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansLow)
 	orStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansUp, fansUp)
-	err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Scan(&PricingStrategys).Error
+	orStr1 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low >= %d and fans_up <= %d", feeForm, platForm, fansLow, fansUp)
+	orStr2 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansUp)
+	err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Or(orStr1).Or(orStr2).Scan(&PricingStrategys).Error
 	if err != nil {
 		log.Println("DB GetLastAutoDefaultID:", err)
 		return nil, err
 	}
+	fmt.Printf("PricingStrategys%+v \n",PricingStrategys)
 	PricingStrategy := gorm_model.InfoPricingStrategy{}
 	if feeForm == 1 {
 		var maxCharge float64 = 0
@@ -36,6 +39,5 @@ func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeFor
 			}
 		}
 	}
-	//fmt.Printf("auto task %+v %+v", result, LastTask)
 	return &PricingStrategy, nil
 }

+ 65 - 6
db/terminate.go

@@ -2,24 +2,83 @@ package db
 
 import (
 	"context"
+	"fmt"
+	"gorm.io/gorm"
+	"log"
 	"time"
 	"youngee_b_api/model/gorm_model"
+	"youngee_b_api/util"
 
 	"github.com/sirupsen/logrus"
 )
 
 // Terminate 批量提交解约申请
-func Terminate(ctx context.Context, TaskIDs []string) error {
+func Terminate(ctx context.Context, TaskIDs []string, projectIds []string) error {
 	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ?  and (default_status = 1 or default_status = 4)", TaskIDs).Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error
+	err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ?  and (default_status = 1 or default_status = 4)", 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
+	dbc := GetReadDB(ctx)
+	errCurDef := dbc.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).
+		Updates(map[string]interface{}{"cur_default_type": 9, "complete_status": 4}).Error
+	if errCurDef != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", errCurDef)
+		return errCurDef
+	}
+	projectIds = util.RemoveStrRepByMap(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
+		}
+		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 && finishedNum != 0 {
+			// 2. 释放企业账户因项目冻结的资金
+			// 1) 计算剩余资金
+			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
+			}
+			// 1. 更新项目状态为已结束
+			t := time.Now()
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).
+				Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
+				return err
+			}
+		}
 	}
 	return nil
 }

+ 1 - 0
model/http_model/task_terminate.go

@@ -2,6 +2,7 @@ package http_model
 
 type TaskTerminateRequest struct {
 	TaskIds string `json:"task_id_list"` //任务id列表
+	ProjectIds []string `json:"project_ids"`  // 项目id列表
 }
 
 type TaskTerminateData struct {

+ 1 - 1
service/terminate.go

@@ -23,7 +23,7 @@ func (*terminate) TaskTerminate(ctx context.Context, request http_model.TaskTerm
 		TaskIDList = append(TaskIDList, taskId)
 	}
 	fmt.Printf("acc request %+v", TaskIDList)
-	err := db.Terminate(ctx, TaskIDList)
+	err := db.Terminate(ctx, TaskIDList, request.ProjectIds)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[Terminate service] call CreateTerminate error,err:%+v", err)
 		return nil, err