From 32a41e7b04e44a9aba33dd3d71fb79364dc6c851 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 25 Aug 2025 18:57:05 +0800
Subject: [PATCH] 消息通知

---
 oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java                 |   10 ++--
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java |    5 ++
 oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java          |    6 +-
 oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java          |   22 ++++++----
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java |   58 +++++++++++++++++++---------
 5 files changed, 65 insertions(+), 36 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
similarity index 92%
rename from oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
rename to oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
index 1fcc66d..7301ecd 100644
--- a/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
@@ -16,7 +16,7 @@
  */
 @Getter
 @AllArgsConstructor
-public enum OrderStatusEnum {
+public enum MsgStatusEnum {
     //订单消息  通知状态   用于插入
     //订单状态需要满足:
     /// 商户: 订单类消息,包括买家下单提醒、订单送达通知等
@@ -109,9 +109,9 @@
     /**
      * 反向映射,提升查找速度
      */
-    private static final Map<Integer, OrderStatusEnum> MAP =
+    private static final Map<Integer, MsgStatusEnum> MAP =
             Arrays.stream(values())
-                    .collect(Collectors.toMap(OrderStatusEnum::getKey, Function.identity()));
+                    .collect(Collectors.toMap(MsgStatusEnum::getKey, Function.identity()));
     private final Integer key;
     private final String value;
 
@@ -120,7 +120,7 @@
     /**
      * 根据 key 获取枚举
      */
-    public static OrderStatusEnum of(Integer key) {
+    public static MsgStatusEnum of(Integer key) {
         return key == null ? null : MAP.get(key);
     }
 
@@ -128,7 +128,7 @@
      * 根据 key 获取描述
      */
     public static String descOf(Integer key) {
-        OrderStatusEnum e = of(key);
+        MsgStatusEnum e = of(key);
         return e == null ? "" : e.getValue();
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
index eb824ff..702b75a 100644
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
@@ -1,7 +1,7 @@
 package com.oying.modules.message.rest;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
 import com.oying.modules.message.common.PlatFormEnum;
 import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
@@ -168,7 +168,7 @@
     @ApiOperation("商户端:用店铺id 获取下单订单消息")
     public R<List<MesMsgRecordQueryOrderDto>> getPendingOrders(@RequestParam Long shopId) {
         try {
-            String content = OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue();
+            String content = MsgStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue();
             List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
             return R.success(res);
         } catch (Exception e) {
@@ -182,7 +182,7 @@
     @ApiOperation("商户端:用店铺id 获取订单送达消息")
     public R<List<MesMsgRecordQueryOrderDto>> getDeliveredOrders(@RequestParam Long shopId) {
         try {
-            String content = OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue();
+            String content = MsgStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue();
             List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
             return R.success(res);
         } catch (Exception e) {
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
index 20e89cd..c7ae0df 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
@@ -2,12 +2,14 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.common.MesTypeEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
 import com.oying.modules.message.domain.MesMsgRecord;
 import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
+import com.oying.modules.sh.domain.Order;
 import com.oying.utils.PageResult;
 
 import javax.servlet.http.HttpServletResponse;
@@ -85,12 +87,14 @@
 
     List<MesMsgRecordQueryPollDto> PollMesAll(Long platform);
 
+    /**
+     * 插入订单消息通知
+     * @param order 订单信息 {@link com.oying.modules.sh.domain.Order}
+     * @param content 消息内容
+     * @param typeEnum 消息类型
+     */
+    void insertOrderMsg(Order order, MsgStatusEnum content, MesTypeEnum typeEnum);
 
-    //插入订单消息
-
-//    入参     订单编号 订单状态(内容)  店铺id   没有传空值
-
-    //    void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId);
     // 设置一个买家状态为下单    买家id name 订单属性 店铺号
     void setBuyerStatusOrderSubmitted(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName);
 
@@ -98,13 +102,13 @@
     void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName);
 
     // 设置一个(订单,买家)的 买家状态
-    void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+    void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName);
 
 
     //设置商家的状态
-    void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+    void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName);
 
     //设置骑手状态
-    void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+    void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName);
 
 }
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
index be9c78d..f4489d1 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
@@ -4,7 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.oying.modules.message.common.MesReadEnum;
 import com.oying.modules.message.common.MesTypeEnum;
-import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
 import com.oying.modules.message.domain.MesMsgRecord;
 import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
@@ -12,6 +12,7 @@
 import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
 import com.oying.modules.message.mapper.MesMsgRecordMapper;
 import com.oying.modules.message.service.MesMsgRecordService;
+import com.oying.modules.sh.domain.Order;
 import com.oying.utils.FileUtil;
 import com.oying.utils.PageResult;
 import com.oying.utils.PageUtil;
@@ -115,7 +116,7 @@
 
 //    @Override
 //    @Transactional(rollbackFor = Exception.class)
-//    public void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) {
+//    public void insertOrderMsg(String orderNo, MsgStatusEnum content, Long shopId) {
 //        MesMsgRecord record = new MesMsgRecord();
 //        record.setOrderNo(orderNo);
 //        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
@@ -135,14 +136,33 @@
         return mesMsgRecordMapper.PollMesAll(platform);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOrderMsg(Order order, MsgStatusEnum content, MesTypeEnum typeEnum) {
+        MesMsgRecord record = new MesMsgRecord();
+        record.setOrderNo(order.getOrderNum());
+        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+        record.setBuyerId(String.valueOf(order.getUserId())); // 处理空值情况
+        record.setBuyerName(order.getUsername());
+        record.setRiderId(order.getRiderId() != null ? String.valueOf(order.getRiderId()) : null);
+        record.setRiderName(order.getRiderName() != null ? order.getRiderName() : null);
+        record.setShopId(order.getStoreId());
+        record.setMsgType(typeEnum.getKey()); // 订单消息类型为2
+        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
     // 设置一个买家状态为下单 不存在则插入   买家id name 订单属性 店铺号
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void setBuyerStatusOrderSubmitted(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName) {
         MesMsgRecord record = new MesMsgRecord();
         record.setOrderNo(orderNo);
-        record.setContent(OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue()); // 使用枚举的描述作为消息内容
-        record.setContentKey(String.valueOf(OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getKey()));// 使用枚举的描述作为消息内容key
+        record.setContent(MsgStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(MsgStatusEnum.MERCHANT_ORDER_SUBMITTED.getKey()));// 使用枚举的描述作为消息内容key
         record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
         record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
         record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
@@ -168,8 +188,8 @@
     public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName) {
         MesMsgRecord record = new MesMsgRecord();
         record.setOrderNo(orderNo);
-        record.setContent(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue()); // 使用枚举的描述作为消息内容
-        record.setContentKey(String.valueOf(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getKey()));// 使用枚举的描述作为消息内容key
+        record.setContent(MsgStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(MsgStatusEnum.BUYER_ORDER_STATUS_CHANGED.getKey()));// 使用枚举的描述作为消息内容key
         record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
         record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
         record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
@@ -192,12 +212,12 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+    public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
         //content只能设置为如下 "商品已送达" "订单已完成" "订单送达"
         if (content == null ||
-                (!content.equals(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED) &&
-                        !content.equals(OrderStatusEnum.BUYER_ORDER_COMPLETED) &&
-                        !content.equals(OrderStatusEnum.BUYER_ORDER_DELIVERED))) {
+                (!content.equals(MsgStatusEnum.BUYER_ORDER_STATUS_CHANGED) &&
+                        !content.equals(MsgStatusEnum.BUYER_ORDER_COMPLETED) &&
+                        !content.equals(MsgStatusEnum.BUYER_ORDER_DELIVERED))) {
             throw new IllegalArgumentException("content只能设置为如下 \"商品已送达\" \"订单已完成\" \"订单送达\"");
         }
         MesMsgRecord record = new MesMsgRecord();
@@ -226,12 +246,12 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+    public void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
         //content只能为  "订单已提交" "商家已接单" 商家已备货"
         if (content == null ||
-                (content != OrderStatusEnum.MERCHANT_ORDER_SUBMITTED &&
-                        content != OrderStatusEnum.MERCHANT_ACCEPTED &&
-                        content != OrderStatusEnum.MERCHANT_PREPARED)) {
+                (content != MsgStatusEnum.MERCHANT_ORDER_SUBMITTED &&
+                        content != MsgStatusEnum.MERCHANT_ACCEPTED &&
+                        content != MsgStatusEnum.MERCHANT_PREPARED)) {
             throw new IllegalArgumentException("content只能为  \"订单已提交\" \"商家已接单\" 商家已备货\"");
         }
         MesMsgRecord record = new MesMsgRecord();
@@ -260,13 +280,13 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+    public void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
         //content只能为  "骑手已接单" "骑手已取货" "骑手已到店" "订单已取消" "距离最晚送达时间不足1小时" "距离最晚送达时间不足30分钟"
         if (content == null ||
-                (content != OrderStatusEnum.RIDER_PENDING_ACCEPTANCE &&
-                        content != OrderStatusEnum.RIDER_PICKED_UP &&
-                        content != OrderStatusEnum.RIDER_ARRIVED &&
-                        content != OrderStatusEnum.RIDER_ORDER_CANCELLED && content != OrderStatusEnum.RIDER_DELIVERY_WARNING)) {
+                (content != MsgStatusEnum.RIDER_PENDING_ACCEPTANCE &&
+                        content != MsgStatusEnum.RIDER_PICKED_UP &&
+                        content != MsgStatusEnum.RIDER_ARRIVED &&
+                        content != MsgStatusEnum.RIDER_ORDER_CANCELLED && content != MsgStatusEnum.RIDER_DELIVERY_WARNING)) {
             throw new IllegalArgumentException("content只能为  \"骑手已接单\" \"骑手已取货\" \"骑手已到店\" \"订单已取消\" \"订单已超时\" ");
         }
         MesMsgRecord record = new MesMsgRecord();
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
index a091f1b..41a0607 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
@@ -2,6 +2,9 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.oying.exception.BadRequestException;
+import com.oying.modules.message.common.MesTypeEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
+import com.oying.modules.message.service.MesMsgRecordService;
 import com.oying.modules.sh.domain.OrderOperationLog;
 import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.mapper.OrderMapper;
@@ -35,6 +38,7 @@
 
     private final OrderOperationLogMapper orderOperationLogMapper;
     private final OrderMapper orderMapper;
+    private final MesMsgRecordService mesMsgRecordService;
 
     @Override
     public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page) {
@@ -155,6 +159,7 @@
         resources.setSnapshotData(JSON.toJSONString(map));
         resources.setOperationTime(time);
         orderOperationLogMapper.insert(resources);
+        mesMsgRecordService.insertOrderMsg(response.getOrder(), MsgStatusEnum.MERCHANT_ORDER_SUBMITTED, MesTypeEnum.ORDER);
         orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
     }
 

--
Gitblit v1.9.3