解除免押,取消订单问题

This commit is contained in:
2025-09-28 10:36:18 +08:00
parent b811e01da6
commit 5f56194f0c
4 changed files with 18 additions and 9 deletions

View File

@ -46,7 +46,7 @@ public interface PayService {
* @param authCode
* @return
*/
boolean finishFreezeOrder(Long companyId,String outOrderNo, String authCode);
boolean finishFreezeOrder(Long companyId,String outOrderNo, String authCode, BigDecimal freezeFee);
/**
* 取消冻结

View File

@ -593,6 +593,7 @@ public class OrderServiceImpl implements OrderService {
,orderAmount);
}
@Transactional
@Override
public void cancelOrder(PayOrderReq payOrderReq,OrderMainPO orderMainPO) {
log.info("开始取消订单");
@ -606,7 +607,7 @@ public class OrderServiceImpl implements OrderService {
LambdaQueryWrapper<OrderSubPO> orderSubQueryWrapper = new LambdaQueryWrapper<>();
orderSubQueryWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId());
orderSubQueryWrapper.in(OrderSubPO::getPayStatus, Arrays.asList(PayStatusEnum.USERPAYING.getCode(), PayStatusEnum.INIT.getCode()));
orderSubQueryWrapper.in(OrderSubPO::getPayStatus, Arrays.asList(PayStatusEnum.USERPAYING.getCode(), PayStatusEnum.INIT.getCode(), PayStatusEnum.SUCCESS.getCode()));
orderSubQueryWrapper.orderByDesc(OrderSubPO::getCreatedAt);
List<OrderSubPO> orderSubPOList = orderSubRepo.list(orderSubQueryWrapper);
boolean closePayOrder = false;
@ -634,11 +635,11 @@ public class OrderServiceImpl implements OrderService {
//不管取消是否成功,都要删除订单
closePayOrder = true;
}else {
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId(),noDepositOrder.getAmount());
}
} else if(StringUtils.equalsIgnoreCase(noDepositOrder.getPayStatus(), PayStatusEnum.SUCCESS.getCode())){
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId(),noDepositOrder.getAmount());
}
if (closePayOrder) {
//解冻成功更新状态为解冻成功
@ -1398,7 +1399,7 @@ public class OrderServiceImpl implements OrderService {
.eq(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS).last(" limit 1");
OrderSubPO noDepositOrder = orderSubRepo.getOne(orderSubWrapper);
if (Objects.nonNull(noDepositOrder)) {
boolean result = payService.finishFreezeOrder(orderDTO.getOperatorId(),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
boolean result = payService.finishFreezeOrder(orderDTO.getOperatorId(),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId(),noDepositOrder.getAmount());
if (result) {
//解冻成功更新状态为解冻成功
LambdaUpdateWrapper<OrderSubPO> updatenoDepositWrapper = new LambdaUpdateWrapper<>();

View File

@ -103,12 +103,13 @@ public class PayServiceImpl implements PayService {
}
@Override
public boolean finishFreezeOrder(Long companyId, String outOrderNo, String authCode) {
public boolean finishFreezeOrder(Long companyId, String outOrderNo, String authCode, BigDecimal freezeFee) {
log.info("开始完结支付宝押金冻结支付单");
AlipayFinishFreezeRequest finishFreezeRequest = new AlipayFinishFreezeRequest();
finishFreezeRequest.setCompanyId(companyId.toString());
finishFreezeRequest.setAuthNo(authCode);
finishFreezeRequest.setOutRequestNo(OrderUtil.generateSubOrderNo(OrderUtil.FFZ_PREFIX));
finishFreezeRequest.setAmount(freezeFee.toString());
AlipayResponse alipayResponse = payInteg.finishFreeze(finishFreezeRequest);
return alipayResponse.isSuccess();
}

View File

@ -129,9 +129,16 @@ public class NoPayOrderProcessTask {
log.info("订单{}已超过最大重试次数,强行删除订单", orderMainPO.getOrderNo());
orderService.forceRemoveRentOrder(orderMainPO);
} else {
PayOrderReq payOrderReq = new PayOrderReq();
payOrderReq.setOrderNo(orderMainPO.getOrderNo());
orderService.cancelOrder(payOrderReq,orderMainPO);
if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PAY.getCode())){
PayOrderReq payOrderReq = new PayOrderReq();
payOrderReq.setOrderNo(orderMainPO.getOrderNo());
orderService.cancelOrder(payOrderReq,orderMainPO);
} else if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.RERENT_WAIT_PAY.getCode())){
PayOrderReq payOrderReq = new PayOrderReq();
payOrderReq.setOrderNo(orderMainPO.getOrderNo());
orderService.cancelRerentOrOverDueOrder(orderMainPO);
}
}