From 0233d941ae15db1a089bdb633f76d67be6a15ed3 Mon Sep 17 00:00:00 2001
From: leomon <2233021400@qq.com>
Date: Sat, 12 Jul 2025 23:22:48 +0800
Subject: [PATCH] 优化

---
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java           |    5 +
 oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java          |   26 +++++---
 oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java          |    8 ++
 oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java            |    2 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java |   50 +++++++++++++++-
 oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java                     |   52 +++++++++++++++++
 oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml                          |    5 +
 7 files changed, 131 insertions(+), 17 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/OrderStatusEnum.java
new file mode 100644
index 0000000..ea390f5
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
@@ -0,0 +1,52 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 订单状态枚举
+ *
+ * @author leomon
+ * @date 2025-05-20
+ */
+@Getter
+@AllArgsConstructor
+public enum OrderStatusEnum {
+
+    ZERO(0, "订单已提交"),
+    ONE(1, "支付成功"),
+    TWO(2, "商家已接单"),
+    THREE(3, "骑手已接单"),
+    FOUR(4, "商家已备货"),
+    FIVE(5, "骑手已到店"),
+    SIX(6, "骑手已取货"),
+    SEVEN(7, "商品已送达"),
+    EIGHT(8, "订单已完成"),
+    NINE(9, "订单已取消");
+
+    private final Integer key;
+    private final String  value;
+
+    /* ========== 工具方法 ========== */
+
+    /** 根据 key 获取枚举 */
+    public static OrderStatusEnum of(Integer key) {
+        return key == null ? null : MAP.get(key);
+    }
+
+    /** 根据 key 获取描述 */
+    public static String descOf(Integer key) {
+        OrderStatusEnum e = of(key);
+        return e == null ? "" : e.getValue();
+    }
+
+    /** 反向映射,提升查找速度 */
+    private static final Map<Integer, OrderStatusEnum> MAP =
+            Arrays.stream(values())
+                    .collect(Collectors.toMap(OrderStatusEnum::getKey, Function.identity()));
+}
\ No newline at end of file
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java
index f33e962..ac6906e 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java
@@ -8,10 +8,13 @@
 
 @Data
 public class MessageOrderSellerDTO {
+    //加一个主键
+
+    private Integer id;
 
     private Integer orderId;
 
-    private String messageType;
+//    private String messageType;
 
     private String messageContent;
 
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
index 510e800..18306cb 100644
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
@@ -25,4 +25,6 @@
     Boolean updateMessageOrderSellerRead(Integer orderId);
 
     boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources);
+
+    boolean updateReadStatusById(Integer id);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
index e73785e..0a972a6 100644
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
@@ -102,16 +102,22 @@
 
     }
     //让前端标记已读
-    @PostMapping("/read/{order_id}")
-    @ApiOperation("让前端标记已读 按条")
-    public R<String> getMessageOrderSellerRead(@PathVariable Integer order_id) {
-             if(messageOrderSellerService.updateMessageOrderSellerRead(order_id)){
-                 return R.success("已读");
-             }else{
-                 return R.fail("id不存在");
-             }
-
-
+    //修改逻辑 主键为条件  而不是订单号,有些订单号可能重复 含多条信息 已弃用
+//    @PostMapping("/readByorderid/{order_id}")
+//    @ApiOperation("让前端标记已读 按条")
+//    public R<String> getMessageOrderSellerRead(@PathVariable Integer order_id) {
+//             if(messageOrderSellerService.updateMessageOrderSellerRead(order_id)){
+//                 return R.success("已读");
+//             }else{
+//                 return R.fail("id不存在");
+//             }
+//    }
+    //让前端标记已读   主键为条件
+    @PostMapping("/read/{id}")
+    @ApiOperation("标记单条消息为已读(按主键 id)")
+    public R<String> markReadByPrimaryKey(@PathVariable Integer id) {
+        boolean updated = messageOrderSellerService.updateReadStatusById(id);
+        return updated ? R.success("已读") : R.fail("消息 id 不存在");
     }
     @Beta//重复值处理
     //让后端队友更新我的表
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
index ca3615e..db8686c 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
@@ -77,8 +77,8 @@
      * </p>
      * <p>
      * 可选字段:
-     * - messageType:消息类型 :     供流程使用  订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消"
-     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单"
+     * - messageType:消息类型 :  暂未使用
+     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单" 即com.oying.modules.message.common.OrderStatusEnum
      * - link:链接
      * - flag:标志字段(默认值为未读 0)
      * </p>
@@ -88,4 +88,8 @@
      */
     @Beta
     boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources);
+
+    boolean updateReadStatusById(Integer id);
+
+//    public void saveMessage(MessageOrderSeller resources) ;
 }
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
index d5fc522..a248ec6 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
@@ -9,6 +9,7 @@
 import com.oying.modules.message.service.MessageOrderSellerService;
 import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
 import com.oying.modules.message.mapper.MessageOrderSellerMapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.util.Beta;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -25,11 +26,15 @@
 * @author 李萌
 * @date 2025-05-20
 **/
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class MessageOrderSellerServiceImpl extends ServiceImpl<MessageOrderSellerMapper, MessageOrderSeller> implements MessageOrderSellerService {
 
     private final MessageOrderSellerMapper messageOrderSellerMapper;
+
+
+
 
     @Override
     public PageResult<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria, Page<Object> page){
@@ -104,19 +109,56 @@
      * </p>
      * <p>
      * 可选字段:
-     * - messageType:消息类型 :     供流程使用  订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消"
-     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单"
+     * - messageType:消息类型 : 暂时不用
+     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单".......com.oying.modules.message.common.OrderStatusEnum
      * - link:链接
      * - flag:标志字段(默认值为未读 0)
      * </p>
      *
      * @param resources MessageOrderSeller 对象,包含需要保存或更新的数据。
      * @return true 表示保存成功,false 表示保存失败。
+     *
+     * 目前插入orderId   storeId messageContent即可,其他保留---------
      */
-    @Beta
     @Override
     public boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources) {
-        return messageOrderSellerMapper.saveMessageOrderSellerByOrderIdAndStoreId(resources);
+
+        try {
+            // 1. 判断重复的记录是否存在
+//            // messageType此处不用
+            long count = this.lambdaQuery()
+                    .eq(MessageOrderSeller::getOrderId, resources.getOrderId())
+                    .eq(MessageOrderSeller::getStoreId,   resources.getStoreId())
+                    .eq(MessageOrderSeller::getMessageContent, resources.getMessageContent())
+                    .eq(MessageOrderSeller::getFlag, 0)       // 未读
+                    .count();
+
+            //存在  不插入
+            if (count > 0) {
+                log.warn("消息已存在,跳过保存:{}",
+                        resources);
+                return false;
+            }else{
+                return messageOrderSellerMapper.saveMessageOrderSellerByOrderIdAndStoreId(resources);
+            }
+
+        } catch (Exception e) {
+            log.error("保存消息异常",
+                    e);
+            return false;
+        }
+
     }
 
+
+
+
+
+    @Override
+    public boolean updateReadStatusById(Integer id) {
+        return messageOrderSellerMapper.updateReadStatusById(id);
+    }
+
+
+
 }
diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
index 5af3eb5..3650877 100644
--- a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
+++ b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
@@ -63,6 +63,11 @@
         set flag = 1
         where order_id = #{orderId}
     </update>
+    <update id="updateReadStatusById">
+        update message_order_seller
+        set flag = 1
+        where id = #{id}
+    </update>
 
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3