Răsfoiți Sursa

fix(账单): 取消预约计算违约逻辑问题修复

likai 4 ani în urmă
părinte
comite
a62432a9f7
1 a modificat fișierele cu 5 adăugiri și 1 ștergeri
  1. 5 1
      service/settle_account_main/settle_account_main.go

+ 5 - 1
service/settle_account_main/settle_account_main.go

@@ -263,6 +263,7 @@ func (s Service) Cancel(req accountModel.AccountMainCancelReq) error {
 	var baseAccount accountModel.BaseAccount
 	var rules []Param
 	now := gtime.Now()
+	nowStr := now.Format("Y-m-d H:i:s")
 	per := float64(0)
 	userNumber := 0
 
@@ -300,7 +301,10 @@ func (s Service) Cancel(req accountModel.AccountMainCancelReq) error {
 		return err
 	}
 	// 计算当前机器占用数量
-	userNumber, err = s.Dao.DB.Model("appointment").Where(fmt.Sprintf("RelevanceId='%v' AND SignInTime IS NOT NULL AND SignOutTime IS NULL", main.InstrumentId)).Count()
+	//1、上一个实验人未结束实验,未占用下一个预约开始时间,下一个实验取消预约,需要进行违约扣费
+	//2、上一个实验人未结束实验,占用了下一个预约开始时间,下一个实验取消预约,不需要进行违约扣费
+	//3、上一个实验人结束了实验,占用了下一个预约开始时间,下一个实验取消预约,不需要进行违约扣费
+	userNumber, err = s.Dao.DB.Model("appointment").Where(fmt.Sprintf("RelevanceId='%v' AND ((SignInTime IS NOT NULL AND SignOutTime IS NULL AND '%v' > '%v') OR (SignOutTime > '%v'))", main.InstrumentId, nowStr, main.AppointStartDate.Format("Y-m-d H:i:s"), main.AppointStartDate.Format("Y-m-d H:i:s"))).Count()
 	if err != nil {
 		return err
 	}