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/service/impl/MesMsgRecordServiceImpl.java |  249 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 224 insertions(+), 25 deletions(-)

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 95d4514..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
@@ -1,30 +1,32 @@
 package com.oying.modules.message.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
 import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
-import com.oying.utils.FileUtil;
-import com.oying.utils.SecurityUtils;
-import lombok.RequiredArgsConstructor;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.oying.modules.message.service.MesMsgRecordService;
-import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
 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;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
 
-import java.sql.Timestamp;
-import java.util.*;
-import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
-
-import com.oying.utils.PageResult;
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author 李萌
@@ -93,8 +95,8 @@
     }
 
     @Override
-    public List<MesMsgRecordQueryPollDto> PollMes(Long platform) {
-        return mesMsgRecordMapper.PollMes(platform);
+    public List<MesMsgRecordQueryPollDto> PollMes(Long platform, Long mestype) {
+        return mesMsgRecordMapper.PollMes(platform, mestype);
     }
 
     @Override
@@ -112,21 +114,218 @@
         return mesMsgRecordMapper.queryorder(shopId);
     }
 
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public void insertOrderMsg(String orderNo, MsgStatusEnum content, Long shopId) {
+//        MesMsgRecord record = new MesMsgRecord();
+//        record.setOrderNo(orderNo);
+//        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+//        record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+//        record.setShopId(shopId);
+//        record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+//        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+//        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+//        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+//        mesMsgRecordMapper.insert(record);   // 让异常直接往外抛
+//
+//    }
+
+
     @Override
-    public void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) {
+    public List<MesMsgRecordQueryPollDto> PollMesAll(Long platform) {
+        return mesMsgRecordMapper.PollMesAll(platform);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOrderMsg(Order order, MsgStatusEnum content, MesTypeEnum typeEnum) {
         MesMsgRecord record = new MesMsgRecord();
-        record.setOrderNo(orderNo);
+        record.setOrderNo(order.getOrderNum());
         record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
-        record.setShopId(shopId);
-        record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+        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()));
-        try {
-            mesMsgRecordMapper.insert(record);
-        } catch (Exception e) {
-          log.error("插入订单消息失败:{}", e);
-        }
+        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(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
+        if (riderId != null) {
+            record.setRiderId(riderId);
+        }
+        if (riderName != null) {
+            record.setRiderName(riderName);
+        }
+        if (shopId != null) {
+            record.setShopId(shopId);
+        }
+        if (buyerName != null) {
+            record.setBuyerName(buyerName);
+        }
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName) {
+        MesMsgRecord record = new MesMsgRecord();
+        record.setOrderNo(orderNo);
+        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
+        if (riderId != null) {
+            record.setRiderId(riderId);
+        }
+        if (riderName != null) {
+            record.setRiderName(riderName);
+        }
+        if (shopId != null) {
+            record.setShopId(shopId);
+        }
+        if (buyerName != null) {
+            record.setBuyerName(buyerName);
+        }
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
+        //content只能设置为如下 "商品已送达" "订单已完成" "订单送达"
+        if (content == null ||
+                (!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();
+        record.setOrderNo(orderNo);
+        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+        record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+        record.setMsgType(MesTypeEnum.BUYER.getKey()); //
+        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+        if (riderId != null) {
+            record.setRiderId(riderId);
+        }
+        if (riderName != null) {
+            record.setRiderName(riderName);
+        }
+        if (shopId != null) {
+            record.setShopId(shopId);
+        }
+        if (buyerName != null) {
+            record.setBuyerName(buyerName);
+        }
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
+        //content只能为  "订单已提交" "商家已接单" 商家已备货"
+        if (content == null ||
+                (content != MsgStatusEnum.MERCHANT_ORDER_SUBMITTED &&
+                        content != MsgStatusEnum.MERCHANT_ACCEPTED &&
+                        content != MsgStatusEnum.MERCHANT_PREPARED)) {
+            throw new IllegalArgumentException("content只能为  \"订单已提交\" \"商家已接单\" 商家已备货\"");
+        }
+        MesMsgRecord record = new MesMsgRecord();
+        record.setOrderNo(orderNo);
+        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+        record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+        record.setMsgType(MesTypeEnum.MERCHANT.getKey()); //
+        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+        if (riderId != null) {
+            record.setRiderId(riderId);
+        }
+        if (riderName != null) {
+            record.setRiderName(riderName);
+        }
+        if (shopId != null) {
+            record.setShopId(shopId);
+        }
+        if (buyerName != null) {
+            record.setBuyerName(buyerName);
+        }
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, MsgStatusEnum content, String riderId, String riderName) {
+        //content只能为  "骑手已接单" "骑手已取货" "骑手已到店" "订单已取消" "距离最晚送达时间不足1小时" "距离最晚送达时间不足30分钟"
+        if (content == null ||
+                (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();
+        record.setOrderNo(orderNo);
+        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+        record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+        record.setMsgType(MesTypeEnum.RIDER.getKey()); //
+        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+        if (riderId != null) {
+            record.setRiderId(riderId);
+        }
+        if (riderName != null) {
+            record.setRiderName(riderName);
+        }
+        if (shopId != null) {
+            record.setShopId(shopId);
+        }
+        if (buyerName != null) {
+            record.setBuyerName(buyerName);
+        }
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        mesMsgRecordMapper.insert(record);
+    }
+
+
+    @Override
+    public List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content) {
+        return mesMsgRecordMapper.queryorderPending(shopId, content);
+    }
+
+    @Override
+    public List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId) {
+        return mesMsgRecordMapper.queryBuyerOrderMessages(buyerId);
+    }
+
+    @Override
+    public List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId) {
+        return mesMsgRecordMapper.queryBuyerOrderMessagesComplete(buyerId);
     }
 }

--
Gitblit v1.9.3