liujc 1 vuosi sitten
vanhempi
commit
bcb67bc58b

+ 0 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserPaymentClient.java

@@ -137,13 +137,6 @@ public class UserPaymentClient {
         }
         log.info("refund vendor={}, refundResp={}", vendor, JSON.toJSONString(refundResp));
 
-        // 退款订单确认
-        UserOrderRefundBill refundBill = userOrderRefundBillService.getByTransNoOrOrderNo(null, refundResp.getMerOrderNo());
-        if (Objects.isNull(refundBill)) {
-            log.warn("refund REFUND_FAILED, vendor={}, refundResp={}", vendor, JSON.toJSONString(refundResp));
-            return refundResp.getMsg();
-        }
-
         // 执行退款回调流程
         userPaymentCoreService.refundPaymentCallback(refundResp);
 

+ 20 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -657,7 +657,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         reqConfig.setUserId(userInfo.getUserId());
 
         // 用户下单请求锁
-        String lockName = redisCacheService.getPaymentCacheKey(userInfo.getUserId());
+        String lockName = redisCacheService.getExecuteOrderCacheKey(userInfo.getUserId());
 
         // 分布式锁,用户支付请求
         return DistributedLock.of(redissonClient).runIfLockToFunction(lockName, this::executePayment, reqConfig, 10L);
@@ -1174,9 +1174,8 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             throw  new BizException("订单状态异常");
         }
 
-
         // 执行状态锁定
-        String lockName = redisCacheService.getExecuteOrderCacheKey(paymentOrder.getUserId().toString());
+        String lockName = redisCacheService.getPaymentCacheKey(paymentOrder.getOrderNo());
         DistributedLock.of(redissonClient).runIfLockCanGet(lockName, () -> {
             // 提交退款申请记录
             UserOrderRefund userRefundOrder = new UserOrderRefund();
@@ -1205,19 +1204,25 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             refundOrder.setReason(reason);
             refundOrder.setTransNo(paymentOrder.getTransNo());
             refundOrder.setPaymentOrderNo(paymentOrder.getOrderNo());
-            RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
-            // 申请请求失败
-            if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
-                orderRefundBill.setStatus(TradeStatusEnum.failed);
-                orderRefundBill.setPayFailMsg(refundResp.getMsg());
-            } else {
-                orderRefundBill.setTransNo(refundResp.getTransNo());
-                orderRefundBill.setStatus(TradeStatusEnum.pending);
-            }
-            userOrderRefundBillService.save(orderRefundBill);
 
-            //处理退款业务
-           userOrderRefundService.orderRefundSuccessBizHandle(userRefundOrder.getId());
+            // 执行状态锁定
+            String lockNameInner = redisCacheService.getPaymentCacheKey(orderRefundBill.getBillNo());
+            DistributedLock.of(redissonClient).runIfLockCanGet(lockNameInner, () -> {
+                RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
+                // 申请请求失败
+                if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
+                    orderRefundBill.setStatus(TradeStatusEnum.failed);
+                    orderRefundBill.setPayFailMsg(refundResp.getMsg());
+                } else {
+                    orderRefundBill.setTransNo(refundResp.getTransNo());
+                    orderRefundBill.setStatus(TradeStatusEnum.pending);
+                }
+                userOrderRefundBillService.save(orderRefundBill);
+
+                //处理退款业务
+               userOrderRefundService.orderRefundSuccessBizHandle(userRefundOrder.getId());
+
+            }, 10L, TimeUnit.SECONDS);
 
         }, 10L, TimeUnit.SECONDS);
 

+ 6 - 4
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserOrderRefundController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.search.UserOrderRefundSearch;
+import com.yonge.cooleshow.biz.dal.service.RedisCacheService;
 import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderRefundService;
@@ -38,6 +39,8 @@ public class UserOrderRefundController extends BaseController {
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
 
+    @Autowired
+    private RedisCacheService redisCacheService;
     /**
      * 查询单条
      */
@@ -104,10 +107,9 @@ public class UserOrderRefundController extends BaseController {
 
         try {
             DistributedLock.of(redissonClient)
-                    .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(refundReq.getUserId())
-                            , () -> {
-                        userPaymentCoreService.refundPayment(refundReq.getOrderNo(),refundReq.getReason());
-                            }, 10L,TimeUnit.SECONDS);
+                    .runIfLockCanGet(redisCacheService.getPaymentCacheKey(refundReq.getOrderNo())
+                            , () -> userPaymentCoreService.refundPayment(refundReq.getOrderNo(),refundReq.getReason()),
+                            10L,TimeUnit.SECONDS);
             return HttpResponseResult.succeed();
         } catch (BizException e) {
             return HttpResponseResult.failed(e.getMessage());