|
@@ -1283,49 +1283,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
|
|
}
|
|
}
|
|
|
|
|
|
if (refundFlag) {
|
|
if (refundFlag) {
|
|
- // 提交退款申请记录
|
|
|
|
- UserOrderRefund userRefundOrder = new UserOrderRefund();
|
|
|
|
- userRefundOrder.setUserId(paymentOrder.getId());
|
|
|
|
- userRefundOrder.setOrderId(paymentOrder.getId());
|
|
|
|
- userRefundOrder.setOrderNo(paymentOrder.getOrderNo());
|
|
|
|
- userRefundOrder.setOredrDetilIds(detail.getOrderDetailList().stream().map(o -> o.getId().toString()).collect(Collectors.joining(",")));
|
|
|
|
- userRefundOrder.setStatus(AuthStatusEnum.PASS);
|
|
|
|
- userRefundOrder.setApplyAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
- userRefundOrder.setActualAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
- userRefundOrder.setReason(reason);
|
|
|
|
- userOrderRefundService.save(userRefundOrder);
|
|
|
|
-
|
|
|
|
- //入退款单表
|
|
|
|
- UserOrderRefundBill orderRefundBill = new UserOrderRefundBill();
|
|
|
|
- orderRefundBill.setRefundId(userRefundOrder.getId());
|
|
|
|
- orderRefundBill.setBillNo(IdWorker.getIdStr());
|
|
|
|
- orderRefundBill.setRefundAmt(userRefundOrder.getActualAmount());
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- RefundOrder refundOrder = new RefundOrder();
|
|
|
|
- refundOrder.setUserId(paymentOrder.getUserId().toString());
|
|
|
|
- refundOrder.setMerOrderNo(orderRefundBill.getBillNo());
|
|
|
|
- refundOrder.setRefundAmount(orderRefundBill.getRefundAmt());
|
|
|
|
- refundOrder.setOrderAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
- refundOrder.setReason(reason);
|
|
|
|
- refundOrder.setTransNo(paymentOrder.getTransNo());
|
|
|
|
- refundOrder.setPaymentOrderNo(paymentOrder.getOrderNo());
|
|
|
|
-
|
|
|
|
- // 执行状态锁定
|
|
|
|
- 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);
|
|
|
|
-
|
|
|
|
- }, 10L, TimeUnit.SECONDS);
|
|
|
|
|
|
+ refundOnly(reason, paymentOrder.getOrderNo());
|
|
}
|
|
}
|
|
|
|
|
|
//处理退款业务
|
|
//处理退款业务
|
|
@@ -1334,6 +1292,71 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 退款
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void refundOnly(String reason, String orderNo) {
|
|
|
|
+
|
|
|
|
+ // 查询订单信息,支付状态
|
|
|
|
+ UserPaymentOrderWrapper.UserPaymentOrder paymentOrder = userPaymentOrderService.getUserPaymentOrderByOrderNo(orderNo);
|
|
|
|
+ if (Objects.isNull(paymentOrder)) {
|
|
|
|
+ throw new BizException("订单信息不存在");
|
|
|
|
+ }
|
|
|
|
+ if (!OrderStatusEnum.PAID.getCode().equals(paymentOrder.getStatus().getCode())) {
|
|
|
|
+ throw new BizException("订单状态异常");
|
|
|
|
+ }
|
|
|
|
+ UserOrderVo detail = userOrderService.detail(paymentOrder.getId());
|
|
|
|
+ if (Objects.isNull(detail)) {
|
|
|
|
+ throw new BizException("订单信息不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 提交退款申请记录
|
|
|
|
+ UserOrderRefund userRefundOrder = new UserOrderRefund();
|
|
|
|
+ userRefundOrder.setUserId(paymentOrder.getId());
|
|
|
|
+ userRefundOrder.setOrderId(paymentOrder.getId());
|
|
|
|
+ userRefundOrder.setOrderNo(paymentOrder.getOrderNo());
|
|
|
|
+ userRefundOrder.setOredrDetilIds(detail.getOrderDetailList().stream().map(o -> o.getId().toString()).collect(Collectors.joining(",")));
|
|
|
|
+ userRefundOrder.setStatus(AuthStatusEnum.PASS);
|
|
|
|
+ userRefundOrder.setApplyAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
+ userRefundOrder.setActualAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
+ userRefundOrder.setReason(reason);
|
|
|
|
+ userOrderRefundService.save(userRefundOrder);
|
|
|
|
+
|
|
|
|
+ //入退款单表
|
|
|
|
+ UserOrderRefundBill orderRefundBill = new UserOrderRefundBill();
|
|
|
|
+ orderRefundBill.setRefundId(userRefundOrder.getId());
|
|
|
|
+ orderRefundBill.setBillNo(IdWorker.getIdStr());
|
|
|
|
+ orderRefundBill.setRefundAmt(userRefundOrder.getActualAmount());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ RefundOrder refundOrder = new RefundOrder();
|
|
|
|
+ refundOrder.setUserId(paymentOrder.getUserId().toString());
|
|
|
|
+ refundOrder.setMerOrderNo(orderRefundBill.getBillNo());
|
|
|
|
+ refundOrder.setRefundAmount(orderRefundBill.getRefundAmt());
|
|
|
|
+ refundOrder.setOrderAmount(paymentOrder.getPaymentCashAmount());
|
|
|
|
+ refundOrder.setReason(reason);
|
|
|
|
+ refundOrder.setTransNo(paymentOrder.getTransNo());
|
|
|
|
+ refundOrder.setPaymentOrderNo(paymentOrder.getOrderNo());
|
|
|
|
+
|
|
|
|
+ // 执行状态锁定
|
|
|
|
+ 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);
|
|
|
|
+
|
|
|
|
+ }, 10L, TimeUnit.SECONDS);
|
|
|
|
+ }
|
|
|
|
+
|
|
private boolean saveDivBackRecord(UserPaymentOrderWrapper.UserPaymentOrder paymentOrder, PaymentDivMemberRecord record) {
|
|
private boolean saveDivBackRecord(UserPaymentOrderWrapper.UserPaymentOrder paymentOrder, PaymentDivMemberRecord record) {
|
|
|
|
|
|
|
|
|
|
@@ -1344,6 +1367,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
|
|
divBackRecord.setPaymentDivMemberRecordId(record.getId());
|
|
divBackRecord.setPaymentDivMemberRecordId(record.getId());
|
|
divBackRecord.setDivideBackOrderNo(IdWorker.getIdStr());
|
|
divBackRecord.setDivideBackOrderNo(IdWorker.getIdStr());
|
|
divBackRecord.setTimes(1);
|
|
divBackRecord.setTimes(1);
|
|
|
|
+ divBackRecord.setPaymentVendor(paymentOrder.getPaymentVendor());
|
|
|
|
|
|
// 分账数据
|
|
// 分账数据
|
|
DivideReq.DivideBackDetail divideBackDetail = DivideReq.DivideBackDetail.builder()
|
|
DivideReq.DivideBackDetail divideBackDetail = DivideReq.DivideBackDetail.builder()
|