From 63f4f050892fd49a500a4709c164c18d24c47542 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: Mon, 28 Apr 2025 10:11:18 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E6=97=B6=E8=AE=A2=E5=8D=95=E5=85=B3?=
=?UTF-8?q?=E9=97=AD=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruoyi/bst/order/domain/OrderQuery.java | 7 +++++
.../ruoyi/bst/order/mapper/OrderMapper.xml | 2 ++
.../order/service/impl/OrderServiceImpl.java | 3 ---
.../bst/orderDevice/domain/OrderDeviceVO.java | 4 +++
.../orderDevice/mapper/OrderDeviceMapper.xml | 4 ++-
.../java/com/ruoyi/task/order/OrderTask.java | 26 ++++++++++++++++++-
6 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
index 5ec8a93..85ffe43 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
@@ -47,4 +47,11 @@ public class OrderQuery extends OrderVO {
@ApiModelProperty("支付渠道ID")
private Long payChannelId;
+ @ApiModelProperty("支付超时时间(结束)")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime payExpireTimeEnd;
+
+ @ApiModelProperty("支付超时时间(开始)")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime payExpireTimeStart;
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
index d338f84..97ad65a 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
@@ -125,6 +125,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and bo.cancel_remark like concat('%', #{query.cancelRemark}, '%')
and date(bp.pay_time) = #{query.payDate}
and bp.channel_id = #{query.payChannelId}
+ and bp.pay_expire_time <= #{query.payExpireTimeEnd}
+ and bp.pay_expire_time >= #{query.payExpireTimeStart}
and bo.id in (
select distinct bb.bst_id from bst_bonus bb
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java
index 44af5d3..104e4b0 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java
@@ -285,9 +285,6 @@ public class OrderServiceImpl implements OrderService
ServiceUtil.assertion(doPayVO == null, "支付失败");
bo.setDoPayVO(doPayVO);
- // 加入延时队列,超时取消
- this.cancelWhenExpired(order);
-
return doPayVO;
});
} finally {
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/domain/OrderDeviceVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/domain/OrderDeviceVO.java
index 7263c3d..d7366f9 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/domain/OrderDeviceVO.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/domain/OrderDeviceVO.java
@@ -43,6 +43,10 @@ public class OrderDeviceVO extends OrderDevice{
@ApiModelProperty("设备商户名称")
private String deviceMchName;
+ // 车型
+ @ApiModelProperty("车型")
+ private String deviceModelName;
+
// 设备剩余续航(公里)
public BigDecimal getDeviceRemainEndurance() {
BigDecimal remainEndurance = MathUtils.mulDecimal(getDeviceRemainingPower(), getDeviceModelFullEndurance());
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/mapper/OrderDeviceMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/mapper/OrderDeviceMapper.xml
index d410175..ce54822 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/mapper/OrderDeviceMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/orderDevice/mapper/OrderDeviceMapper.xml
@@ -43,7 +43,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bd.longitude as device_longitude,
bd.latitude as device_latitude,
su.nick_name as order_user_name,
- mch.nick_name as device_mch_name
+ mch.nick_name as device_mch_name,
+ bm.name as device_model_name
from bst_order_device bod
left join bst_order bo on bo.id = bod.order_id
left join bst_device bd on bd.id = bod.device_id
@@ -73,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and bod.start_area_sub_name like concat('%', #{query.startAreaSubName}, '%')
and bod.end_area_sub_name like concat('%', #{query.endAreaSubName}, '%')
and bod.return_mode = #{query.returnMode}
+ and bm.name like concat('%', #{query.deviceModelName}, '%')
and bod.status in
diff --git a/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java b/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
index b09ce07..4a158fb 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/task/order/OrderTask.java
@@ -114,4 +114,28 @@ public class OrderTask implements ApplicationRunner {
}
-}
+ /**
+ * 取消超时未支付的订单
+ */
+ public void cancelExpireUnPayOrder() {
+ // 查询超时未支付的订单
+ OrderQuery query = new OrderQuery();
+ query.setStatusList(OrderStatus.unPayList());
+ query.setPayExpireTimeEnd(LocalDateTime.now());
+ List orderIds = orderService.selectIdList(query);
+
+ if (CollectionUtils.isEmptyElement(orderIds)) {
+ log.info("没有超时未支付的订单");
+ return;
+ }
+
+ for (Long id : orderIds) {
+ try {
+ orderService.cancelOrder(id, "订单超时取消");
+ } catch (Exception e) {
+ log.error("取消订单失败,订单ID:{}", id, e);
+ }
+ }
+ }
+
+}
\ No newline at end of file