yonge 3 лет назад
Родитель
Сommit
4eb5ccc0c0

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreeRegistrationActivityDto.java

@@ -15,6 +15,8 @@ public class DegreeRegistrationActivityDto extends DegreeRegistration {
     private Map<CourseSchedule.CourseScheduleType, Integer> additionCourseInfo;
 
     private BigDecimal price;
+    
+    private boolean isUseBalance;
 
     public Map<CourseSchedule.CourseScheduleType, Integer> getAdditionCourseInfo() {
         return additionCourseInfo;
@@ -31,4 +33,12 @@ public class DegreeRegistrationActivityDto extends DegreeRegistration {
     public void setPrice(BigDecimal price) {
         this.price = price;
     }
+
+	public boolean isUseBalance() {
+		return isUseBalance;
+	}
+
+	public void setIsUseBalance(boolean isUseBalance) {
+		this.isUseBalance = isUseBalance;
+	}
 }

+ 27 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -31,6 +32,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+
 import org.springframework.util.CollectionUtils;
 
 @Service
@@ -273,10 +275,11 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         if(amount.compareTo(degreeRegistration.getPrice())!=0){
             throw new BizException("商品价格不符");
         }
+        
+        Integer userId = degreeRegistration.getUserId();
 
         OrderTypeEnum type = OrderTypeEnum.DEGREE_REGISTRATION;
 
-        Integer userId = degreeRegistration.getUserId();
         String channelType = "";
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(userId);
@@ -284,7 +287,29 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setType(type);
         studentPaymentOrder.setExpectAmount(amount);
-        studentPaymentOrder.setActualAmount(amount);
+        
+        if(degreeRegistration.isUseBalance()){
+        	SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            BigDecimal deductBalance = BigDecimal.ZERO;
+            if (userCashAccount.getBalance().subtract(amount).doubleValue() >= 0) {
+                // 更新订单信息
+                studentPaymentOrder.setActualAmount(BigDecimal.ZERO);
+                studentPaymentOrder.setBalancePaymentAmount(amount);
+                deductBalance = amount;
+            } else {
+                studentPaymentOrder.setActualAmount(amount.subtract(userCashAccount.getBalance()));
+                studentPaymentOrder.setBalancePaymentAmount(userCashAccount.getBalance());
+                deductBalance = userCashAccount.getBalance();
+            }
+            amount = amount.subtract(deductBalance);
+            sysUserCashAccountService.updateBalance(userId, deductBalance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团续费");
+        }else{
+            studentPaymentOrder.setActualAmount(amount);
+            studentPaymentOrder.setBalancePaymentAmount(BigDecimal.ZERO);
+        }
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setClassGroupId(degreeRegistration.getId());
         if(Objects.nonNull(degreeRegistration.getSporadicId())){