订单优化

This commit is contained in:
磷叶 2025-04-25 19:41:32 +08:00
parent a54b1b1d72
commit 87a47e0529
5 changed files with 40 additions and 4 deletions

View File

@ -149,4 +149,8 @@ public class TransactionBillQuery extends TransactionBill {
@ApiModelProperty("用户ID列表")
private List<Long> userIds;
@ApiModelProperty("支付过期时间(结束)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime expireTimeEnd;
}

View File

@ -231,6 +231,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="query.vipId != null "> and stb.vip_id = #{query.vipId}</if>
<if test="query.vipName != null and query.vipName != ''"> and vip_name like concat('%', #{query.vipName}, '%')</if>
<if test="query.finished != null"> and stb.finished = #{query.finished}</if>
<if test="query.expireTimeEnd != null"> and date(stb.expire_time) &lt;= #{query.expireTimeEnd}</if>
<if test="query.isNullSuitEndTime != null">
and stb.suit_end_time is
<if test="!query.isNullSuitEndTime">

View File

@ -109,6 +109,8 @@ public interface TransactionBillService {
*/
int cancelRecharge(String billNo, TransactionBillStatus status);
int cancelRecharge(TransactionBillVO old, TransactionBillStatus status);
/**
* 根据订单编号查询数据
*

View File

@ -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()), "非充值订单,不允许取消");

View File

@ -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<TransactionBillVO> 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());
}
}
}
}