From 87a47e0529fa39c62cd7b4c65cb5bfd48f14b5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Fri, 25 Apr 2025 19:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/TransactionBillQuery.java | 4 ++++ .../mapper/TransactionBillMapper.xml | 1 + .../service/TransactionBillService.java | 2 ++ .../impl/TransactionBillServiceImpl.java | 13 ++++++---- .../com/ruoyi/task/bill/BillMonitorTask.java | 24 +++++++++++++++++++ 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java index 90ccd576..f043e557 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java @@ -149,4 +149,8 @@ public class TransactionBillQuery extends TransactionBill { @ApiModelProperty("用户ID列表") private List userIds; + @ApiModelProperty("支付过期时间(结束)") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime expireTimeEnd; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml index c13fbf91..94000c3f 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml @@ -231,6 +231,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and stb.vip_id = #{query.vipId} and vip_name like concat('%', #{query.vipName}, '%') and stb.finished = #{query.finished} + and date(stb.expire_time) <= #{query.expireTimeEnd} and stb.suit_end_time is diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java index 2ed35fb4..8d5a7b1b 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java @@ -109,6 +109,8 @@ public interface TransactionBillService { */ int cancelRecharge(String billNo, TransactionBillStatus status); + int cancelRecharge(TransactionBillVO old, TransactionBillStatus status); + /** * 根据订单编号查询数据 * diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java index 796c3ca8..b8576595 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java @@ -321,8 +321,6 @@ public class TransactionBillServiceImpl implements TransactionBillService, After return insert; }); - // 加入延时队列,超时取消 - billDelayedManager.add(order.getBillNo(), order.getExpireTime().getTime()); return order.getBillNo(); } finally { // 解锁 @@ -1322,13 +1320,20 @@ public class TransactionBillServiceImpl implements TransactionBillService, After */ @Override public int cancelRecharge(String billNo, TransactionBillStatus status) { + TransactionBillVO bill = this.selectSmTransactionBillByBillNo(billNo); + return this.cancelRecharge(bill, status); + } + + @Override + public int cancelRecharge(TransactionBillVO old, TransactionBillStatus status) { + ServiceUtil.assertion(!TransactionBillStatus.isCancel(status.getStatus()), "参数错误:状态并非取消状态"); // 刷新支付结果 - this.refreshPayResult(billNo); + this.refreshPayResult(old); // 查询数据 - TransactionBill bill = transactionBillMapper.selectSmTransactionBillByBillNo(billNo); + TransactionBill bill = transactionBillMapper.selectSmTransactionBillByBillId(old.getBillId()); ServiceUtil.assertion(bill == null || bill.getBillId() == null, "订单不存在"); ServiceUtil.assertion(!TransactionBillType.RECHARGE.getType().equals(bill.getType()), "非充值订单,不允许取消"); diff --git a/smart-switch-service/src/main/java/com/ruoyi/task/bill/BillMonitorTask.java b/smart-switch-service/src/main/java/com/ruoyi/task/bill/BillMonitorTask.java index 07a66e97..55265e2f 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/task/bill/BillMonitorTask.java +++ b/smart-switch-service/src/main/java/com/ruoyi/task/bill/BillMonitorTask.java @@ -1,6 +1,7 @@ package com.ruoyi.task.bill; import java.time.LocalDateTime; +import java.util.Arrays; import java.util.List; import java.util.concurrent.ScheduledExecutorService; @@ -162,4 +163,27 @@ public class BillMonitorTask { } + /** + * 关闭未支付且过期的订单 + */ + public void closeExpireOrder() { + TransactionBillQuery query = new TransactionBillQuery(); + query.setStatusList(Arrays.asList(TransactionBillStatus.UNPAID.getStatus(), + TransactionBillStatus.PAYING.getStatus(), TransactionBillStatus.UNPAID_DEPOSIT.getStatus())); + query.setType(TransactionBillType.RECHARGE.getType()); + query.setExpireTimeEnd(LocalDateTime.now()); + List billList = transactionBillService.selectSmTransactionBillList(query); + if (billList == null) { + return; + } + + for (TransactionBillVO bill : billList) { + try { + transactionBillService.cancelRecharge(bill, TransactionBillStatus.SYS_CANCELED); + } catch (Exception e) { + log.error("取消未支付的订单{}失败, {}", bill.getBillNo(), e.getMessage()); + } + } + } + }