|
@@ -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);
|
|
|
|