Browse Source

fix 订单现金余额退款

zoujiajian 1 year ago
parent
commit
b687c5b4b2

+ 12 - 16
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -573,12 +573,12 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
             //余额现金混合退款
             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);
+                userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
             }
 
             if (UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
                 if (isOnly == null && orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0) {
-                    userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getRefundBalance(), UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
+                    userBenefitsService.addUserBalance(orderDon.getUserId(), refundMoney, UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
                 }
             }
         });
@@ -593,9 +593,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         BigDecimal orderDonRefundMoney = Optional.ofNullable(orderDon.getRefundMoney()).orElse(BigDecimal.ZERO);
         BigDecimal orderDonRefundBalance = Optional.ofNullable(orderDon.getRefundBalance()).orElse(BigDecimal.ZERO);
         String refundType = refundReq.getRefundType();
-        if (orderDon.getType() == UpgradeOrderDon.Type.BALANCE && !UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
-            throw BusinessRuntimeException.getInstance("余额支付的订单不支持金额退款");
-        }
+//        if (orderDon.getType() == UpgradeOrderDon.Type.BALANCE && !UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
+//            throw BusinessRuntimeException.getInstance("余额支付的订单不支持金额退款");
+//        }
         if (UpgradeOrderDon.Status.refund == orderDon.getStatus()) {
             throw BusinessRuntimeException.getInstance("该订单已退款");
         }
@@ -610,15 +610,13 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         //余额退款
         if (UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
             refundMoney = orderDonRefundBalance.add(refundMoney);
-            if (UpgradeOrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
-                throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
-            }
             if (UpgradeOrderDon.Type.BALANCE != orderDon.getType() && refundMoney.compareTo(money) > 0) {
                 throw BusinessRuntimeException.getInstance("退款余额大于订单支付金额");
             }
             orderDon.setRefundBalance(refundMoney);
             orderDon.setRefundMoney(BigDecimal.ZERO);
         } else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
+            balance = balance.add(money);
             if (refundBalance.compareTo(balance) > 0) {
                 throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
             }
@@ -939,9 +937,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         BigDecimal orderDonRefundMoney = Optional.ofNullable(orderDon.getRefundMoney()).orElse(BigDecimal.ZERO);
         BigDecimal orderDonRefundBalance = Optional.ofNullable(orderDon.getRefundBalance()).orElse(BigDecimal.ZERO);
         String refundType = refundReq.getRefundType();
-        if (orderDon.getType() == OrderDon.Type.BALANCE && !OrderDon.Type.BALANCE.getType().equals(refundType)) {
-            throw BusinessRuntimeException.getInstance("余额支付的订单不支持金额退款");
-        }
+//        if (orderDon.getType() == OrderDon.Type.BALANCE && !OrderDon.Type.BALANCE.getType().equals(refundType)) {
+//            throw BusinessRuntimeException.getInstance("余额支付的订单不支持金额退款");
+//        }
         if (OrderDon.Status.refund == orderDon.getStatus()) {
             throw BusinessRuntimeException.getInstance("该订单已退款");
         }
@@ -992,16 +990,14 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         //余额退款
         if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
             refundMoney = orderDonRefundBalance.add(refundMoney);
-            if (OrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
-                throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
-            }
             if (OrderDon.Type.BALANCE != orderDon.getType() && refundMoney.compareTo(money) > 0) {
                 throw BusinessRuntimeException.getInstance("退款余额大于订单支付金额");
             }
             orderDon.setRefundBalance(refundMoney);
         } else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
+            balance = balance.add(money);
             if (refundBalance.compareTo(balance) > 0) {
-                throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
+                throw BusinessRuntimeException.getInstance("退款余额大于订单总金额");
             }
             refundBalance = refundBalance.add(orderDonRefundBalance);
             orderDon.setRefundBalance(refundBalance);
@@ -1094,7 +1090,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         }
         if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
             if (isOnly == null && orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0) {
-                userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getRefundBalance(), UserBalanceSourceRecord.Source.refund, orderDon.getYhsId(), orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
+                userBenefitsService.addUserBalance(orderDon.getUserId(), refundMoney, UserBalanceSourceRecord.Source.refund, orderDon.getYhsId(), orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
             }
         } else {
             //余额退款不需要扣除积分

+ 8 - 5
netflix-service/src/main/java/com/cyksj/service/mange/vip/impl/CmsVipOrderServiceImpl.java

@@ -105,6 +105,12 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 		if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
 			userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
 		}
+
+		if (VipOrderDon.Type.BALANCE.getType().equals(refundType)) {
+			if (isOnly == null && orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0) {
+				userBenefitsService.addUserBalance(orderDon.getUserId(), refundMoney, UserBalanceSourceRecord.Source.refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
+			}
+		}
 		//扣除会员时长
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(orderDon.getUserId(), null);
 		VipUser vipUser = vipUserMapper.selectOne(Wrappers.lambdaQuery(VipUser.class)
@@ -249,9 +255,6 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 		//余额退款
 		if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
 			refundMoney = orderDonRefundBalance.add(refundMoney);
-			if (VipOrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
-				throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
-			}
 			if (VipOrderDon.Type.BALANCE != orderDon.getType() && refundMoney.compareTo(money) > 0) {
 				throw BusinessRuntimeException.getInstance("退款余额大于订单支付金额");
 			}
@@ -259,10 +262,10 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 		} else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
 			//该订单实际可抵扣金额 可退成余额
 			BigDecimal actuallyDeductMoney = Optional.ofNullable(orderDon.getActuallyDeductMoney()).orElse(BigDecimal.ZERO);
-			balance = balance.add(actuallyDeductMoney);
+			balance = balance.add(actuallyDeductMoney).add(money);
 			refundBalance = refundBalance.add(orderDonRefundBalance);
 			if (refundBalance.compareTo(balance) > 0) {
-				throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
+				throw BusinessRuntimeException.getInstance("退款余额大于订单总金额");
 			}
 			orderDon.setRefundBalance(refundBalance);
 

+ 1 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/VipOrderDonServiceImpl.java

@@ -656,10 +656,7 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
 		UserDistributeShared distributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class)
 				.eq(UserDistributeShared::getUserId, userId)
 				.last("limit 1"));
-		if (distributeShared == null && !distributeShared.getIsBind()) {
-			return;
-		}
-		if (!distributeShared.getIsBind()) {
+		if (distributeShared == null || !distributeShared.getIsBind()) {
 			return;
 		}
 		//分销订单