fix 支付单过期处理注册不正确修改

This commit is contained in:
DaxPay
2024-05-23 18:15:29 +08:00
parent 5280793f31
commit 204a143b0f
4 changed files with 8 additions and 21 deletions

View File

@@ -54,12 +54,8 @@ public class PayOrderService {
public void updateById(PayOrder payOrder){
// 如果是异步支付且支付订单完成, 需要删除订单超时任务记录
if (ORDER_FINISH.contains(payOrder.getStatus())){
expiredTimeService.cancelExpiredTime(payOrder.getId());
expiredTimeService.cancelExpiredTime(payOrder.getOrderNo());
}
payOrderManager.updateById(payOrder);
}
/**
* 关闭
*/
}

View File

@@ -20,16 +20,16 @@ import java.util.Set;
@RequiredArgsConstructor
public class PayExpiredTimeRepository {
private static final String KEY = "payment:pay:expiredtime";
private static final String KEY = "payment:pay:overtime";
private final RedisClient redisClient;
/**
* 根据 token 存储对应的 ExpiredTokenKey
*/
public void store(Long payOderId, LocalDateTime expiredTime) {
public void store(String orderNo, LocalDateTime expiredTime) {
long time = LocalDateTimeUtil.timestamp(expiredTime);
redisClient.zadd(KEY, String.valueOf(payOderId), time);
redisClient.zadd(KEY, orderNo, time);
}
/**
@@ -40,16 +40,6 @@ public class PayExpiredTimeRepository {
return redisClient.zrangeByScore(KEY, 0L, time);
}
/**
* 获取所有未过期的订单ID. (7天内的订单)
*/
public Set<String> getNormalKeysBy30Day(){
LocalDateTime now = LocalDateTime.now();
long start = LocalDateTimeUtil.timestamp(now);
long end = LocalDateTimeUtil.timestamp(now.plusDays(30));
return redisClient.zrangeByScore(KEY, start, end);
}
/**
* 支付完成或者取消支付后, 需要调用这个方法来清除列表里的订单ID
*/

View File

@@ -38,7 +38,7 @@ public class PayExpiredTimeService {
try {
// 将过期时间添加到redis中, 往后延时一分钟
expiredTime = LocalDateTimeUtil.offset(expiredTime, 1, ChronoUnit.MINUTES);
repository.store(payOrder.getId(), expiredTime);
repository.store(payOrder.getOrderNo(), expiredTime);
}
catch (Exception e) {
log.error("注册支付单超时关闭失败",e);
@@ -50,8 +50,8 @@ public class PayExpiredTimeService {
/**
* 取消支付单超时关闭事件
*/
public void cancelExpiredTime(Long paymentId) {
repository.removeKeys(String.valueOf(paymentId));
public void cancelExpiredTime(String orderNo) {
repository.removeKeys(orderNo);
}
}