Commit b1ad2f8176c74589075ef0fc0e14c7eb6affb67f

Authored by YunaiV
1 parent ac50b4b1

【缺陷修复】商城:拼团取消已支付的订单时,缺少 ip 和状态检查不正确

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.date.LocalDateTimeUtil; 4 import cn.hutool.core.date.LocalDateTimeUtil;
5 import cn.hutool.core.lang.Assert; 5 import cn.hutool.core.lang.Assert;
6 import cn.hutool.core.map.MapUtil; 6 import cn.hutool.core.map.MapUtil;
  7 +import cn.hutool.core.net.NetUtil;
7 import cn.hutool.core.util.ObjUtil; 8 import cn.hutool.core.util.ObjUtil;
8 import cn.hutool.core.util.ObjectUtil; 9 import cn.hutool.core.util.ObjectUtil;
9 import cn.hutool.core.util.RandomUtil; 10 import cn.hutool.core.util.RandomUtil;
@@ -888,8 +889,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -888,8 +889,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
888 if (!order.getPayStatus()) { 889 if (!order.getPayStatus()) {
889 throw exception(ORDER_CANCEL_PAID_FAIL, "已支付"); 890 throw exception(ORDER_CANCEL_PAID_FAIL, "已支付");
890 } 891 }
891 - // 1.3 校验订单是否已退款  
892 - if (ObjUtil.equal(TradeOrderRefundStatusEnum.NONE.getStatus(), order.getRefundStatus())) { 892 + // 1.3 校验订单是否未退款
  893 + if (ObjUtil.notEqual(TradeOrderRefundStatusEnum.NONE.getStatus(), order.getRefundStatus())) {
893 throw exception(ORDER_CANCEL_PAID_FAIL, "未退款"); 894 throw exception(ORDER_CANCEL_PAID_FAIL, "未退款");
894 } 895 }
895 896
@@ -897,7 +898,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -897,7 +898,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
897 cancelOrder0(order, TradeOrderCancelTypeEnum.COMBINATION_CLOSE); 898 cancelOrder0(order, TradeOrderCancelTypeEnum.COMBINATION_CLOSE);
898 // 2.2 创建退款单 899 // 2.2 创建退款单
899 payRefundApi.createRefund(new PayRefundCreateReqDTO() 900 payRefundApi.createRefund(new PayRefundCreateReqDTO()
900 - .setAppKey(tradeOrderProperties.getPayAppKey()).setUserIp(getClientIP()) // 支付应用 901 + .setAppKey(tradeOrderProperties.getPayAppKey()) // 支付应用
  902 + .setUserIp(NetUtil.getLocalhostStr()) // 使用本机 IP,因为是服务器发起退款的
901 .setMerchantOrderId(String.valueOf(order.getId())) // 支付单号 903 .setMerchantOrderId(String.valueOf(order.getId())) // 支付单号
902 .setMerchantRefundId(String.valueOf(order.getId())) 904 .setMerchantRefundId(String.valueOf(order.getId()))
903 .setReason(TradeOrderCancelTypeEnum.COMBINATION_CLOSE.getName()).setPrice(order.getPayPrice())); // 价格信息 905 .setReason(TradeOrderCancelTypeEnum.COMBINATION_CLOSE.getName()).setPrice(order.getPayPrice())); // 价格信息