diff --git a/src/main/java/com/sczx/order/service/PayService.java b/src/main/java/com/sczx/order/service/PayService.java index 57a2c93..c343a06 100644 --- a/src/main/java/com/sczx/order/service/PayService.java +++ b/src/main/java/com/sczx/order/service/PayService.java @@ -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); /** * 取消冻结 diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index 0ed5a22..acd7fba 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -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 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 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 updatenoDepositWrapper = new LambdaUpdateWrapper<>(); diff --git a/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java b/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java index 304e59d..86c57f6 100644 --- a/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java @@ -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(); } diff --git a/src/main/java/com/sczx/order/task/NoPayOrderProcessTask.java b/src/main/java/com/sczx/order/task/NoPayOrderProcessTask.java index 9423d2f..23c5566 100644 --- a/src/main/java/com/sczx/order/task/NoPayOrderProcessTask.java +++ b/src/main/java/com/sczx/order/task/NoPayOrderProcessTask.java @@ -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); + } + }