From b1a510e8fb46ae972798b09a6ee31c756bee5ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 13 Nov 2025 09:44:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=96=B0=E5=A2=9E=E8=BF=91?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E6=9C=88=E8=AE=A2=E5=8D=95=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ShopOrderMapper.xml中添加状态筛选条件9,用于查询近三个月的订单- 修改数据库连接地址为生产环境IP - 完善GPS消息处理器,增加空消息和心跳状态消息检查 - 优化订单支付逻辑,修复后更新订单状态为已支付 --- .../bszx/controller/BszxPayController.java | 2 + .../hjm/service/GpsMessageProcessor.java | 39 ++++++++++++++++++- .../shop/mapper/xml/ShopOrderMapper.xml | 4 ++ src/main/resources/application-prod.yml | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java index 10b238d..3254532 100644 --- a/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java @@ -329,6 +329,8 @@ public class BszxPayController extends BaseController { bszxPay.setComments(shopOrder.getComments()); bszxPayService.save(bszxPay); } + shopOrder.setOrderStatus(1); + shopOrderService.updateById(shopOrder); } return success("修复成功"); } diff --git a/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java index ffe24f3..51ab24c 100644 --- a/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java +++ b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java @@ -60,9 +60,22 @@ public class GpsMessageProcessor { try { logger.debug("开始处理GPS消息: {}", payload); + // 检查消息内容是否为空 + if (StrUtil.isBlank(payload)) { + logger.warn("接收到空消息,跳过处理"); + return; + } + + // 检查是否为心跳或状态消息(非JSON格式) + if (isHeartbeatOrStatusMessage(payload)) { + logger.info("接收到心跳或状态消息: {}", payload); + return; + } + + // 尝试解析JSON格式的GPS数据 Gps gps = JSONUtil.parseObject(payload, Gps.class); if (ObjectUtil.isEmpty(gps)) { - logger.warn("GPS数据为空,跳过处理"); + logger.warn("GPS数据解析为空,跳过处理。消息内容: {}", payload); return; } @@ -73,6 +86,30 @@ public class GpsMessageProcessor { } } + /** + * 检查是否为心跳或状态消息 + * + * @param payload 消息内容 + * @return true 如果是心跳或状态消息 + */ + private boolean isHeartbeatOrStatusMessage(String payload) { + // 去除前后空格和引号 + String cleanPayload = payload.trim(); + if (cleanPayload.startsWith("\"") && cleanPayload.endsWith("\"")) { + cleanPayload = cleanPayload.substring(1, cleanPayload.length() - 1); + } + + // 检查常见的心跳或状态消息 + return "online".equalsIgnoreCase(cleanPayload) || + "offline".equalsIgnoreCase(cleanPayload) || + "ping".equalsIgnoreCase(cleanPayload) || + "pong".equalsIgnoreCase(cleanPayload) || + "heartbeat".equalsIgnoreCase(cleanPayload) || + "status".equalsIgnoreCase(cleanPayload) || + cleanPayload.startsWith("status:") || + cleanPayload.startsWith("heartbeat:"); + } + /** * 处理GPS数据 * diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml index ab5f7c4..f577ffe 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml @@ -259,6 +259,10 @@ AND a.order_status = 2 + + + AND a.create_time >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) + diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 1dc2db7..f021734 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,7 +3,7 @@ # 数据源配置 spring: datasource: - url: jdbc:mysql://1Panel-mysql-Bqdt:3306/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai + url: jdbc:mysql://8.134.169.209:13306/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: modules password: P7KsAyDXG8YdLnkA driver-class-name: com.mysql.cj.jdbc.Driver