2 Commits 6d75c9bba1 ... 8f2c889a45

Autore SHA1 Messaggio Data
  wzq 8f2c889a45 Merge remote-tracking branch 'origin/master' 1 giorno fa
  wzq 2d9e491e33 fix(payment): 修复退款逻辑及更新支付网关地址 1 giorno fa

+ 1 - 1
src/main/java/com/zsElectric/boot/business/model/vo/applet/AppUserInfoVO.java

@@ -47,7 +47,7 @@ public class AppUserInfoVO implements Serializable {
     /**
      * 积分
      */
-    private Integer integral;
+    private BigDecimal integral;
     /**
      * 企业ID
      */

+ 13 - 6
src/main/java/com/zsElectric/boot/business/service/WFTOrderService.java

@@ -778,6 +778,7 @@ public class WFTOrderService {
 
         //查询一年内已支付的所有券订单
         List<UserOrderInfo> userOrderInfoList = userOrderInfoMapper.selectList(Wrappers.<UserOrderInfo>lambdaQuery()
+                .eq(UserOrderInfo::getUserId, userId)
                 .eq(UserOrderInfo::getOrderStatus, SystemConstants.STATUS_TWO)
                 .between(UserOrderInfo::getCreateTime, LocalDateTime.now().minusYears(1), LocalDateTime.now())
         );
@@ -790,7 +791,11 @@ public class WFTOrderService {
             if(refundMoney.compareTo(BigDecimal.ZERO) == 0){
                 break;
             }
-            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) > 0) {
+            // 处理退款金额为null的情况,默认为0
+            BigDecimal alreadyRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
+            BigDecimal canRefundMoney = userOrderInfo.getOrderMoney().subtract(alreadyRefundMoney);
+            
+            if (canRefundMoney.compareTo(refundMoney) >= 0) {
                 //退款金额大于订单金额,则直接退退款金额
                 refundOrder(userOrderInfo,refundMoney, "账户退款", SystemConstants.STATUS_ONE);
                 //账户变动及日志记录
@@ -807,13 +812,13 @@ public class WFTOrderService {
                 refundMoney = BigDecimal.ZERO;
                 break;
             }
-            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) < 0) {
+            if (canRefundMoney.compareTo(refundMoney) < 0) {
                 //退款金额小于订单金额,则先退订单金额
-                refundOrder(userOrderInfo,userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney()), "账户退款", SystemConstants.STATUS_TWO);
+                refundOrder(userOrderInfo, canRefundMoney, "账户退款", SystemConstants.STATUS_TWO);
                 //账户变动及日志记录
                 userAccountService.updateAccountBalanceAndLog(
                         SecurityUtils.getUserId(),
-                        userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney()),
+                        canRefundMoney,
                         SystemConstants.ACCOUNT_REFUND,
                         SystemConstants.ACCOUNT_LOG_REFUND_NOTE,
                         userOrderInfo.getId()
@@ -864,13 +869,15 @@ public class WFTOrderService {
                 log.info("订单:{},退款成功!原因:{}", userOrderInfo.getOrderNo(), reason);
                 //修改订单状态
                 userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
-                userOrderInfo.setRefundMoney(userOrderInfo.getRefundMoney().add(refundAmount));
+                BigDecimal currentRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
+                userOrderInfo.setRefundMoney(currentRefundMoney.add(refundAmount));
                 userOrderInfo.setRefundTime(LocalDateTime.now());
                 userOrderInfoMapper.updateById(userOrderInfo);
             } else{
                 log.info("退款处理中");
                 //修改订单状态
-                userOrderInfo.setRefundMoney(userOrderInfo.getRefundMoney().add(refundAmount));
+                BigDecimal currentRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
+                userOrderInfo.setRefundMoney(currentRefundMoney.add(refundAmount));
                 userOrderInfoMapper.updateById(userOrderInfo);
             }
             //退款信息补充

+ 2 - 2
src/main/java/com/zsElectric/boot/business/service/impl/UserOrderInfoServiceImpl.java

@@ -457,7 +457,7 @@ public class UserOrderInfoServiceImpl extends ServiceImpl<UserOrderInfoMapper, U
             if(refundMoney.compareTo(BigDecimal.ZERO) == 0){
                 break;
             }
-            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) > 0) {
+            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) < 0) {
                 //退款金额大于订单金额,则直接退退款金额
                 refundOrder(userOrderInfo,refundMoney, "账户退款", SystemConstants.STATUS_ONE);
                 //账户变动及日志记录
@@ -474,7 +474,7 @@ public class UserOrderInfoServiceImpl extends ServiceImpl<UserOrderInfoMapper, U
                 refundMoney = BigDecimal.ZERO;
                 break;
             }
-            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) < 0) {
+            if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) > 0) {
                 //退款金额小于订单金额,则先退订单金额
                 refundOrder(userOrderInfo,userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney()), "账户退款", SystemConstants.STATUS_ONE);
                 //账户变动及日志记录

+ 1 - 1
src/main/java/com/zsElectric/boot/core/pay/swiftpass/util/PayUtill.java

@@ -279,7 +279,7 @@ public class PayUtill {
         map.put("service", "unified.trade.refund");
         map.put("version", version);
         map.put("charset", charset);
-        String reqUrl = "https://pay.swiftpass.cn/pay/gateway";
+        String reqUrl = "https://eoap.cebbank.com/uiap/bcac/pay/pay/gateway";
         map.put("mch_id", sws.getMch_id());
         map.put("op_user_id", sws.getMch_id());
         map.put("nonce_str", RandomUtil.randomString(32));