zoujiajian 1 tahun lalu
induk
melakukan
93b9c8cda2

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/RefundUpgradeOrderDon.java

@@ -38,6 +38,11 @@ public class RefundUpgradeOrderDon extends BaseEntity{
 
 	private BigDecimal refundFee;
 
+	/**
+	 * 退款余额
+	 */
+	private BigDecimal refundBalance;
+
 	private String refundDesc;
 
 	/**

+ 22 - 4
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -558,7 +558,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
      */
     public void commonUpgradeRefund(UpgradeOrderDon orderDon, BigDecimal refundMoney, String operator, UpgradePackage upgradePackage, String outNo, String refundType, Boolean isOnly, BigDecimal refundBalance, String chatImg) {
         TASK_POOL.execute(() -> {
-            orderRefundService.refundUpgradeRecord(orderDon, refundMoney,upgradePackage, operator, outNo, refundType, chatImg);
+            orderRefundService.refundUpgradeRecord(orderDon, refundMoney, refundBalance, upgradePackage, operator, outNo, refundType, chatImg);
             //退等比例
             if (isOnly != null && isOnly) {
                 userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(),  upgradePackage.getName()+ UserBalanceSourceRecord.Source.refund.getDesc(), true);
@@ -566,8 +566,13 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 orderDon.setRefundBalance(orderDonRefundBalance.add(refundBalance));
             }
 
-            //若存在余额支付,退还余额
-            if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+//            //若存在余额支付,退还余额
+//            if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+//                userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
+//            }
+
+            //余额现金混合退款
+            if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
                 userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
             }
 
@@ -600,9 +605,10 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
         BigDecimal refundMoney = refundReq.getRefundMoney();
         BigDecimal money = orderDon.getMoney();
+        BigDecimal balance = orderDon.getBalance();
+        BigDecimal refundBalance = refundReq.getRefundBalance();
         //余额退款
         if (UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
-            BigDecimal balance = orderDon.getBalance();
             refundMoney = orderDonRefundBalance.add(refundMoney);
             if (UpgradeOrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
                 throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
@@ -612,6 +618,18 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
             orderDon.setRefundBalance(refundMoney);
             orderDon.setRefundMoney(BigDecimal.ZERO);
+        } else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
+            refundBalance = refundBalance.add(orderDonRefundBalance);
+            if (refundBalance.compareTo(balance) > 0) {
+                throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
+            }
+            orderDon.setRefundBalance(refundBalance);
+
+            refundMoney = orderDonRefundMoney.add(refundMoney);
+            if (refundMoney.compareTo(money) > 0) {
+                throw BusinessRuntimeException.getInstance("退款金额大于订单支付金额");
+            }
+            orderDon.setRefundMoney(refundMoney);
         } else {
             //退金额
             refundMoney = orderDonRefundMoney.add(refundMoney);

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/order/OrderRefundService.java

@@ -20,10 +20,11 @@ public interface OrderRefundService {
 	 * 退款记录
 	 */
 	void refundRecord(OrderDon orderDon, BigDecimal refundMoney, BigDecimal refundBalance, String operator, GoodsDon goodsDon, GoodsDonSku sku, String outRefundNo, String refundType, String chatImg);
+
 	/**
 	 * 套餐包退款记录
 	 */
-	void refundUpgradeRecord(UpgradeOrderDon orderDon, BigDecimal refundMoney, UpgradePackage upgradePackage, String operator, String outRefundNo, String refundType, String chatImg);
+	void refundUpgradeRecord(UpgradeOrderDon orderDon, BigDecimal refundMoney, BigDecimal refundBalance, UpgradePackage upgradePackage, String operator, String outRefundNo, String refundType, String chatImg);
 
 	String refundWholesaleUserDeposit(GoodsWholesaleUserDeposit goodsWholesaleUserDeposit) throws Exception;
 

+ 6 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderRefundServiceImpl.java

@@ -133,7 +133,7 @@ public class OrderRefundServiceImpl implements OrderRefundService {
 	}
 
 	@Override
-	public void refundUpgradeRecord(UpgradeOrderDon orderDon, BigDecimal refundMoney, UpgradePackage upgradePackage,String operator, String outRefundNo, String refundType, String chatImg) {
+	public void refundUpgradeRecord(UpgradeOrderDon orderDon, BigDecimal refundMoney, BigDecimal refundBalance, UpgradePackage upgradePackage, String operator, String outRefundNo, String refundType, String chatImg) {
 		RefundUpgradeOrderDon refund = new RefundUpgradeOrderDon();
 		refund.setOrderId(orderDon.getId());
 		refund.setOutRefundNo(outRefundNo);
@@ -152,6 +152,11 @@ public class OrderRefundServiceImpl implements OrderRefundService {
 			refund.setRefundMethod(refundType);
 			refund.setRefundFee(orderDon.getRefundBalance());
 		}
+		//余额现金退款
+		if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
+			refund.setRefundMethod(OrderRefundReq.RefundType.bxj.name());
+			refund.setRefundBalance(refundBalance);
+		}
 		refundUpgradeOrderDonMapper.insert(refund);
 	}