diff --git a/_doc/Task.md b/_doc/Task.md index 2fed72ea..6fd38ed0 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -23,6 +23,7 @@ - [ ] 金额过小不进行分账, 增加新状态, 金额小于0.01元直接忽略 - [ ] 增加收单收银台功能 - [x] 对账差异单, 数据不一致处理异常, 本地待对账订单类型记录错误 +- [x] 订单超时任务 - 2.0.7: 对账完善和系统优化 - [ ] 对账提供外部接口调用 - [ ] 下载系统账单 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/pay/service/PayOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/pay/service/PayOrderService.java index 9240d62f..a0918b93 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/pay/service/PayOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/pay/service/PayOrderService.java @@ -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); } - - /** - * 关闭 - */ } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/dao/PayExpiredTimeRepository.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/dao/PayExpiredTimeRepository.java index 601eb313..8e2aedbd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/dao/PayExpiredTimeRepository.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/dao/PayExpiredTimeRepository.java @@ -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 getNormalKeysBy30Day(){ - LocalDateTime now = LocalDateTime.now(); - long start = LocalDateTimeUtil.timestamp(now); - long end = LocalDateTimeUtil.timestamp(now.plusDays(30)); - return redisClient.zrangeByScore(KEY, start, end); - } - /** * 支付完成或者取消支付后, 需要调用这个方法来清除列表里的订单ID */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayExpiredTimeService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayExpiredTimeService.java index 85c568c2..405fbdd0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayExpiredTimeService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayExpiredTimeService.java @@ -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); } }