From 206f601b1f2a2e3cb0bf4f5dead01bec9077d8e9 Mon Sep 17 00:00:00 2001
From: 彭雪彬 <1724387007@qq.com>
Date: Thu, 04 Sep 2025 15:28:52 +0800
Subject: [PATCH] Merge branch 'xin' into pxb

---
 oying-system/src/main/java/com/oying/modules/sh/domain/request/AuditOrderReturn.java                     |    3 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesCustomerCommentMsgMapper.java             |   26 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryPollDto.java          |   76 
 .idea/misc.xml                                                                                           |    2 
 oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java              |   81 
 oying-system/src/main/java/com/oying/modules/message/domain/MesShopReply.java                            |   60 
 oying-system/src/main/java/com/oying/modules/pc/store/view/CustomerStoreView.java                        |   30 
 oying-system/src/main/java/com/oying/modules/message/rest/MesMsgTemplateController.java                  |   73 
 oying-system/src/main/resources/mapper/pc/product/ProductAuditMapper.xml                                 |   51 
 oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml                                    |    9 
 oying-system/src/main/java/com/oying/modules/message/domain/MesAdvertisement.java                        |  109 +
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgTemplateServiceImpl.java         |   83 
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java                  |   22 
 oying-system/src/main/resources/config/application-dev.yml                                               |    2 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java  |    4 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreFieldUpdateRequest.java            |    8 
 oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductQueryCriteria.java             |    6 
 oying-system/src/main/java/com/oying/modules/sh/domain/Order.java                                        |   10 
 oying-system/src/main/java/com/oying/modules/message/service/MesCustomerCommentMsgService.java           |   80 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesShopReplyServiceImpl.java           |   79 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopMsgRespDTO.java                   |   15 
 oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java                                    |   30 
 oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreAuditMapper.java                       |    6 
 oying-system/src/main/java/com/oying/modules/message/domain/MesMsgTemplate.java                          |   72 
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java                  |   14 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java     |   99 
 oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml                                          |   24 
 .idea/compiler.xml                                                                                       |   10 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java     |    4 
 oying-system/src/main/java/com/oying/modules/pc/store/view/StoreSimpleView.java                          |    3 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java                      |   47 
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java           |  113 
 oying-system/src/main/java/com/oying/modules/sh/rest/OrderOperationLogController.java                    |    4 
 oying-system/src/main/resources/mapper/pc/store/StoreAuditMapper.xml                                     |   44 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java       |    4 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesCustomerCommentMsgDTO.java          |   81 
 oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductAuditServiceImpl.java        |   14 
 oying-system/src/main/java/com/oying/modules/message/domain/MesCustomerCommentMsg.java                   |   95 
 oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml                                          |    7 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java           |    4 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java  |  168 +
 oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductController.java                      |   14 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesAdvertisementServiceImpl.java       |   93 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCustomerDetailDto.java             |    3 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderEvaluationMapper.java                |   26 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditData.java                     |    1 
 oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java                           |  197 +
 oying-system/src/main/java/com/oying/modules/message/common/BizTypeEnum.java                             |   58 
 oying-system/src/main/java/com/oying/modules/pc/store/view/StoreMerchantView.java                        |   12 
 oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java                                |    2 
 oying-system/src/main/java/com/oying/modules/message/domain/MesOrderItemEvaluation.java                  |   78 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesRiderEvaluationMapper.java                |   26 
 oying-system/src/main/java/com/oying/modules/security/config/SecurityProperties.java                     |    5 
 oying-common/src/main/java/com/oying/utils/RedisUtils.java                                               |    6 
 oying-system/src/main/java/com/oying/modules/message/rest/MesShopReplyController.java                    |   73 
 oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java                             |   65 
 oying-system/src/main/java/com/oying/modules/message/service/MesShopReplyService.java                    |   60 
 oying-system/src/main/java/com/oying/modules/pc/product/domain/Product.java                              |    3 
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java                 |   17 
 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java           |    3 
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderOperationLogMapper.java                      |    2 
 oying-system/src/main/resources/mapper/message/MesOrderEvaluationMapper.xml                              |   71 
 oying-common/src/main/java/com/oying/utils/enums/DataScopeEnum.java                                      |   18 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java           |  312 +++
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java |    4 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/Store.java                                  |   18 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java         |    4 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderItemEvaluationDto.java         |   78 
 oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductRevisionRecord.java            |   18 
 oying-system/src/main/java/com/oying/modules/message/common/PlatFormEnum.java                            |   59 
 oying-system/src/main/java/com/oying/modules/message/service/MesOrderEvaluationService.java              |   63 
 oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java              |   10 
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java          |   14 
 oying-system/src/main/resources/mapper/message/MesRiderEvaluationMapper.xml                              |   86 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCreateRequest.java                 |    4 
 oying-common/src/main/java/com/oying/utils/DateUtil.java                                                 |   31 
 oying-system/src/main/java/com/oying/modules/message/service/MesOrderItemEvaluationService.java          |   63 
 oying-system/src/main/java/com/oying/modules/message/rest/MesAdvertisementController.java                |   73 
 oying-system/src/main/java/com/oying/modules/sh/domain/request/ReturnOrder.java                          |   33 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesAdvertisementMapper.java                  |   22 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQuerySystemDto.java        |   76 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditQueryCriteria.java            |    8 
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java                       |   42 
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreUpdateRequest.java                 |    6 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesShopReplyMapper.java                      |   22 
 oying-system/src/main/java/com/oying/modules/message/service/MesAdvertisementService.java                |   60 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesRiderEvaluationServiceImpl.java     |   91 
 oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml                                    |  158 +
 oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderItemEvaluationMapper.java            |   25 
 oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java                    |  114 +
 oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml                                      |   25 
 oying-system/src/main/java/com/oying/modules/hwc/utils/SignUtil.java                                     |   11 
 oying-system/src/main/java/com/oying/modules/pc/product/view/ProductCustomerView.java                    |    6 
 oying-system/src/main/java/com/oying/modules/message/service/MesMsgTemplateService.java                  |   60 
 oying-system/src/main/java/com/oying/modules/pc/product/view/ProductAuditView.java                       |   50 
 oying-system/src/main/resources/mapper/sh/OrderMapper.xml                                                |    4 
 oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java                    |  220 ++
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryOrderDto.java         |  101 
 oying-system/src/main/java/com/oying/modules/message/common/MesReadEnum.java                             |   58 
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreAuditServiceImpl.java            |   17 
 oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java                          |   33 
 oying-system/src/main/java/com/oying/modules/message/domain/MesOrderEvaluation.java                      |  102 
 oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditQueryCriteria.java        |   11 
 oying-system/src/main/resources/mapper/message/MesAdvertisementMapper.xml                                |   41 
 oying-common/src/main/java/com/oying/utils/enums/GenerateEnum.java                                       |   16 
 oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java                            |  110 +
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreQualificationMerchantController.java     |   10 
 oying-system/src/main/java/com/oying/modules/pc/product/mapper/ProductAuditMapper.java                   |    5 
 oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductCustomerController.java              |    2 
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java                 |  201 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java     |    4 
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreMerchantServiceImpl.java         |    7 
 oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java                    |    7 
 oying-system/src/main/java/com/oying/modules/pc/store/service/StoreService.java                          |    4 
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java                            |    7 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgTemplateMapper.java                    |   22 
 oying-system/src/main/java/com/oying/modules/message/rest/MesOrderItemEvaluationController.java          |   83 
 oying-system/src/main/resources/mapper/message/MesCustomerCommentMsgMapper.xml                           |   50 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java           |    4 
 oying-system/src/main/java/com/oying/modules/pc/store/service/StoreAuditService.java                     |    5 
 oying-system/src/main/java/com/oying/modules/message/rest/MesCustomerCommentMsgController.java           |   83 
 oying-system/src/main/resources/mapper/message/MesMsgTemplateMapper.xml                                  |   30 
 oying-system/src/main/resources/mapper/message/MesOrderItemEvaluationMapper.xml                          |   88 
 oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java     |   34 
 oying-system/src/main/java/com/oying/modules/pc/store/view/StoreAuditView.java                           |   54 
 oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java                                    |    7 
 oying-system/src/main/java/com/oying/modules/hwc/utils/XmlUtils.java                                     |    3 
 oying-system/src/main/java/com/oying/modules/message/service/MesRiderEvaluationService.java              |   63 
 oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java                   |   30 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesRiderEvaluationDto.java             |   50 
 oying-system/src/main/java/com/oying/modules/pc/product/service/ProductAuditService.java                 |   13 
 oying-system/src/main/resources/config/application-prod.yml                                              |    2 
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java                                  |    8 
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java                            |    4 
 oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml                                    |   17 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java |   92 
 oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditData.java                 |    6 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderEvaluationDto.java             |   54 
 /dev/null                                                                                                |   47 
 oying-system/src/main/java/com/oying/modules/message/domain/MesRiderEvaluation.java                      |   80 
 oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java              |   81 
 oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java                    |    2 
 oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java                          |   17 
 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderInfo.java                                 |    8 
 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java                       |   27 
 oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java                           |    2 
 146 files changed, 5,852 insertions(+), 325 deletions(-)

diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 8f29a85..b697d3f 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -17,11 +17,11 @@
   </component>
   <component name="JavacSettings">
     <option name="ADDITIONAL_OPTIONS_OVERRIDE">
-      <module name="oying-common" options="-parameters" />
-      <module name="oying-generator" options="-parameters" />
-      <module name="oying-logging" options="-parameters" />
-      <module name="oying-system" options="-parameters" />
-      <module name="oying-tools" options="-parameters" />
+      <module name="oying-common" options="" />
+      <module name="oying-generator" options="" />
+      <module name="oying-logging" options="" />
+      <module name="oying-system" options="" />
+      <module name="oying-tools" options="" />
     </option>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d5cd614..b784bbc 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,5 +8,5 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
 </project>
\ No newline at end of file
diff --git a/oying-common/src/main/java/com/oying/utils/DateUtil.java b/oying-common/src/main/java/com/oying/utils/DateUtil.java
index d74db88..b95aeed 100644
--- a/oying-common/src/main/java/com/oying/utils/DateUtil.java
+++ b/oying-common/src/main/java/com/oying/utils/DateUtil.java
@@ -18,15 +18,36 @@
     public static final DateTimeFormatter DFY_M = DateTimeFormatter.ofPattern("yyyy-MM");
     public static final DateTimeFormatter SDF_YMDHMS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
 
+    public static boolean isBefore(String date, int count) {
+        LocalDateTime time = LocalDateTime.parse(date, SDF_YMDHMS);
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime nowPlus30 = time.plusDays(count);
+
+        // 检查目标时间是否在 [time, time+count天] 区间内
+        return !now.isBefore(time) && !now.isAfter(nowPlus30);
+    }
+
     /**
-     * Timestamp增加分钟
+     * Timestamp增减天
      */
-    public static Timestamp addMinute(Timestamp time, int month) {
+    public static Timestamp addDay(Timestamp time, int count) {
         // 创建 Calendar 对象并设置为当前日期和时间的值
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(time.getTime());
         // 将MINUTE字段添加到当前日期和时间
-        calendar.add(Calendar.MINUTE, month);
+        calendar.add(Calendar.DATE, count);
+        return new Timestamp(calendar.getTime().getTime());
+    }
+
+    /**
+     * Timestamp增减分钟
+     */
+    public static Timestamp addMinute(Timestamp time, int count) {
+        // 创建 Calendar 对象并设置为当前日期和时间的值
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(time.getTime());
+        // 将MINUTE字段添加到当前日期和时间
+        calendar.add(Calendar.MINUTE, count);
         return new Timestamp(calendar.getTime().getTime());
     }
 
@@ -128,6 +149,7 @@
 
     /**
      * 获取当前时间yyyyMMdd
+     *
      * @return 、yyyyMMdd
      */
     public static String getNowTimeTypeYYYYMMDD() {
@@ -136,12 +158,13 @@
 
     /**
      * 获取当前时间yyyyMM
+     *
      * @return 、yyyyMM
      */
     public static String getNowTimeTypeYYYYMM() {
         return DFY_M.format(LocalDateTime.now());
     }
-    
+
     /**
      * 日期格式化 yyyy-MM-dd
      *
diff --git a/oying-common/src/main/java/com/oying/utils/RedisUtils.java b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
index 361c573..6140508 100644
--- a/oying-common/src/main/java/com/oying/utils/RedisUtils.java
+++ b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
@@ -24,8 +24,6 @@
 @SuppressWarnings({"unchecked", "all"})
 public class RedisUtils {
     private static final Logger log = LoggerFactory.getLogger(RedisUtils.class);
-    @Value("${jwt.generate-order-sn}")
-    private String generateOrderSn;
     @Value("${wx.enabled}")
     private Boolean wxEnabled;
     private static final String T = "T-";
@@ -44,10 +42,10 @@
      * @param i
      * @return
      */
-    public String generateOrderSn(Integer i) {
+    public String generateSn(String generate, Integer i) {
         StringBuilder sb = new StringBuilder();
         String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
-        String key = generateOrderSn + i + date;
+        String key = generate + i + date;
         Long increment = increment(key);
         sb.append(date);
         sb.append(String.format("%04d", i));
diff --git a/oying-common/src/main/java/com/oying/utils/enums/DataScopeEnum.java b/oying-common/src/main/java/com/oying/utils/enums/DataScopeEnum.java
index af88297..61de0cf 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/DataScopeEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/DataScopeEnum.java
@@ -7,6 +7,7 @@
  * <p>
  * 数据权限枚举
  * </p>
+ *
  * @author Z
  * @date 2020-05-07
  */
@@ -21,7 +22,22 @@
     THIS_LEVEL("本级", "自己机构的数据权限"),
 
     /* 自定义的数据权限 */
-    CUSTOMIZE("自定义", "自定义的数据权限");
+    CUSTOMIZE("自定义", "自定义的数据权限"),
+
+    /* 消费者的数据权限 */
+    BUYER("消费者", "消费者的数据权限"),
+
+    /* 商户的数据权限 */
+    MERCHANT("商户", "商户的数据权限"),
+
+    /* 骑手的数据权限 */
+    RIDER("骑手", "骑手的数据权限"),
+
+    /* 供应商的数据权限 */
+    SUPPLIER("供应商", "供应商的数据权限"),
+
+    /* 代理商的数据权限 */
+    AGENT("代理商", "代理商的数据权限");
 
     private final String value;
     private final String description;
diff --git a/oying-common/src/main/java/com/oying/utils/enums/GenerateEnum.java b/oying-common/src/main/java/com/oying/utils/enums/GenerateEnum.java
index 6f7bf84..cefd00b 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/GenerateEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/GenerateEnum.java
@@ -13,15 +13,15 @@
 public enum GenerateEnum {
 
     ORDER(10, "订单编号"),
-    RETURN_ORDER(20, "退单编号"),
+    ORDER_RETURN(20, "退单编号"),
 
-    BUSINESS_NO(30,"未使用"),
-    FREE_DEPOSIT(40,"未使用"),
-    PENETRATE_ID(50,"未使用"),
-    RETURN_FREE_DEPOSIT(60,"未使用"),
-    CONTRACT_NUM(70,"未使用"),
-    EIGHT(80,"未使用"),
-    NINE(90,"未使用"),
+    BUSINESS_NO(30, "未使用"),
+    FREE_DEPOSIT(40, "未使用"),
+    PENETRATE_ID(50, "未使用"),
+    RETURN_FREE_DEPOSIT(60, "未使用"),
+    CONTRACT_NUM(70, "未使用"),
+    EIGHT(80, "未使用"),
+    NINE(90, "未使用"),
     UNKNOWN(0, "未知枚举");
 
     private final Integer key;
diff --git a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
index b5e7f14..5ab2e0b 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
@@ -7,20 +7,26 @@
 @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, "用户取消订单"),
-    UNKNOWN(99, "未知枚举");
+    ZERO(0, "ORDER", "订单已提交"),
+    ONE(1, "ORDER", "支付成功"),
+    TWO(2, "ORDER", "商家已接单"),
+    THREE(3, "ORDER", "商家已备货"),
+    FOUR(4, "ORDER", "骑手已接单"),
+    FIVE(5, "ORDER", "骑手已到店"),
+    SIX(6, "ORDER", "骑手已取货"),
+    SEVEN(7, "ORDER", "订单已送达"),
+    EIGHT(8, "ORDER", "订单已完成"),
+    NINE(9, "ORDER", "订单已取消"),
+    TEN(10, "REFUND", "退款申请"),
+    ELEVEN(11, "REFUND", "拒绝申请"),
+    TWELVE(12, "REFUND", "退款申诉"),
+    THIRTEEN(13, "REFUND", "同意申请"),
+    FOURTEEN(14, "REFUND", "退款成功"),
+    FIFTEEN(15, "REFUND", "取消退款"),
+    UNKNOWN(99, "UNKNOWN", "未知枚举");
 
     private final Integer key;
-
+    private final String code;
     private final String value;
 
     public static OrderStatusEnum find(Integer val) {
diff --git a/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java b/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
index 335a7cd..54a2bf2 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
@@ -13,9 +13,10 @@
 public enum ReturnAuditEnum {
 
     ZERO(0, "申请"),
-    ONE(1, "通过"),
-    TWO(2, "拒绝"),
-    THREE(3, "未知");
+    ONE(1, "拒绝"),
+    TWO(2, "通过"),
+    THREE(3, "取消"),
+    FOUR(4, "未知");
 
     private final Integer key;
 
diff --git a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
index ddd360b..c0c879f 100644
--- a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
@@ -1,12 +1,11 @@
 package com.oying.modules.hwc.service.impl;
 
-import com.oying.exception.BadRequestException;
 import com.oying.modules.hwc.service.CallbackService;
 import com.oying.modules.hwc.utils.SignUtil;
 import com.oying.modules.hwc.utils.XmlUtils;
 import com.oying.modules.security.config.SwiftPassProperties;
-import com.oying.modules.sh.domain.OrderReturn;
 import com.oying.modules.sh.domain.vo.OrderResponse;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
 import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.service.OrderService;
 import com.oying.utils.enums.OrderStatusEnum;
@@ -14,11 +13,14 @@
 import com.oying.utils.enums.PayTypeEnum;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dom4j.DocumentException;
+import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -76,16 +78,21 @@
                 }
             }
             response.getWriter().write(respString);
+        } catch (DataIntegrityViolationException e) {
+            log.error("汇旺财退款回调数据异常失败:{} {}", map.toString(), e.getMessage());
+        } catch (DocumentException e) {
+            log.error("汇旺财退款回调XML转码失败:{} {}", map.toString(), e.getMessage());
+        } catch (IOException e) {
+            log.error("汇旺财退款回调写入流失败:{} {}", map.toString(), e.getMessage());
         } catch (Exception e) {
-            log.error("汇旺财支付回调失败:{}", map.toString());
-            throw new BadRequestException("操作失败,原因:" + e.getMessage());
+            log.error("汇旺财退款回调失败:{} {}", map.toString(), e.getMessage());
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void returnNotify(HttpServletRequest request, HttpServletResponse response) {
-        Map<String, String> map =  new HashMap<>();
+        Map<String, String> map = new HashMap<>();
         try {
             String resString = XmlUtils.parseRequest(request);
             String respString = "error";
@@ -94,8 +101,8 @@
                 String sign_type = map.get("sign_type");
                 String reSign = map.get("sign");
                 if (map.containsKey("sign")) {
-                    OrderReturn order = returnService.getByReturnNum(map.get("out_refund_no"));
-                    PayTypeEnum status = PayTypeEnum.find(order.getPayType());
+                    OrderReturnResponse order = returnService.getByReturnNum(map.get("out_refund_no"));
+                    PayTypeEnum status = PayTypeEnum.find(order.getOrderReturn().getPayType());
                     if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) {
                         log.error("汇旺财退款验证签名错误!:{}", map.toString());
                     } else {
@@ -112,9 +119,14 @@
                 }
             }
             response.getWriter().write(respString);
+        } catch (DataIntegrityViolationException e) {
+            log.error("汇旺财退款回调数据异常失败:{} {}", map.toString(), e.getMessage());
+        } catch (DocumentException e) {
+            log.error("汇旺财退款回调XML转码失败:{} {}", map.toString(), e.getMessage());
+        } catch (IOException e) {
+            log.error("汇旺财退款回调写入流失败:{} {}", map.toString(), e.getMessage());
         } catch (Exception e) {
-            log.error("汇旺财退款回调失败:{}", map.toString());
-            System.out.println("操作失败,原因:" + e.getMessage());
+            log.error("汇旺财退款回调失败:{} {}", map.toString(), e.getMessage());
         }
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/hwc/utils/SignUtil.java b/oying-system/src/main/java/com/oying/modules/hwc/utils/SignUtil.java
index 1bb9545..6d9450a 100644
--- a/oying-system/src/main/java/com/oying/modules/hwc/utils/SignUtil.java
+++ b/oying-system/src/main/java/com/oying/modules/hwc/utils/SignUtil.java
@@ -40,7 +40,8 @@
     /**
      * 对返回参数的验证签名
      */
-    public static boolean verifySign(String sign, String signType, Map<String, String> resultMap, SwiftPassProperties properties, PayTypeEnum status) throws Exception {
+    public static boolean verifySign(String sign, String signType, Map<String, String> resultMap,
+                                     SwiftPassProperties properties, PayTypeEnum status)  {
         if ("RSA_1_256".equals(signType)) {
             Map<String, String> params = SignUtils.paraFilter(resultMap);
             StringBuilder builder = new StringBuilder((params.size() + 1) * 10);
@@ -62,7 +63,7 @@
     /**
      * RSA_1_256 验证签名
      */
-    public static boolean verifySign(String preStr, String sign, String signType, String platPublicKey) throws Exception {
+    public static boolean verifySign(String preStr, String sign, String signType, String platPublicKey) {
         // 调用这个函数前需要先判断是MD5还是RSA
         // 商户的验签函数要同时支持MD5和RSA
         RSAUtil.SignatureSuite suite;
@@ -71,7 +72,7 @@
         } else if ("RSA_1_256".equals(signType)) {
             suite = RSAUtil.SignatureSuite.SHA256;
         } else {
-            throw new Exception("不支持的签名方式");
+            throw new BadRequestException("不支持的签名方式");
         }
         return RSAUtil.verifySign(suite, preStr.getBytes(StandardCharsets.UTF_8), Base64.decodeBase64(sign.getBytes(StandardCharsets.UTF_8)),
                 platPublicKey);
@@ -80,14 +81,14 @@
     /**
      * RSA_1_256生成不同的sign
      */
-    public static String sign(String preStr, String signType, String mchPrivateKey) throws Exception {
+    public static String sign(String preStr, String signType, String mchPrivateKey) {
         RSAUtil.SignatureSuite suite;
         if ("RSA_1_1".equals(signType)) {
             suite = RSAUtil.SignatureSuite.SHA1;
         } else if ("RSA_1_256".equals(signType)) {
             suite = RSAUtil.SignatureSuite.SHA256;
         } else {
-            throw new Exception("不支持的签名方式");
+            throw new BadRequestException("不支持的签名方式");
         }
         byte[] signBuf = RSAUtil.sign(suite, preStr.getBytes(StandardCharsets.UTF_8),
                 mchPrivateKey);
diff --git a/oying-system/src/main/java/com/oying/modules/hwc/utils/XmlUtils.java b/oying-system/src/main/java/com/oying/modules/hwc/utils/XmlUtils.java
index 783c326..613e01e 100644
--- a/oying-system/src/main/java/com/oying/modules/hwc/utils/XmlUtils.java
+++ b/oying-system/src/main/java/com/oying/modules/hwc/utils/XmlUtils.java
@@ -2,6 +2,7 @@
 
 import com.oying.exception.BadRequestException;
 import org.dom4j.Document;
+import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
 import org.xml.sax.InputSource;
@@ -101,7 +102,7 @@
     /**
      * 转XML map
      */
-    public static Map<String, String> toMap(byte[] xmlBytes, String charset) throws Exception {
+    public static Map<String, String> toMap(byte[] xmlBytes, String charset) throws DocumentException {
         SAXReader reader = new SAXReader(false);
         InputSource source = new InputSource(new ByteArrayInputStream(xmlBytes));
         source.setEncoding(charset);
diff --git a/oying-system/src/main/java/com/oying/modules/message/common/BizTypeEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/BizTypeEnum.java
new file mode 100644
index 0000000..d2f32e4
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/BizTypeEnum.java
@@ -0,0 +1,58 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum BizTypeEnum {
+    //业务类型 ORDER EVALUATION
+    ORDER("ORDER", "订单业务"),
+    EVALUATION("EVALUATION", "评价业务");
+
+    private final String key;
+    private final String value;
+
+    /**
+     * 根据key获取枚举实例
+     * @param key key值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static BizTypeEnum getByKey(String key) {
+        if (key == null) {
+            return null;
+        }
+        for (BizTypeEnum typeEnum : BizTypeEnum.values()) {
+            if (typeEnum.key.equals(key)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据value获取枚举实例
+     * @param value value值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static BizTypeEnum getByValue(String value) {
+        if (value == null) {
+            return null;
+        }
+        for (BizTypeEnum typeEnum : BizTypeEnum.values()) {
+            if (typeEnum.value.equals(value)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "BizTypeEnum{" +
+                "key='" + key + '\'' +
+                ", value='" + value + '\'' +
+                ", name='" + this.name() + '\'' +
+                '}';
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/common/MesReadEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/MesReadEnum.java
new file mode 100644
index 0000000..0695c88
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MesReadEnum.java
@@ -0,0 +1,58 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MesReadEnum {
+    // 0=未读 1=已读
+    UNREAD(0, "未读"),
+    READ(1, "已读");
+
+    private final Integer key;
+    private final String value;
+
+    /**
+     * 根据key获取枚举实例
+     * @param key key值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static MesReadEnum getByKey(Integer key) {
+        if (key == null) {
+            return null;
+        }
+        for (MesReadEnum readEnum : MesReadEnum.values()) {
+            if (readEnum.key.equals(key)) {
+                return readEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据value获取枚举实例
+     * @param value value值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static MesReadEnum getByValue(String value) {
+        if (value == null) {
+            return null;
+        }
+        for (MesReadEnum readEnum : MesReadEnum.values()) {
+            if (readEnum.value.equals(value)) {
+                return readEnum;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "MesReadEnum{" +
+                "key=" + key +
+                ", value='" + value + '\'' +
+                ", name='" + this.name() + '\'' +
+                '}';
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
new file mode 100644
index 0000000..04328c5
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
@@ -0,0 +1,65 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MesTypeEnum {
+    //1=系统 2=订单 3=评价/留言 4=骑手 5=商户 6=买家
+    //2=订单 订单包含 4 5 6
+    SYSTEM(1, "系统"),
+    ORDER(2, "订单"),
+    COMMENT(3, "评价/留言"),
+    RIDER(4, "骑手"),     // 补充骑手类型
+    MERCHANT(5, "商户"),  // 补充商户类型
+    BUYER(6, "买家");     // 补充买家类型
+
+    private final Integer key;
+    private final String value;
+
+    /**
+     * 根据key获取枚举实例
+     *
+     * @param key key值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static MesTypeEnum getByKey(Integer key) {
+        if (key == null) {
+            return null;
+        }
+        for (MesTypeEnum typeEnum : MesTypeEnum.values()) {
+            if (typeEnum.key.equals(key)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据value获取枚举实例
+     *
+     * @param value value值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static MesTypeEnum getByValue(String value) {
+        if (value == null) {
+            return null;
+        }
+        for (MesTypeEnum typeEnum : MesTypeEnum.values()) {
+            if (typeEnum.value.equals(value)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "MesTypeEnum{" +
+                "key=" + key +
+                ", value='" + value + '\'' +
+                ", name='" + this.name() + '\'' +
+                '}';
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
new file mode 100644
index 0000000..b570094
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
@@ -0,0 +1,197 @@
+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 MsgStatusEnum {
+    //订单消息  通知状态   用于插入
+    //订单状态需要满足:
+    /// 商户: 订单类消息,包括买家下单提醒、订单送达通知等
+    /// 骑手:类消息,包括有待接单、订单已取消、距离最晚送达时间不足1小时、距离最晚送达时间不足30分钟等
+    /// 骑手:系统后台针对订单,只提供不足1小时和不足30分钟两个提醒。时间分别在59分和29分
+    /// 买家  订单类消息,包括订单状态变化通知、订单送达通知等
+    /// 保留骑手已接单、骑手已取货
+    /// 变量前缀商户 骑手 买家
+
+
+    /**
+     * 商户:新接单
+     * 商户确认接单通知
+     */
+    MERCHANT_ACCEPTED(2, "新接单"),
+
+    /**
+     * 商户:商家已备货
+     * 商户完成备货通知
+     */
+    MERCHANT_PREPARED(4, "商家已备货"),
+
+
+    /* ========== 骑手相关状态 ========== */
+    //加一个骑手取消接单
+    RIDER_CANCEL_ACCEPT(14, "骑手取消接单"),
+    /**
+     * 骑手:有待接单
+     * 骑手端有待接订单通知
+     */
+    RIDER_PENDING_ACCEPTANCE(3, "骑手已接单"),
+
+    /**
+     * 骑手:骑手已取货
+     * 骑手取货完成通知
+     */
+    RIDER_PICKED_UP(6, "骑手已取货"),
+
+    /**
+     * 骑手:骑手已到店
+     * 骑手到达商户店铺通知
+     */
+    RIDER_ARRIVED(5, "骑手已到店"),
+
+    /**
+     * 骑手:订单已取消
+     * 订单取消通知骑手
+     */
+    RIDER_ORDER_CANCELLED(9, "订单已取消"),
+
+    /**
+     * 骑手:配送超时提醒
+     * 距离最晚送达时间不足提醒,包括不足1小时和不足30分钟两种情况
+     * 系统后台提供的定时提醒状态,在订单创建后59分钟和29分钟时触发
+     */
+    RIDER_DELIVERY_WARNING(10, "配送超时提醒"),
+
+
+    /* ========== 买家相关状态 ========== */
+
+    /**
+     * 买家:订单已完成
+     * 订单完成通知买家
+     */
+    BUYER_ORDER_COMPLETED(8, "订单已完成"),
+
+    /**
+     * 买家:订单送达通知
+     * 订单送达通知买家
+     */
+    BUYER_ORDER_DELIVERED(13, "订单送达");
+
+//    /* ========== 商户相关状态 ========== */
+//    /**
+//     * 商户:买家下单提醒
+//     * 商户收到新订单通知
+//     */
+//    MERCHANT_ORDER_SUBMITTED(0, "订单已提交"),
+//
+////    /**
+////     * 商户:支付成功通知
+////     * 订单支付成功通知商户
+////     */
+////    MERCHANT_PAYMENT_SUCCESS(1, "支付成功"),
+//
+//    /**
+//     * 商户:商家已接单
+//     * 商户确认接单通知
+//     */
+//    MERCHANT_ACCEPTED(2, "商家已接单"),
+//
+//    /**
+//     * 商户:商家已备货
+//     * 商户完成备货通知
+//     */
+//    MERCHANT_PREPARED(4, "商家已备货"),
+//
+//
+//    /* ========== 骑手相关状态 ========== */
+//    //加一个骑手取消接单
+//    RIDER_CANCEL_ACCEPT(14, "骑手取消接单"),
+//    /**
+//     * 骑手:有待接单
+//     * 骑手端有待接订单通知
+//     */
+//    RIDER_PENDING_ACCEPTANCE(3, "骑手已接单"),
+//
+//    /**
+//     * 骑手:骑手已取货
+//     * 骑手取货完成通知
+//     */
+//    RIDER_PICKED_UP(6, "骑手已取货"),
+//
+//    /**
+//     * 骑手:骑手已到店
+//     * 骑手到达商户店铺通知
+//     */
+//    RIDER_ARRIVED(5, "骑手已到店"),
+//
+//    /**
+//     * 骑手:订单已取消
+//     * 订单取消通知骑手
+//     */
+//    RIDER_ORDER_CANCELLED(9, "订单已取消"),
+//
+//    /**
+//     * 骑手:配送超时提醒
+//     * 距离最晚送达时间不足提醒,包括不足1小时和不足30分钟两种情况
+//     * 系统后台提供的定时提醒状态,在订单创建后59分钟和29分钟时触发
+//     */
+//    RIDER_DELIVERY_WARNING(10, "配送超时提醒"),
+//
+//
+//    /* ========== 买家相关状态 ========== */
+//    /**
+//     * 买家:订单状态变化通知
+//     * 订单状态更新通知买家
+//     */
+//    BUYER_ORDER_STATUS_CHANGED(7, "商品已送达"),
+//
+//    /**
+//     * 买家:订单已完成
+//     * 订单完成通知买家
+//     */
+//    BUYER_ORDER_COMPLETED(8, "订单已完成"),
+//
+//    /**
+//     * 买家:订单送达通知
+//     * 订单送达通知买家
+//     */
+//    BUYER_ORDER_DELIVERED(13, "订单送达");
+
+    /**
+     * 反向映射,提升查找速度
+     */
+    private static final Map<Integer, MsgStatusEnum> MAP =
+            Arrays.stream(values())
+                    .collect(Collectors.toMap(MsgStatusEnum::getKey, Function.identity()));
+    private final Integer key;
+    private final String value;
+
+    /* ========== 工具方法 ========== */
+
+    /**
+     * 根据 key 获取枚举
+     */
+    public static MsgStatusEnum of(Integer key) {
+        return key == null ? null : MAP.get(key);
+    }
+
+    /**
+     * 根据 key 获取描述
+     */
+    public static String descOf(Integer key) {
+        MsgStatusEnum e = of(key);
+        return e == null ? "" : e.getValue();
+    }
+}
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
deleted file mode 100644
index ea390f5..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
+++ /dev/null
@@ -1,52 +0,0 @@
-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/common/PlatFormEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/PlatFormEnum.java
new file mode 100644
index 0000000..384d0be
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/PlatFormEnum.java
@@ -0,0 +1,59 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum PlatFormEnum {
+    //1=买家 2=商户 3=骑手"
+    BUYER(1, "买家"),
+    MERCHANT(2, "商户"),
+    RIDE(3, "骑手");
+
+    private final Integer key;
+    private final String value;
+
+    /**
+     * 根据key获取枚举实例
+     * @param key key值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static PlatFormEnum getByKey(Integer key) {
+        if (key == null) {
+            return null;
+        }
+        for (PlatFormEnum platFormEnum : PlatFormEnum.values()) {
+            if (platFormEnum.key.equals(key)) {
+                return platFormEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据value获取枚举实例
+     * @param value value值
+     * @return 对应的枚举实例,未找到返回null
+     */
+    public static PlatFormEnum getByValue(String value) {
+        if (value == null) {
+            return null;
+        }
+        for (PlatFormEnum platFormEnum : PlatFormEnum.values()) {
+            if (platFormEnum.value.equals(value)) {
+                return platFormEnum;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "PlatFormEnum{" +
+                "key=" + key +
+                ", value='" + value + '\'' +
+                ", name='" + this.name() + '\'' +
+                '}';
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesAdvertisement.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesAdvertisement.java
new file mode 100644
index 0000000..b8648ba
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesAdvertisement.java
@@ -0,0 +1,109 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_advertisement")
+public class MesAdvertisement extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "广告ID")
+    private Long id;
+
+    @NotBlank
+    @ApiModelProperty(value = "广告标题")
+    private String title;
+
+    @ApiModelProperty(value = "副标题/简介")
+    private String subTitle;
+
+    @ApiModelProperty(value = "广告正文(支持富文本)")
+    private String content;
+
+    @ApiModelProperty(value = "封面图URL")
+    private String coverImg;
+
+    @ApiModelProperty(value = "Banner图URL(冗余)")
+    private String bannerImg;
+
+    @NotNull
+    @ApiModelProperty(value = "投放渠道 1小程序 2APP 3全平台")
+    private Integer platform;
+
+    @NotNull
+    @ApiModelProperty(value = "跳转类型 1内部 2外部")
+    private Integer jumpType;
+
+    @ApiModelProperty(value = "跳转地址(内部路径或外部链接)")
+    private String jumpUrl;
+
+    @ApiModelProperty(value = "跳转携带参数(JSON)")
+    private String jumpParams;
+
+    @NotNull
+    @ApiModelProperty(value = "排序值 越大越前")
+    private Integer sortOrder;
+
+    @NotNull
+    @ApiModelProperty(value = "是否置顶 0否 1是")
+    private Integer isTop;
+
+    @NotNull
+    @ApiModelProperty(value = "状态 1启用 2禁用")
+    private Integer status;
+
+    @NotNull
+    @ApiModelProperty(value = "公告开始时间")
+    private Timestamp effectiveTime;
+
+    @NotNull
+    @ApiModelProperty(value = "公告结束时间")
+    private Timestamp expireTime;
+
+    @NotNull
+    @ApiModelProperty(value = "点击次数(冗余)")
+    private Long clickCount;
+
+    @NotNull
+    @ApiModelProperty(value = "展示次数(冗余)")
+    private Long showCount;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @NotBlank
+    @ApiModelProperty(value = "createBy")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "createTime")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "updateBy")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "updateTime")
+    private Timestamp updateTime;
+
+    public void copy(MesAdvertisement source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesCustomerCommentMsg.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesCustomerCommentMsg.java
new file mode 100644
index 0000000..551f3c2
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesCustomerCommentMsg.java
@@ -0,0 +1,95 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_customer_comment_msg")
+public class MesCustomerCommentMsg extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "对应 mes_msg_record.id")
+    private Long msgRecordId;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺ID")
+    private Long shopId;
+
+    @NotNull
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余")
+    private String orderNo;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @ApiModelProperty(value = "买家昵称 冗余")
+    private String buyerName;
+
+    @NotNull
+    @ApiModelProperty(value = "评价ID 冗余")
+    private Long evaluationId;
+
+    @NotNull
+    @ApiModelProperty(value = "商户是否已回复 0=未回复 1=已回复")
+    private Integer replied;
+
+    @NotBlank
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    @NotNull
+    @ApiModelProperty(value = "顾客留言时间(即评价产生时间)")
+    private Timestamp commentTime;
+
+    @ApiModelProperty(value = "顾客留言内容(评价原文)")
+    private String commentContent;
+
+    @ApiModelProperty(value = "商家回复内容")
+    private String replyContent;
+
+    @ApiModelProperty(value = "外部跳转链接(完整 http/https)")
+    private String extJumpUrl;
+
+    @ApiModelProperty(value = "内部小程序/APP 路由路径")
+    private String intJumpPath;
+
+    public void copy(MesCustomerCommentMsg source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
new file mode 100644
index 0000000..1832d58
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
@@ -0,0 +1,110 @@
+package com.oying.modules.message.domain;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.oying.base.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * @author 李萌
+ * @description /
+ * @date 2025-07-25
+ **/
+@Data
+@TableName("mes_msg_record")
+public class MesMsgRecord extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "模板ID 可无")
+    private Integer templateId;
+
+    @NotBlank
+    @ApiModelProperty(value = "接收人ID")
+    private String receiverId;
+
+    @NotNull
+    @ApiModelProperty(value = "1=买家 2=商户 3=骑手")
+    private Integer platform;
+
+    @NotNull
+    @ApiModelProperty(value = "同模板type")
+    private Integer msgType;
+//    @NotNull
+//    @ApiModelProperty(value = "同模板type")
+//    private MesTypeEnum msgType;
+
+
+    @NotBlank
+    @ApiModelProperty(value = "最终标题")
+    private String title;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终内容")
+    private String content;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终内容key")
+    private String contentKey;
+
+    @ApiModelProperty(value = "业务ID 例如订单ID")
+    private Long bizId;
+
+    @ApiModelProperty(value = "业务类型 ORDER/EVALUATION 等")
+    private String bizType;
+
+    @NotNull
+    @ApiModelProperty(value = "已读 0=未读 1=已读")
+    private Integer isRead;
+
+    @ApiModelProperty(value = "阅读时间")
+    private Timestamp readTime;
+
+    @ApiModelProperty(value = "扩展字段 存跳转链接等")
+    private String extra;
+
+    // 新增字段
+    @NotNull
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户名字")
+    private String buyerName;
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余字段")
+    private String orderNo;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺ID 冗余字段")
+    private Long shopId;
+
+    @NotBlank
+    @ApiModelProperty(value = "店铺名称 冗余字段")
+    private String shopName;
+
+    @ApiModelProperty(value = "骑手ID")
+    private String riderId;
+
+    @ApiModelProperty(value = "骑手姓名 冗余字段")
+    private String riderName;
+
+    public void copy(MesMsgRecord source) {
+        BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgTemplate.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgTemplate.java
new file mode 100644
index 0000000..80ef607
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgTemplate.java
@@ -0,0 +1,72 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_msg_template")
+public class MesMsgTemplate extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @NotBlank
+    @ApiModelProperty(value = "模板编码")
+    private String code;
+
+    @NotBlank
+    @ApiModelProperty(value = "模板名称")
+    private String name;
+
+    @NotBlank
+    @ApiModelProperty(value = "标题模板 支持占位符")
+    private String titleTpl;
+
+    @NotBlank
+    @ApiModelProperty(value = "内容模板 支持占位符")
+    private String contentTpl;
+
+    @NotNull
+    @ApiModelProperty(value = "1=系统 2=订单 3=评价/留言")
+    private Integer type;
+
+    @NotNull
+    @ApiModelProperty(value = "1=买家 2=商户 3=骑手")
+    private Integer platform;
+
+    @NotBlank
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    public void copy(MesMsgTemplate source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderEvaluation.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderEvaluation.java
new file mode 100644
index 0000000..c14dbb5
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderEvaluation.java
@@ -0,0 +1,102 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_order_evaluation")
+public class MesOrderEvaluation extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余字段")
+    private String orderNo;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺ID 冗余字段")
+    private Long shopId;
+
+    @NotBlank
+    @ApiModelProperty(value = "店铺名称 冗余字段")
+    private String shopName;
+
+    @ApiModelProperty(value = "骑手ID")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手姓名 冗余字段")
+    private String riderName;
+
+    @NotNull
+    @ApiModelProperty(value = "商品评分 0-5,支持半星")
+    private BigDecimal goodsScore;
+
+    @ApiModelProperty(value = "商品评价内容")
+    private String goodsContent;
+
+    @ApiModelProperty(value = "商品评价图片 最多5张 存JSON数组")
+    private String goodsImgs;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺服务评分")
+    private BigDecimal shopScore;
+
+    @ApiModelProperty(value = "店铺服务评价内容")
+    private String shopContent;
+
+    @ApiModelProperty(value = "骑手服务评分")
+    private BigDecimal riderScore;
+
+    @ApiModelProperty(value = "骑手服务评价内容")
+    private String riderContent;
+
+    @NotNull
+    @ApiModelProperty(value = "买家删除评价 0=正常 1=已删除")
+    private Integer isDeleted;
+
+    @NotBlank
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    public void copy(MesOrderEvaluation source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderItemEvaluation.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderItemEvaluation.java
new file mode 100644
index 0000000..319c1d9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesOrderItemEvaluation.java
@@ -0,0 +1,78 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_order_item_evaluation")
+public class MesOrderItemEvaluation  extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "对应 mes_order_evaluation.id")
+    private Long orderEvalId;
+
+    @NotNull
+    @ApiModelProperty(value = "订单明细ID")
+    private Long orderItemId;
+
+    @NotNull
+    @ApiModelProperty(value = "商品ID")
+    private Long goodsId;
+
+    @NotBlank
+    @ApiModelProperty(value = "商品名称 冗余")
+    private String goodsName;
+
+    @ApiModelProperty(value = "商品主图 冗余")
+    private String goodsPic;
+
+    @NotNull
+    @ApiModelProperty(value = "商品单项评分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "评价内容")
+    private String content;
+
+    @ApiModelProperty(value = "评价图片JSON 最多5张")
+    private String imgs;
+
+    @NotBlank
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    public void copy(MesOrderItemEvaluation source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesRiderEvaluation.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesRiderEvaluation.java
new file mode 100644
index 0000000..69a64bf
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesRiderEvaluation.java
@@ -0,0 +1,80 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_rider_evaluation")
+public class MesRiderEvaluation extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余")
+    private String orderNo;
+
+    @NotNull
+    @ApiModelProperty(value = "骑手ID")
+    private Long riderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "骑手姓名 冗余")
+    private String riderName;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @NotNull
+    @ApiModelProperty(value = "骑手服务评分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "评价内容")
+    private String content;
+
+    @NotBlank
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    @ApiModelProperty(value = "评价图片JSON 最多5张")
+    private String imgs;
+
+
+    public void copy(MesRiderEvaluation source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesShopReply.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesShopReply.java
new file mode 100644
index 0000000..6f6dddc
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesShopReply.java
@@ -0,0 +1,60 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+@TableName("mes_shop_reply")
+public class MesShopReply extends BaseEntity implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "mes_order_evaluation.id")
+    private Long evaluationId;
+
+    @NotNull
+    @ApiModelProperty(value = "1=商品评价回复 2=店铺服务评价回复")
+    private Integer replyType;
+
+    @NotBlank
+    @ApiModelProperty(value = "回复内容")
+    private String content;
+
+    @NotBlank
+    @ApiModelProperty(value = "商户ID")
+    private String createBy;
+
+    @NotNull
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    public void copy(MesShopReply source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderBuyer.java b/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderBuyer.java
deleted file mode 100644
index fca85bf..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderBuyer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.oying.modules.message.domain;
-
-import com.oying.base.BaseEntity;
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
-* @description /
-* @author 李萌
-* @date 2025-05-20
-**/
-@Data
-@TableName("message_order_buyer")
-public class MessageOrderBuyer extends BaseEntity implements Serializable {
-
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "主键,自增 用户id")
-    private Integer id;
-
-    @NotNull
-    @ApiModelProperty(value = "订单ID")
-    private Integer orderId;
-
-    @NotBlank
-    @ApiModelProperty(value = "消息类型(订单状态变化、订单送达)")
-    private String messageType;
-
-    @NotBlank
-    @ApiModelProperty(value = "消息内容")
-    private String messageContent;
-
-    @NotBlank
-    @ApiModelProperty(value = "跳转链接")
-    private String link;
-
-//    @ApiModelProperty(value = "创建时间")
-//    private Timestamp createTime;
-
-    public void copy(MessageOrderBuyer source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderLeave.java b/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderLeave.java
deleted file mode 100644
index 8556bd6..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderLeave.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.oying.modules.message.domain;
-
-import com.oying.base.BaseEntity;
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
-* @description /
-* @author 李萌
-* @date 2025-05-20
-**/
-@Data
-@TableName("message_order_leave")
-public class MessageOrderLeave extends BaseEntity implements Serializable {
-
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "主键,自增")
-    private Integer id;
-
-    @NotNull
-    @ApiModelProperty(value = "订单ID")
-    private Integer orderId;
-
-    @NotBlank
-    @ApiModelProperty(value = "顾客评价内容")
-    private String customerReview="顾客尚未评价";
-
-    @NotBlank
-    @ApiModelProperty(value = "商家回复内容")
-    private String sellerReply="商家尚未回复";
-
-    @NotBlank
-    @ApiModelProperty(value = "跳转链接")
-    private String link="https://example.com/default-link";
-
-//    @ApiModelProperty(value = "创建时间")
-//    private Timestamp createTime;
-
-    public void copy(MessageOrderLeave source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderSeller.java b/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderSeller.java
deleted file mode 100644
index d39132a..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderSeller.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.oying.modules.message.domain;
-
-import com.oying.base.BaseEntity;
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
-* @description /
-* @author 李萌
-* @date 2025-05-20
-**/
-@Data
-@TableName("message_order_seller")
-public class MessageOrderSeller extends BaseEntity implements Serializable {
-
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
-    private Integer id;
-
-    // 订单id String
-    @ApiModelProperty(value = "orderId")
-    private String orderId;
-
-
-    @ApiModelProperty(value = "storeId")
-    private Integer storeId;
-
-
-    @ApiModelProperty(value = "messageType")
-    private String messageType;
-
-
-    @ApiModelProperty(value = "messageContent")
-    private String messageContent;
-
-
-    @ApiModelProperty(value = "link")
-    private String link;
-
-  //0未读 1已读
-    @ApiModelProperty(value = "flag")
-    private Integer flag=0;
-
-//    @ApiModelProperty(value = "createTime")
-//    private Timestamp createTime;
-
-    public void copy(MessageOrderSeller source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystem.java b/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystem.java
deleted file mode 100644
index 6120049..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystem.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.oying.modules.message.domain;
-
-import com.oying.base.BaseEntity;
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.rmi.CORBA.Tie;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
- * @description /
- * @author 李萌
- * @date 2025-05-20
- **/
-@Data
-@TableName("message_system")
-public class MessageSystem extends BaseEntity implements Serializable {
-
-    //使用数据库的自增策略来生成id
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
-    private Integer id;
-
-    @NotNull
-    @ApiModelProperty(value = "系统维护开始时间")
-    private Timestamp startTime;
-
-    @NotNull
-    @ApiModelProperty(value = "系统维护截至时间")
-    private Timestamp endTime;
-
-    public void copy(MessageSystem source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystemAdvertise.java b/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystemAdvertise.java
deleted file mode 100644
index c01e7e4..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MessageSystemAdvertise.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.oying.modules.message.domain;
-
-import com.oying.base.BaseEntity;
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
-* @description /
-* @author leomon
-* @date 2025-06-05
-**/
-@Data
-@TableName("message_system_advertise")
-public class MessageSystemAdvertise extends BaseEntity implements Serializable {
-
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "主键ID")
-    private Long id;
-
-    @ApiModelProperty(value = "广告标题")
-    private String title;
-
-    @ApiModelProperty(value = "广告内容")
-    private String content;
-
-    @ApiModelProperty(value = "广告图片链接")
-    private String imageUrl;
-
-    @ApiModelProperty(value = "广告跳转链接")
-    private String linkUrl;
-
-    @NotNull
-    @ApiModelProperty(value = "广告状态(0: 禁用;1: 启用)")
-    private Integer status;
-
-//    @ApiModelProperty(value = "创建人")
-//    private String createBy;
-//
-//    @ApiModelProperty(value = "更新人")
-//    private String updateBy;
-//
-//    @NotNull
-//    @ApiModelProperty(value = "创建时间")
-//    private Timestamp createTime;
-//
-//    @NotNull
-//    @ApiModelProperty(value = "更新时间")
-//    private Timestamp updateTime;
-
-    public void copy(MessageSystemAdvertise source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java
similarity index 83%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java
index 0ccbeef..0c6c906 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesAdvertisementQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java
similarity index 82%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java
index 0ccbeef..3bb1cab 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesCustomerCommentMsgQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java
similarity index 83%
rename from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
rename to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java
index 0ccbeef..0846a71 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesMsgRecordQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java
similarity index 83%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java
index 0ccbeef..e4f2a77 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesMsgTemplateQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java
similarity index 83%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java
index 0ccbeef..81b4dd3 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesOrderEvaluationQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java
similarity index 82%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java
index 0ccbeef..877cf66 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesOrderItemEvaluationQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java
similarity index 83%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java
index 0ccbeef..7017726 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesRiderEvaluationQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopMsgRespDTO.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopMsgRespDTO.java
new file mode 100644
index 0000000..506504b
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopMsgRespDTO.java
@@ -0,0 +1,15 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+@Data
+public class MesShopMsgRespDTO {
+    private Long msgId;
+    private String title;
+    private String content;
+    private LocalDateTime createTime;
+    private Long bizId;
+    private String bizType;
+    private Boolean read;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java
similarity index 83%
copy from oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
copy to oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java
index 0ccbeef..15795db 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java
@@ -5,10 +5,10 @@
 
 /**
 * @author 李萌
-* @date 2025-05-20
+* @date 2025-07-25
 **/
 @Data
-public class MessageOrderBuyerQueryCriteria{
+public class MesShopReplyQueryCriteria{
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderLeaveQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderLeaveQueryCriteria.java
deleted file mode 100644
index c0c98b9..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderLeaveQueryCriteria.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.oying.modules.message.domain.dto;
-
-import lombok.Data;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@Data
-public class MessageOrderLeaveQueryCriteria{
-
-    @ApiModelProperty(value = "页码", example = "1")
-    private Integer page = 1;
-
-    @ApiModelProperty(value = "每页数据量", example = "10")
-    private Integer size = 10;
-}
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
deleted file mode 100644
index ac6906e..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.oying.modules.message.domain.dto;
-
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-@Data
-public class MessageOrderSellerDTO {
-    //加一个主键
-
-    private Integer id;
-
-    private Integer orderId;
-
-//    private String messageType;
-
-    private String messageContent;
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerQueryCriteria.java
deleted file mode 100644
index c514533..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerQueryCriteria.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.oying.modules.message.domain.dto;
-
-import lombok.Data;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@Data
-public class MessageOrderSellerQueryCriteria{
-
-    @ApiModelProperty(value = "页码", example = "1")
-    private Integer page = 1;
-
-    @ApiModelProperty(value = "每页数据量", example = "10")
-    private Integer size = 10;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemAdvertiseQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemAdvertiseQueryCriteria.java
deleted file mode 100644
index 6fc9421..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemAdvertiseQueryCriteria.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.oying.modules.message.domain.dto;
-
-import lombok.Data;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
-* @author leomon
-* @date 2025-06-05
-**/
-@Data
-public class MessageSystemAdvertiseQueryCriteria{
-
-    @ApiModelProperty(value = "页码", example = "1")
-    private Integer page = 1;
-
-    @ApiModelProperty(value = "每页数据量", example = "10")
-    private Integer size = 10;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemQueryCriteria.java
deleted file mode 100644
index 0ba80fc..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemQueryCriteria.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.oying.modules.message.domain.dto;
-
-import lombok.Data;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @author 李萌
- * @date 2025-05-20
- **/
-@Data
-public class MessageSystemQueryCriteria{
-
-    @ApiModelProperty(value = "页码", example = "1")
-    private Integer page = 1;
-
-    @ApiModelProperty(value = "每页数据量", example = "10")
-    private Integer size = 10;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesCustomerCommentMsgDTO.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesCustomerCommentMsgDTO.java
new file mode 100644
index 0000000..ad39b89
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesCustomerCommentMsgDTO.java
@@ -0,0 +1,81 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.sql.Timestamp;
+@Data
+@TableName("mes_customer_comment_msg")
+public class MesCustomerCommentMsgDTO {
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+//    @NotNull
+//    @ApiModelProperty(value = "对应 mes_msg_record.id")
+//    private Long msgRecordId;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺ID")
+    private Long shopId;
+//一个订单多个评价,一个评价多个留言,一个留言一个回复
+//    @NotNull
+//    @ApiModelProperty(value = "订单ID")
+//    private Long orderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余")
+    private String orderNo;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @ApiModelProperty(value = "买家昵称 冗余")
+    private String buyerName;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "评价ID 冗余")
+//    private Long evaluationId;
+
+    @NotNull
+    @ApiModelProperty(value = "商户是否已回复 0=未回复 1=已回复")
+    private Integer replied;
+
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+    @NotNull
+    @ApiModelProperty(value = "顾客留言时间(即评价产生时间)")
+    private Timestamp commentTime;
+
+    @ApiModelProperty(value = "顾客留言内容(评价原文)")
+    private String commentContent;
+
+    @ApiModelProperty(value = "商家回复内容")
+    private String replyContent;
+
+//    @ApiModelProperty(value = "外部跳转链接(完整 http/https)")
+//    private String extJumpUrl;
+//
+//    @ApiModelProperty(value = "内部小程序/APP 路由路径")
+//    private String intJumpPath;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryOrderDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryOrderDto.java
new file mode 100644
index 0000000..dbe33ba
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryOrderDto.java
@@ -0,0 +1,101 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+@Data
+@TableName("mes_msg_record") // 指定对应的表名
+public class MesMsgRecordQueryOrderDto {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+//    @ApiModelProperty(value = "模板ID 可无")
+//    private Integer templateId;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "接收人ID")
+//    private String receiverId;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "1=买家 2=商户 3=骑手")
+//    private Integer platform;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "同模板type")
+//    private Integer msgType;
+
+//    @NotBlank
+//    @ApiModelProperty(value = "最终标题")
+//    private String title;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终内容")
+    private String content;
+
+    //    @ApiModelProperty(value = "业务ID 例如订单ID")
+//    private Long bizId;
+//
+//    @ApiModelProperty(value = "业务类型 ORDER/EVALUATION 等")
+//    private String bizType;
+    //
+//    @NotNull
+//    @ApiModelProperty(value = "已读 0=未读 1=已读")
+//    private Integer isRead;
+//
+//    @ApiModelProperty(value = "阅读时间")
+//    private Timestamp readTime;
+//
+//    @ApiModelProperty(value = "扩展字段 存跳转链接等")
+//    private String extra;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+// 新增字段
+//    @NotNull
+//    @ApiModelProperty(value = "订单ID")
+//    private Long orderId;
+
+//    @NotBlank
+//    @ApiModelProperty(value = "买家用户ID")
+//    private String buyerId;
+//
+    @NotBlank
+    @ApiModelProperty(value = "订单编号 冗余字段")
+    private String orderNo;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "店铺ID 冗余字段")
+//    private Long shopId;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "店铺名称 冗余字段")
+//    private String shopName;
+//
+//    @ApiModelProperty(value = "骑手ID")
+//    private Long riderId;
+//
+//    @ApiModelProperty(value = "骑手姓名 冗余字段")
+//    private String riderName;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryPollDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryPollDto.java
new file mode 100644
index 0000000..8b04e54
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQueryPollDto.java
@@ -0,0 +1,76 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.sql.Timestamp;
+
+@Data
+@TableName("mes_msg_record") // 指定对应的表名
+public class MesMsgRecordQueryPollDto{
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+//    @ApiModelProperty(value = "模板ID 可无")
+//    private Integer templateId;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "接收人ID")
+//    private String receiverId;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "1=买家 2=商户 3=骑手")
+//    private Integer platform;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "同模板type")
+//    private Integer msgType;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终标题")
+    private String title;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终内容")
+    private String content;
+
+//    @ApiModelProperty(value = "业务ID 例如订单ID")
+//    private Long bizId;
+//
+//    @ApiModelProperty(value = "业务类型 ORDER/EVALUATION 等")
+//    private String bizType;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "已读 0=未读 1=已读")
+//    private Integer isRead;
+//
+//    @ApiModelProperty(value = "阅读时间")
+//    private Timestamp readTime;
+//
+//    @ApiModelProperty(value = "扩展字段 存跳转链接等")
+//    private String extra;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQuerySystemDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQuerySystemDto.java
new file mode 100644
index 0000000..4c62b74
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQuerySystemDto.java
@@ -0,0 +1,76 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.sql.Timestamp;
+
+@Data
+@TableName("mes_msg_record") // 指定对应的表名
+public class MesMsgRecordQuerySystemDto{
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+//    @ApiModelProperty(value = "模板ID 可无")
+//    private Integer templateId;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "接收人ID")
+//    private String receiverId;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "1=买家 2=商户 3=骑手")
+//    private Integer platform;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "同模板type")
+//    private Integer msgType;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终标题")
+    private String title;
+
+    @NotBlank
+    @ApiModelProperty(value = "最终内容")
+    private String content;
+
+//    @ApiModelProperty(value = "业务ID 例如订单ID")
+//    private Long bizId;
+//
+//    @ApiModelProperty(value = "业务类型 ORDER/EVALUATION 等")
+//    private String bizType;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "已读 0=未读 1=已读")
+//    private Integer isRead;
+//
+//    @ApiModelProperty(value = "阅读时间")
+//    private Timestamp readTime;
+//
+//    @ApiModelProperty(value = "扩展字段 存跳转链接等")
+//    private String extra;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderEvaluationDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderEvaluationDto.java
new file mode 100644
index 0000000..d6adda3
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderEvaluationDto.java
@@ -0,0 +1,54 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+
+@Data
+public class MesOrderEvaluationDto {
+
+//    @TableId(value = "id", type = IdType.AUTO)
+//    @ApiModelProperty(value = "主键")
+//    private Long id;
+
+
+    @NotNull
+    @ApiModelProperty(value = "店铺ID 冗余字段")
+    private Long shopId;
+
+    @NotBlank
+    @ApiModelProperty(value = "店铺名称 冗余字段")
+    private String shopName;
+
+    @NotNull
+    @ApiModelProperty(value = "店铺服务评分")
+    private BigDecimal shopScore;
+
+    @ApiModelProperty(value = "店铺服务评价内容")
+    private String shopContent;
+
+
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderItemEvaluationDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderItemEvaluationDto.java
new file mode 100644
index 0000000..8553750
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderItemEvaluationDto.java
@@ -0,0 +1,78 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * @description /
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@Data
+@TableName("mes_order_item_evaluation")
+public class MesOrderItemEvaluationDto  {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @NotNull
+    @ApiModelProperty(value = "对应 mes_order_evaluation.id")
+    private Long orderEvalId;
+
+    @NotNull
+    @ApiModelProperty(value = "订单明细ID")
+    private Long orderItemId;
+
+    @NotNull
+    @ApiModelProperty(value = "商品ID")
+    private Long goodsId;
+
+    @NotBlank
+    @ApiModelProperty(value = "商品名称 冗余")
+    private String goodsName;
+
+    @ApiModelProperty(value = "商品主图 冗余")
+    private String goodsPic;
+
+    @NotNull
+    @ApiModelProperty(value = "商品单项评分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "评价内容")
+    private String content;
+
+    @ApiModelProperty(value = "评价图片JSON 最多5张")
+    private String imgs;
+
+//    @NotBlank
+//    @ApiModelProperty(value = "创建人")
+//    private String createBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "更新人")
+//    private String updateBy;
+//
+//    @NotNull
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+    public void copy(MesOrderItemEvaluation source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesRiderEvaluationDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesRiderEvaluationDto.java
new file mode 100644
index 0000000..158f64f
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesRiderEvaluationDto.java
@@ -0,0 +1,50 @@
+package com.oying.modules.message.domain.myDto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+
+@Data
+public class MesRiderEvaluationDto {
+
+//    @TableId(value = "id", type = IdType.AUTO)
+//    @ApiModelProperty(value = "主键")
+//    private Long id;
+
+//    @NotNull
+//    @ApiModelProperty(value = "订单ID")
+//    private Long orderId;
+//
+//    @NotBlank
+//    @ApiModelProperty(value = "订单编号 冗余")
+//    private String orderNo;
+
+    @NotNull
+    @ApiModelProperty(value = "骑手ID")
+    private Long riderId;
+
+    @NotBlank
+    @ApiModelProperty(value = "骑手姓名 冗余")
+    private String riderName;
+
+    @NotBlank
+    @ApiModelProperty(value = "买家用户ID")
+    private String buyerId;
+
+    @NotNull
+    @ApiModelProperty(value = "骑手服务评分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "评价内容")
+    private String content;
+
+    @ApiModelProperty(value = "评价图片JSON 最多5张")
+    private String imgs;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesAdvertisementMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesAdvertisementMapper.java
new file mode 100644
index 0000000..3b7cd28
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesAdvertisementMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesAdvertisement;
+import com.oying.modules.message.domain.dto.MesAdvertisementQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesAdvertisementMapper extends BaseMapper<MesAdvertisement> {
+
+    IPage<MesAdvertisement> findAll(@Param("criteria") MesAdvertisementQueryCriteria criteria, Page<Object> page);
+
+    List<MesAdvertisement> findAll(@Param("criteria") MesAdvertisementQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesCustomerCommentMsgMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesCustomerCommentMsgMapper.java
new file mode 100644
index 0000000..f8c5ce0
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesCustomerCommentMsgMapper.java
@@ -0,0 +1,26 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+import java.util.List;
+
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesCustomerCommentMsgMapper extends BaseMapper<MesCustomerCommentMsg> {
+
+    IPage<MesCustomerCommentMsg> findAll(@Param("criteria") MesCustomerCommentMsgQueryCriteria criteria, Page<Object> page);
+
+    List<MesCustomerCommentMsg> findAll(@Param("criteria") MesCustomerCommentMsgQueryCriteria criteria);
+
+    List<MesCustomerCommentMsgDTO> listCustomerComment(Long shopId);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
new file mode 100644
index 0000000..386c281
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
@@ -0,0 +1,47 @@
+package com.oying.modules.message.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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 org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@Mapper
+public interface MesMsgRecordMapper extends BaseMapper<MesMsgRecord> {
+
+    IPage<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+    List<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria);
+
+
+    List<MesMsgRecordQueryPollDto> PollMes(@Param("platform") Long platform, @Param("msgType") Long msgType);
+
+
+    void batchMarkRead(Long platform, List<Long> msgIds);
+
+    IPage<MesMsgRecordQuerySystemDto> queryAllSysNotice(@Param("criteria") MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+    List<MesMsgRecordQueryOrderDto> queryorder(Long shopId);
+
+    List<MesMsgRecordQueryPollDto> PollMesAll(@Param("platform") Long platform);
+
+    List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content);
+
+    List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId);
+
+    List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId);
+
+
+//    IPage<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria, Page<Object> page);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgTemplateMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgTemplateMapper.java
new file mode 100644
index 0000000..96423d9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgTemplateMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesMsgTemplate;
+import com.oying.modules.message.domain.dto.MesMsgTemplateQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesMsgTemplateMapper extends BaseMapper<MesMsgTemplate> {
+
+    IPage<MesMsgTemplate> findAll(@Param("criteria") MesMsgTemplateQueryCriteria criteria, Page<Object> page);
+
+    List<MesMsgTemplate> findAll(@Param("criteria") MesMsgTemplateQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderEvaluationMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderEvaluationMapper.java
new file mode 100644
index 0000000..8219852
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderEvaluationMapper.java
@@ -0,0 +1,26 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesOrderEvaluation;
+import com.oying.modules.message.domain.dto.MesOrderEvaluationQueryCriteria;
+import java.util.List;
+
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesOrderEvaluationMapper extends BaseMapper<MesOrderEvaluation> {
+
+    IPage<MesOrderEvaluation> findAll(@Param("criteria") MesOrderEvaluationQueryCriteria criteria, Page<Object> page);
+
+    List<MesOrderEvaluation> findAll(@Param("criteria") MesOrderEvaluationQueryCriteria criteria);
+
+    void addShopEvaluation(MesOrderEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderItemEvaluationMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderItemEvaluationMapper.java
new file mode 100644
index 0000000..b741291
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderItemEvaluationMapper.java
@@ -0,0 +1,25 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesOrderItemEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.domain.dto.MesOrderItemEvaluationQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesOrderItemEvaluationMapper extends BaseMapper<MesOrderItemEvaluation> {
+
+    IPage<MesOrderItemEvaluation> findAll(@Param("criteria") MesOrderItemEvaluationQueryCriteria criteria, Page<Object> page);
+
+    List<MesOrderItemEvaluation> findAll(@Param("criteria") MesOrderItemEvaluationQueryCriteria criteria);
+
+    void addGoodsEvaluation(MesOrderItemEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesRiderEvaluationMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesRiderEvaluationMapper.java
new file mode 100644
index 0000000..74c3ff2
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesRiderEvaluationMapper.java
@@ -0,0 +1,26 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesRiderEvaluation;
+import com.oying.modules.message.domain.dto.MesRiderEvaluationQueryCriteria;
+import java.util.List;
+
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesRiderEvaluationMapper extends BaseMapper<MesRiderEvaluation> {
+
+    IPage<MesRiderEvaluation> findAll(@Param("criteria") MesRiderEvaluationQueryCriteria criteria, Page<Object> page);
+
+    List<MesRiderEvaluation> findAll(@Param("criteria") MesRiderEvaluationQueryCriteria criteria);
+
+    void addRiderEvaluation(MesRiderEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesShopReplyMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesShopReplyMapper.java
new file mode 100644
index 0000000..b5d7b02
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesShopReplyMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.domain.MesShopReply;
+import com.oying.modules.message.domain.dto.MesShopReplyQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Mapper
+public interface MesShopReplyMapper extends BaseMapper<MesShopReply> {
+
+    IPage<MesShopReply> findAll(@Param("criteria") MesShopReplyQueryCriteria criteria, Page<Object> page);
+
+    List<MesShopReply> findAll(@Param("criteria") MesShopReplyQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderBuyerMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderBuyerMapper.java
deleted file mode 100644
index b8d6ac1..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderBuyerMapper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.oying.modules.message.mapper;
-
-import com.oying.modules.message.domain.MessageOrderBuyer;
-import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@Mapper
-public interface MessageOrderBuyerMapper extends BaseMapper<MessageOrderBuyer> {
-
-    IPage<MessageOrderBuyer> findAll(@Param("criteria") MessageOrderBuyerQueryCriteria criteria, Page<Object> page);
-
-    List<MessageOrderBuyer> findAll(@Param("criteria") MessageOrderBuyerQueryCriteria criteria);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderLeaveMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderLeaveMapper.java
deleted file mode 100644
index 4adbee8..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderLeaveMapper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.oying.modules.message.mapper;
-
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@Mapper
-public interface MessageOrderLeaveMapper extends BaseMapper<MessageOrderLeave> {
-
-    IPage<MessageOrderLeave> findAll(@Param("criteria") MessageOrderLeaveQueryCriteria criteria, Page<Object> page);
-
-    List<MessageOrderLeave> findAll(@Param("criteria") MessageOrderLeaveQueryCriteria criteria);
-}
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
deleted file mode 100644
index 18306cb..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.oying.modules.message.mapper;
-
-import com.oying.modules.message.domain.MessageOrderSeller;
-import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@Mapper
-public interface MessageOrderSellerMapper extends BaseMapper<MessageOrderSeller> {
-
-    IPage<MessageOrderSeller> findAll(@Param("criteria") MessageOrderSellerQueryCriteria criteria, Page<Object> page);
-
-    List<MessageOrderSeller> findAll(@Param("criteria") MessageOrderSellerQueryCriteria criteria);
-
-    List<MessageOrderSeller> findByStoreId(String storeId);
-
-    Boolean updateMessageOrderSellerRead(Integer orderId);
-
-    boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources);
-
-    boolean updateReadStatusById(Integer id);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemAdvertiseMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemAdvertiseMapper.java
deleted file mode 100644
index 99c0539..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemAdvertiseMapper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.oying.modules.message.mapper;
-
-import com.oying.modules.message.domain.MessageSystemAdvertise;
-import com.oying.modules.message.domain.dto.MessageSystemAdvertiseQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
-* @author leomon
-* @date 2025-06-05
-**/
-@Mapper
-public interface MessageSystemAdvertiseMapper extends BaseMapper<MessageSystemAdvertise> {
-
-    IPage<MessageSystemAdvertise> findAll(@Param("criteria") MessageSystemAdvertiseQueryCriteria criteria, Page<Object> page);
-
-    List<MessageSystemAdvertise> findAll(@Param("criteria") MessageSystemAdvertiseQueryCriteria criteria);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemMapper.java
deleted file mode 100644
index 959cde3..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemMapper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.oying.modules.message.mapper;
-
-import com.oying.modules.message.domain.MessageSystem;
-import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
- * @author 李萌
- * @date 2025-05-20
- **/
-@Mapper
-public interface MessageSystemMapper extends BaseMapper<MessageSystem> {
-
-    IPage<MessageSystem> findAll(@Param("criteria") MessageSystemQueryCriteria criteria, Page<Object> page);
-
-    List<MessageSystem> findAll(@Param("criteria") MessageSystemQueryCriteria criteria);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesAdvertisementController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesAdvertisementController.java
new file mode 100644
index 0000000..ca9015d
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesAdvertisementController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesAdvertisement;
+import com.oying.modules.message.service.MesAdvertisementService;
+import com.oying.modules.message.domain.dto.MesAdvertisementQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@RequestMapping("/api/mesAdvertisement")
+public class MesAdvertisementController {
+
+    private final MesAdvertisementService mesAdvertisementService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('mesAdvertisement:list')")
+    public void exportMesAdvertisement(HttpServletResponse response, MesAdvertisementQueryCriteria criteria) throws IOException {
+        mesAdvertisementService.download(mesAdvertisementService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询消息")
+    @PreAuthorize("@el.check('mesAdvertisement:list')")
+    public ResponseEntity<PageResult<MesAdvertisement>> queryMesAdvertisement(MesAdvertisementQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(mesAdvertisementService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增消息")
+    @ApiOperation("新增消息")
+    @PreAuthorize("@el.check('mesAdvertisement:add')")
+    public ResponseEntity<Object> createMesAdvertisement(@Validated @RequestBody MesAdvertisement resources){
+        mesAdvertisementService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改消息")
+    @ApiOperation("修改消息")
+    @PreAuthorize("@el.check('mesAdvertisement:edit')")
+    public ResponseEntity<Object> updateMesAdvertisement(@Validated @RequestBody MesAdvertisement resources){
+        mesAdvertisementService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除消息")
+    @ApiOperation("删除消息")
+    @PreAuthorize("@el.check('mesAdvertisement:del')")
+    public ResponseEntity<Object> deleteMesAdvertisement(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        mesAdvertisementService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesCustomerCommentMsgController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesCustomerCommentMsgController.java
new file mode 100644
index 0000000..89cbb50
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesCustomerCommentMsgController.java
@@ -0,0 +1,83 @@
+package com.oying.modules.message.rest;
+
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+import com.oying.modules.message.service.MesCustomerCommentMsgService;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息中心2.0")
+@RequestMapping("/api/mesCustomerCommentMsg")
+public class MesCustomerCommentMsgController {
+
+    private final MesCustomerCommentMsgService mesCustomerCommentMsgService;
+//
+//    @ApiOperation("导出数据")
+//    @GetMapping(value = "/download")
+//    @PreAuthorize("@el.check('mesCustomerCommentMsg:list')")
+//    public void exportMesCustomerCommentMsg(HttpServletResponse response, MesCustomerCommentMsgQueryCriteria criteria) throws IOException {
+//        mesCustomerCommentMsgService.download(mesCustomerCommentMsgService.queryAll(criteria), response);
+//    }
+//
+//    @GetMapping
+//    @ApiOperation("查询消息")
+//    @PreAuthorize("@el.check('mesCustomerCommentMsg:list')")
+//    public ResponseEntity<PageResult<MesCustomerCommentMsg>> queryMesCustomerCommentMsg(MesCustomerCommentMsgQueryCriteria criteria) {
+//        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+//        return new ResponseEntity<>(mesCustomerCommentMsgService.queryAll(criteria, page), HttpStatus.OK);
+//    }
+//
+//    @PostMapping
+//    @Log("新增消息")
+//    @ApiOperation("新增消息")
+//    @PreAuthorize("@el.check('mesCustomerCommentMsg:add')")
+//    public ResponseEntity<Object> createMesCustomerCommentMsg(@Validated @RequestBody MesCustomerCommentMsg resources) {
+//        mesCustomerCommentMsgService.create(resources);
+//        return new ResponseEntity<>(HttpStatus.CREATED);
+//    }
+//
+//    @PutMapping
+//    @Log("修改消息")
+//    @ApiOperation("修改消息")
+//    @PreAuthorize("@el.check('mesCustomerCommentMsg:edit')")
+//    public ResponseEntity<Object> updateMesCustomerCommentMsg(@Validated @RequestBody MesCustomerCommentMsg resources) {
+//        mesCustomerCommentMsgService.update(resources);
+//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+//    }
+//
+//    @DeleteMapping
+//    @Log("删除消息")
+//    @ApiOperation("删除消息")
+//    @PreAuthorize("@el.check('mesCustomerCommentMsg:del')")
+//    public ResponseEntity<Object> deleteMesCustomerCommentMsg(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+//        mesCustomerCommentMsgService.deleteAll(ids);
+//        return new ResponseEntity<>(HttpStatus.OK);
+//    }
+
+    /* 5. 用店铺id 查询分页顾客留言    订单一一顾客*/
+    @GetMapping("/customerComment")
+    @ApiOperation("店铺号list查询顾客留言")
+    public R<List<MesCustomerCommentMsgDTO>> customerComment(
+            @RequestParam Long shopId) {
+        try {
+            List<MesCustomerCommentMsgDTO> res = mesCustomerCommentMsgService.listCustomerComment(shopId);
+            return R.success(res);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+}
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
new file mode 100644
index 0000000..95821ef
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
@@ -0,0 +1,220 @@
+package com.oying.modules.message.rest;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
+import com.oying.modules.message.service.MesMsgRecordService;
+import com.oying.utils.PageResult;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息中心2.0")
+@RequestMapping("/api/mesMsgRecord")
+public class MesMsgRecordController {
+
+    private final MesMsgRecordService mesMsgRecordService;
+//
+//    @ApiOperation("导出数据")
+//    @GetMapping(value = "/download")
+//    @PreAuthorize("@el.check('mesMsgRecord:list')")
+//    public void exportMesMsgRecord(HttpServletResponse response, MesMsgRecordQueryCriteria criteria) throws IOException {
+//        mesMsgRecordService.download(mesMsgRecordService.queryAll(criteria), response);
+//    }
+//
+//    @GetMapping
+//    @ApiOperation("查询消息")
+//    @PreAuthorize("@el.check('mesMsgRecord:list')")
+//    public ResponseEntity<PageResult<MesMsgRecord>> queryMesMsgRecord(MesMsgRecordQueryCriteria criteria) {
+//        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+//        return new ResponseEntity<>(mesMsgRecordService.queryAll(criteria, page), HttpStatus.OK);
+//    }
+//
+//    @PostMapping
+//    @Log("新增消息")
+//    @ApiOperation("新增消息")
+//    @PreAuthorize("@el.check('mesMsgRecord:add')")
+//    public ResponseEntity<Object> createMesMsgRecord(@Validated @RequestBody MesMsgRecord resources) {
+//        mesMsgRecordService.create(resources);
+//        return new ResponseEntity<>(HttpStatus.CREATED);
+//    }
+//
+//    @PutMapping
+//    @Log("修改消息")
+//    @ApiOperation("修改消息")
+//    @PreAuthorize("@el.check('mesMsgRecord:edit')")
+//    public ResponseEntity<Object> updateMesMsgRecord(@Validated @RequestBody MesMsgRecord resources) {
+//        mesMsgRecordService.update(resources);
+//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+//    }
+//
+//    @DeleteMapping
+//    @Log("删除消息")
+//    @ApiOperation("删除消息")
+//    @PreAuthorize("@el.check('mesMsgRecord:del')")
+//    public ResponseEntity<Object> deleteMesMsgRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+//        mesMsgRecordService.deleteAll(ids);
+//        return new ResponseEntity<>(HttpStatus.OK);
+//    }
+
+
+    /* 1. 轮询最新消息(通知栏) */  //todo 轮询啥?
+    //只查“未读”消息,不分种类,返回最新 N 条     1=买家 2=商户 3=骑手"  消息类型为系统消息1?
+    @GetMapping("/poll")
+    @ApiOperation("查询轮询消息 1(买家)、2(商户)、3(骑手)")
+    @PreAuthorize("@el.check('mesMsgRecord:list')")
+    public R<List<MesMsgRecordQueryPollDto>> queryMesMsgRecord(@RequestParam Long platform) {
+        //platform 只能为 1 2 3
+        if (platform == null) {
+            return R.fail("平台类型不能为空");
+        }
+
+        if (PlatFormEnum.getByKey(platform.intValue()) == null) {
+            return R.fail("平台类型错误,只能为1(买家)、2(商户)、3(骑手)");
+        }
+
+        // 实现业务逻辑,调用服务层获取未读消息
+        try {
+//            Long system = Long.valueOf(MesTypeEnum.SYSTEM.getKey());
+//            List<MesMsgRecordQueryPollDto> mes = mesMsgRecordService.PollMes(platform, system);
+            List<MesMsgRecordQueryPollDto> mes = mesMsgRecordService.PollMesAll(platform);
+
+
+            return R.success(mes);
+        } catch (Exception e) {
+            log.error("查询轮询消息失败:", e);
+            return R.fail("查询轮询消息失败");
+        }
+
+
+    }
+
+//    /* 2. 批量确认收到消息 */
+//    @PutMapping("/ack/{msgId}")
+//    @ApiOperation("确认收到消息")
+//    public R<Void> ack(@PathVariable Long msgId) {
+
+    /// /        mesMsgRecordService.markRead(msgId, null);
+//        return R.success();
+//    }
+    /* 2. 批量确认收到消息   主键*/
+    @PutMapping("/ack")
+    @ApiOperation("批量确认收到消息 主键ids 1(买家)、2(商户)、3(骑手)")
+    public R<Void> batchAck(@ApiParam(value = "消息ID数组") @RequestBody List<Long> msgIds, @RequestParam Long platform) {
+        if (msgIds == null || msgIds.isEmpty()) {
+            return R.fail("消息ID列表不能为空");
+        }
+
+        try {
+            mesMsgRecordService.batchMarkRead(platform, msgIds);
+            return R.success();
+        } catch (Exception e) {
+            log.error("批量确认消息失败,msgIds: {}", msgIds, e);
+            return R.fail("批量确认消息失败");
+        }
+    }
+
+    /* 3. 分页系统通知 */
+    @GetMapping("/sysNotice")
+    @ApiOperation("分页查询系统通知")
+    public R<PageResult<MesMsgRecordQuerySystemDto>> sysNotice(
+            MesMsgRecordQueryCriteria criteria) {
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        try {
+            PageResult<MesMsgRecordQuerySystemDto> pageResult = mesMsgRecordService.queryAllSysNotice(criteria, page);
+            return R.success(pageResult);
+        } catch (Exception e) {
+            log.error("分页查询系统通知失败,criteria: {}", criteria, e);
+            return R.fail("分页查询系统通知失败");
+        }
+
+    }
+
+    /* 4. 用店铺id 查询订单消息 */
+//    @GetMapping("/order")
+//    @ApiOperation("用店铺id 查询订单消息")
+//    public R<List<MesMsgRecordQueryOrderDto>> order(@RequestParam Long shopId) {
+//        try {
+//            List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorder(shopId);
+//            return R.success(res);
+//        } catch (Exception e) {
+//            log.error("用店铺id 获取订单消息失败,shopId: {}", shopId, e);
+//            return R.fail("用店铺id 获取订单消息失败");
+//
+//        }
+//
+//    }
+
+    //商户端:买家下单提醒 根据商户id 获取买家下单提醒
+    @GetMapping("/order/pending")
+    @ApiOperation("商户端:用店铺id 获取下单订单消息")
+    public R<List<MesMsgRecordQueryOrderDto>> getPendingOrders(@RequestParam Long shopId) {
+        try {
+            String content = MsgStatusEnum.MERCHANT_ACCEPTED.getValue();
+            List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
+            return R.success(res);
+        } catch (Exception e) {
+            log.error("用店铺id 获取待处理订单消息失败,shopId: {}", shopId, e);
+            return R.fail("用店铺id 获取待处理订单消息失败");
+        }
+    }
+
+    //商户端:订单送达通知 。 根据商户id 获取买家下订单送达
+    @GetMapping("/order/delivered")
+    @ApiOperation("商户端:用店铺id 获取订单送达消息")
+    public R<List<MesMsgRecordQueryOrderDto>> getDeliveredOrders(@RequestParam Long shopId) {
+        try {
+            String content = MsgStatusEnum.BUYER_ORDER_DELIVERED.getValue();
+            List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
+            return R.success(res);
+        } catch (Exception e) {
+            log.error("用店铺id 获取已送达订单消息失败,shopId: {}", shopId, e);
+            return R.fail("用店铺id 获取已送达订单消息失败");
+        }
+    }
+
+    //买家端:订单状态变化通知
+    @GetMapping("/buyer/order/status")
+    @ApiOperation("买家端:获取订单状态变化消息")
+    public R<List<MesMsgRecordQueryOrderDto>> getBuyerOrderStatus(@RequestParam Long buyerId) {
+        try {
+            List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryBuyerOrderMessages(buyerId);
+            return R.success(res);
+        } catch (Exception e) {
+            log.error("买家端获取订单状态变化消息失败,buyerId: {}", buyerId, e);
+            return R.fail("获取订单状态变化消息失败");
+        }
+    }
+
+    //买家端:订单送达通知
+    @GetMapping("/buyer/order/delivered")
+    @ApiOperation("买家端:获取订单送达消息")
+    public R<List<MesMsgRecordQueryOrderDto>> getBuyerDeliveredOrders(@RequestParam Long buyerId) {
+        try {
+            List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryBuyerOrderMessagesComplete(buyerId);
+            return R.success(res);
+        } catch (Exception e) {
+            log.error("买家端获取订单送达消息失败,buyerId: {}", buyerId, e);
+            return R.fail("获取订单送达消息失败");
+        }
+    }
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgTemplateController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgTemplateController.java
new file mode 100644
index 0000000..ba80631
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgTemplateController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesMsgTemplate;
+import com.oying.modules.message.service.MesMsgTemplateService;
+import com.oying.modules.message.domain.dto.MesMsgTemplateQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@RequestMapping("/api/mesMsgTemplate")
+public class MesMsgTemplateController {
+
+    private final MesMsgTemplateService mesMsgTemplateService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('mesMsgTemplate:list')")
+    public void exportMesMsgTemplate(HttpServletResponse response, MesMsgTemplateQueryCriteria criteria) throws IOException {
+        mesMsgTemplateService.download(mesMsgTemplateService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询消息")
+    @PreAuthorize("@el.check('mesMsgTemplate:list')")
+    public ResponseEntity<PageResult<MesMsgTemplate>> queryMesMsgTemplate(MesMsgTemplateQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(mesMsgTemplateService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增消息")
+    @ApiOperation("新增消息")
+    @PreAuthorize("@el.check('mesMsgTemplate:add')")
+    public ResponseEntity<Object> createMesMsgTemplate(@Validated @RequestBody MesMsgTemplate resources){
+        mesMsgTemplateService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改消息")
+    @ApiOperation("修改消息")
+    @PreAuthorize("@el.check('mesMsgTemplate:edit')")
+    public ResponseEntity<Object> updateMesMsgTemplate(@Validated @RequestBody MesMsgTemplate resources){
+        mesMsgTemplateService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除消息")
+    @ApiOperation("删除消息")
+    @PreAuthorize("@el.check('mesMsgTemplate:del')")
+    public ResponseEntity<Object> deleteMesMsgTemplate(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
+        mesMsgTemplateService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java
new file mode 100644
index 0000000..e3414d3
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java
@@ -0,0 +1,81 @@
+package com.oying.modules.message.rest;
+
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+import com.oying.modules.message.service.MesOrderEvaluationService;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息中心2.0")
+@RequestMapping("/api/mesOrderEvaluation")
+public class MesOrderEvaluationController {
+
+    private final MesOrderEvaluationService mesOrderEvaluationService;
+//
+//    @ApiOperation("导出数据")
+//    @GetMapping(value = "/download")
+//    @PreAuthorize("@el.check('mesOrderEvaluation:list')")
+//    public void exportMesOrderEvaluation(HttpServletResponse response, MesOrderEvaluationQueryCriteria criteria) throws IOException {
+//        mesOrderEvaluationService.download(mesOrderEvaluationService.queryAll(criteria), response);
+//    }
+//
+//    @GetMapping
+//    @ApiOperation("查询消息")
+//    @PreAuthorize("@el.check('mesOrderEvaluation:list')")
+//    public ResponseEntity<PageResult<MesOrderEvaluation>> queryMesOrderEvaluation(MesOrderEvaluationQueryCriteria criteria){
+//        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+//        return new ResponseEntity<>(mesOrderEvaluationService.queryAll(criteria,page),HttpStatus.OK);
+//    }
+//
+//    @PostMapping
+//    @Log("新增消息")
+//    @ApiOperation("新增消息")
+//    @PreAuthorize("@el.check('mesOrderEvaluation:add')")
+//    public ResponseEntity<Object> createMesOrderEvaluation(@Validated @RequestBody MesOrderEvaluation resources){
+//        mesOrderEvaluationService.create(resources);
+//        return new ResponseEntity<>(HttpStatus.CREATED);
+//    }
+//
+//    @PutMapping
+//    @Log("修改消息")
+//    @ApiOperation("修改消息")
+//    @PreAuthorize("@el.check('mesOrderEvaluation:edit')")
+//    public ResponseEntity<Object> updateMesOrderEvaluation(@Validated @RequestBody MesOrderEvaluation resources){
+//        mesOrderEvaluationService.update(resources);
+//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+//    }
+//
+//    @DeleteMapping
+//    @Log("删除消息")
+//    @ApiOperation("删除消息")
+//    @PreAuthorize("@el.check('mesOrderEvaluation:del')")
+//    public ResponseEntity<Object> deleteMesOrderEvaluation(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+//        mesOrderEvaluationService.deleteAll(ids);
+//        return new ResponseEntity<>(HttpStatus.OK);
+//    }
+
+    //对一个店铺评价 + 打分
+    //order_eval_id, order_item_id, goods_id, goods_name, goods_pic, score, content, imgs, buyer_id
+    @PostMapping("/addShopEvaluation")
+    @ApiOperation("对一个店铺评价 + 打分")
+    public R<Object> addGoodsEvaluation(@RequestBody MesOrderEvaluationDto resources) {
+        try {
+            mesOrderEvaluationService.addShopEvaluation(resources);
+            return R.success();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderItemEvaluationController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderItemEvaluationController.java
new file mode 100644
index 0000000..b6f56bb
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderItemEvaluationController.java
@@ -0,0 +1,83 @@
+package com.oying.modules.message.rest;
+
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.service.MesOrderItemEvaluationService;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息中心2.0")
+@RequestMapping("/api/mesOrderItemEvaluation")
+public class MesOrderItemEvaluationController {
+
+    private final MesOrderItemEvaluationService mesOrderItemEvaluationService;
+
+    //
+//    @ApiOperation("导出数据")
+//    @GetMapping(value = "/download")
+//    @PreAuthorize("@el.check('mesOrderItemEvaluation:list')")
+//    public void exportMesOrderItemEvaluation(HttpServletResponse response, MesOrderItemEvaluationQueryCriteria criteria) throws IOException {
+//        mesOrderItemEvaluationService.download(mesOrderItemEvaluationService.queryAll(criteria), response);
+//    }
+//
+//    @GetMapping
+//    @ApiOperation("查询消息")
+//    @PreAuthorize("@el.check('mesOrderItemEvaluation:list')")
+//    public ResponseEntity<PageResult<MesOrderItemEvaluation>> queryMesOrderItemEvaluation(MesOrderItemEvaluationQueryCriteria criteria){
+//        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+//        return new ResponseEntity<>(mesOrderItemEvaluationService.queryAll(criteria,page),HttpStatus.OK);
+//    }
+//
+//    @PostMapping
+//    @Log("新增消息")
+//    @ApiOperation("新增消息")
+//    @PreAuthorize("@el.check('mesOrderItemEvaluation:add')")
+//    public ResponseEntity<Object> createMesOrderItemEvaluation(@Validated @RequestBody MesOrderItemEvaluation resources){
+//        mesOrderItemEvaluationService.create(resources);
+//        return new ResponseEntity<>(HttpStatus.CREATED);
+//    }
+//
+//    @PutMapping
+//    @Log("修改消息")
+//    @ApiOperation("修改消息")
+//    @PreAuthorize("@el.check('mesOrderItemEvaluation:edit')")
+//    public ResponseEntity<Object> updateMesOrderItemEvaluation(@Validated @RequestBody MesOrderItemEvaluation resources){
+//        mesOrderItemEvaluationService.update(resources);
+//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+//    }
+//
+//    @DeleteMapping
+//    @Log("删除消息")
+//    @ApiOperation("删除消息")
+//    @PreAuthorize("@el.check('mesOrderItemEvaluation:del')")
+//    public ResponseEntity<Object> deleteMesOrderItemEvaluation(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+//        mesOrderItemEvaluationService.deleteAll(ids);
+//        return new ResponseEntity<>(HttpStatus.OK);
+//    }
+    //对一个商品评价 + 打分
+    //order_eval_id, order_item_id, goods_id, goods_name, goods_pic, score, content, imgs, buyer_id
+    @PostMapping("/addGoodsEvaluation")
+    @ApiOperation("对一个商品评价 + 打分")
+    public R<Object> addGoodsEvaluation(@RequestBody MesOrderItemEvaluationDto resources) {
+        try {
+            mesOrderItemEvaluationService.addGoodsEvaluation(resources);
+            return R.success();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+
+    }
+
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java
new file mode 100644
index 0000000..f47126c
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java
@@ -0,0 +1,81 @@
+package com.oying.modules.message.rest;
+
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+import com.oying.modules.message.service.MesRiderEvaluationService;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 李萌
+ * @date 2025-07-25
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息中心2.0")
+@RequestMapping("/api/mesRiderEvaluation")
+public class MesRiderEvaluationController {
+
+    private final MesRiderEvaluationService mesRiderEvaluationService;
+
+//    @ApiOperation("导出数据")
+//    @GetMapping(value = "/download")
+//    @PreAuthorize("@el.check('mesRiderEvaluation:list')")
+//    public void exportMesRiderEvaluation(HttpServletResponse response, MesRiderEvaluationQueryCriteria criteria) throws IOException {
+//        mesRiderEvaluationService.download(mesRiderEvaluationService.queryAll(criteria), response);
+//    }
+//
+//    @GetMapping
+//    @ApiOperation("查询消息")
+//    @PreAuthorize("@el.check('mesRiderEvaluation:list')")
+//    public ResponseEntity<PageResult<MesRiderEvaluation>> queryMesRiderEvaluation(MesRiderEvaluationQueryCriteria criteria){
+//        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+//        return new ResponseEntity<>(mesRiderEvaluationService.queryAll(criteria,page),HttpStatus.OK);
+//    }
+//
+//    @PostMapping
+//    @Log("新增消息")
+//    @ApiOperation("新增消息")
+//    @PreAuthorize("@el.check('mesRiderEvaluation:add')")
+//    public ResponseEntity<Object> createMesRiderEvaluation(@Validated @RequestBody MesRiderEvaluation resources){
+//        mesRiderEvaluationService.create(resources);
+//        return new ResponseEntity<>(HttpStatus.CREATED);
+//    }
+//
+//    @PutMapping
+//    @Log("修改消息")
+//    @ApiOperation("修改消息")
+//    @PreAuthorize("@el.check('mesRiderEvaluation:edit')")
+//    public ResponseEntity<Object> updateMesRiderEvaluation(@Validated @RequestBody MesRiderEvaluation resources){
+//        mesRiderEvaluationService.update(resources);
+//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+//    }
+//
+//    @DeleteMapping
+//    @Log("删除消息")
+//    @ApiOperation("删除消息")
+//    @PreAuthorize("@el.check('mesRiderEvaluation:del')")
+//    public ResponseEntity<Object> deleteMesRiderEvaluation(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+//        mesRiderEvaluationService.deleteAll(ids);
+//        return new ResponseEntity<>(HttpStatus.OK);
+//    }
+
+    //对一个骑手评价 + 打分
+    //
+    @PostMapping("/addRiderEvaluation")
+    @ApiOperation("对一个骑手评价 + 打分")
+    public R<Object> addGoodsEvaluation(@RequestBody MesRiderEvaluationDto resources) {
+        try {
+            mesRiderEvaluationService.addRiderEvaluation(resources);
+            return R.success();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesShopReplyController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesShopReplyController.java
new file mode 100644
index 0000000..8cc69a0
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesShopReplyController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesShopReply;
+import com.oying.modules.message.service.MesShopReplyService;
+import com.oying.modules.message.domain.dto.MesShopReplyQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@RequestMapping("/api/mesShopReply")
+public class MesShopReplyController {
+
+    private final MesShopReplyService mesShopReplyService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('mesShopReply:list')")
+    public void exportMesShopReply(HttpServletResponse response, MesShopReplyQueryCriteria criteria) throws IOException {
+        mesShopReplyService.download(mesShopReplyService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询消息")
+    @PreAuthorize("@el.check('mesShopReply:list')")
+    public ResponseEntity<PageResult<MesShopReply>> queryMesShopReply(MesShopReplyQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(mesShopReplyService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增消息")
+    @ApiOperation("新增消息")
+    @PreAuthorize("@el.check('mesShopReply:add')")
+    public ResponseEntity<Object> createMesShopReply(@Validated @RequestBody MesShopReply resources){
+        mesShopReplyService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改消息")
+    @ApiOperation("修改消息")
+    @PreAuthorize("@el.check('mesShopReply:edit')")
+    public ResponseEntity<Object> updateMesShopReply(@Validated @RequestBody MesShopReply resources){
+        mesShopReplyService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除消息")
+    @ApiOperation("删除消息")
+    @PreAuthorize("@el.check('mesShopReply:del')")
+    public ResponseEntity<Object> deleteMesShopReply(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        mesShopReplyService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderBuyerController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderBuyerController.java
deleted file mode 100644
index ad275c2..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderBuyerController.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.oying.modules.message.rest;
-
-import com.oying.annotation.Log;
-import com.oying.modules.message.domain.MessageOrderBuyer;
-import com.oying.modules.message.service.MessageOrderBuyerService;
-import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
-import com.oying.utils.R;
-import lombok.RequiredArgsConstructor;
-import java.util.List;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-//todo
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "买家端订单消息通知")
-@RequestMapping("/api/message/messageOrderBuyer")
-public class MessageOrderBuyerController {
-
-    private final MessageOrderBuyerService messageOrderBuyerService;
-
-//    @ApiOperation("导出数据")
-//    @GetMapping(value = "/download")
-//    @PreAuthorize("@el.check('messageOrderBuyer:list')")
-//    public void exportMessageOrderBuyer(HttpServletResponse response, MessageOrderBuyerQueryCriteria criteria) throws IOException {
-//        messageOrderBuyerService.download(messageOrderBuyerService.queryAll(criteria), response);
-//    }
-
-    @GetMapping
-    @ApiOperation("查询买家端订单消息通知")
-    @PreAuthorize("@el.check('messageOrderBuyer:list')")
-    public R<PageResult<MessageOrderBuyer>> queryMessageOrderBuyer(MessageOrderBuyerQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-//        return new ResponseEntity<>(messageOrderBuyerService.queryAll(criteria,page),HttpStatus.OK);
-
-        return R.success(messageOrderBuyerService.queryAll(criteria,page));
-    }
-
-//    @PostMapping
-//    @Log("新增买家端订单消息通知")
-//    @ApiOperation("新增买家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderBuyer:add')")
-//    public ResponseEntity<Object> createMessageOrderBuyer(@Validated @RequestBody MessageOrderBuyer resources){
-//        messageOrderBuyerService.create(resources);
-//        return new ResponseEntity<>(HttpStatus.CREATED);
-//    }
-//
-//    @PutMapping
-//    @Log("修改买家端订单消息通知")
-//    @ApiOperation("修改买家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderBuyer:edit')")
-//    public ResponseEntity<Object> updateMessageOrderBuyer(@Validated @RequestBody MessageOrderBuyer resources){
-//        messageOrderBuyerService.update(resources);
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-//
-//    @DeleteMapping
-//    @Log("删除买家端订单消息通知")
-//    @ApiOperation("删除买家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderBuyer:del')")
-//    public ResponseEntity<Object> deleteMessageOrderBuyer(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
-//        messageOrderBuyerService.deleteAll(ids);
-//        return new ResponseEntity<>(HttpStatus.OK);
-//    }
-    //订单状态变化通知
-    @GetMapping("/status/{order_id}")
-    @ApiOperation("查询一条订单状态变化通知")
-    public R<String> getMessageOrderBuyer(@PathVariable Integer order_id) {
-        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
-        if (messageOrderBuyer != null) {
-            String message = messageOrderBuyer.getMessageType();
-            return R.success(message);
-        } else {
-            return R.fail("订单状态变化通知不存在");
-        }
-
-    }
-    //订单送达通知
-    @GetMapping("/deliver/{order_id}")
-    @ApiOperation("查询一条订单送达通知")
-    public R<String> getMessageOrderBuyerDeliver(@PathVariable Integer order_id) {
-        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
-        String message = messageOrderBuyer.getMessageType();
-        //如果MessageType为订单送达,则返回message——content
-        if (message.equals("订单送达")) {
-            String messageContent = messageOrderBuyer.getMessageContent();
-            return R.success(messageContent);
-//            return new ResponseEntity<>(messageContent, HttpStatus.OK);
-        }else{
-            //返回没送达
-            return R.fail("没送达");
-//            return new ResponseEntity<>("没送达", HttpStatus.OK);
-        }
-    }
-    //实现点击跳转到订单详情
-    @GetMapping("/link/{order_id}")
-    @ApiOperation("点击跳转到订单详情")
-    public R<String> getMessageOrderBuyerLink(@PathVariable Integer order_id) {
-        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
-        String link = messageOrderBuyer.getLink();
-//        return new ResponseEntity<>(link, HttpStatus.OK);
-        return R.success(link);
-    }
-
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderLeaveController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderLeaveController.java
deleted file mode 100644
index ae2c2ac..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderLeaveController.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.oying.modules.message.rest;
-
-import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.annotation.Log;
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.modules.message.service.MessageOrderLeaveService;
-import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
-import com.oying.utils.R;
-import lombok.RequiredArgsConstructor;
-
-import java.sql.Timestamp;
-import java.util.List;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "消息留言")
-@RequestMapping("/api/message/messageOrderLeave")
-public class MessageOrderLeaveController {
-
-    private final MessageOrderLeaveService messageOrderLeaveService;
-
-//    @ApiOperation("导出数据")
-//    @GetMapping(value = "/download")
-//    @PreAuthorize("@el.check('messageOrderLeave:list')")
-//    public void exportMessageOrderLeave(HttpServletResponse response, MessageOrderLeaveQueryCriteria criteria) throws IOException {
-//        messageOrderLeaveService.download(messageOrderLeaveService.queryAll(criteria), response);
-//    }
-
-    @GetMapping
-    @ApiOperation("查询消息留言")
-    @PreAuthorize("@el.check('messageOrderLeave:list')")
-    public R<PageResult<MessageOrderLeave>> queryMessageOrderLeave(MessageOrderLeaveQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-//        return new ResponseEntity<>(messageOrderLeaveService.queryAll(criteria,page),HttpStatus.OK);
-        return R.success(messageOrderLeaveService.queryAll(criteria,page));
-    }
-
-
-//    @PostMapping
-//    @Log("新增消息留言")
-//    @ApiOperation("新增消息留言")
-//    @PreAuthorize("@el.check('messageOrderLeave:add')")
-//    public ResponseEntity<Object> createMessageOrderLeave(@Validated @RequestBody MessageOrderLeave resources){
-//        messageOrderLeaveService.create(resources);
-//        return new ResponseEntity<>(HttpStatus.CREATED);
-//    }
-
-//    @PutMapping
-//    @Log("修改消息留言")
-//    @ApiOperation("修改消息留言")
-//    @PreAuthorize("@el.check('messageOrderLeave:edit')")
-//    public ResponseEntity<Object> updateMessageOrderLeave(@Validated @RequestBody MessageOrderLeave resources){
-//        messageOrderLeaveService.update(resources);
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-
-//    @DeleteMapping
-//    @Log("删除消息留言")
-//    @ApiOperation("删除消息留言")
-//    @PreAuthorize("@el.check('messageOrderLeave:del')")
-//    public ResponseEntity<Object> deleteMessageOrderLeave(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
-//        messageOrderLeaveService.deleteAll(ids);
-//        return new ResponseEntity<>(HttpStatus.OK);
-//    }
-    //顾客点击订单,传回订单id,根据订单id生成一条 消息留言
-//    @PutMapping("/customer/{order_id}")
-//    @ApiOperation("顾客点击订单,传回订单id,根据订单id生成一条 留言,此时顾客可以留言")
-//    public ResponseEntity<Object> createMessageOrderLeave(@PathVariable("order_id") Integer id,@RequestParam String customerReview) {
-//        //创建对象
-//        MessageOrderLeave messageOrderLeave = new MessageOrderLeave();
-//        messageOrderLeave.setOrderId(id);
-//        //如果customerReview为空,默认为“用户未留言”
-//        messageOrderLeave.setCustomerReview(customerReview);
-//        //设置创建时间为当前时间
-//        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
-//        //若表中order_id订单还没存在则调用update留言
-//
-//
-//        if(messageOrderLeaveService.findByOrderId(id)==null){
-//            messageOrderLeaveService.updateById(messageOrderLeave);
-//            return new ResponseEntity<>(HttpStatus.CREATED);
-//        } else {
-//            // 已存在则不保存,返回 OK 表示成功但无新资源创建
-//            return new ResponseEntity<>(HttpStatus.OK);
-//        }
-//
-//    }
-
-    @PutMapping("/customer/{order_id}")
-    @ApiOperation("顾客点击订单,传回订单id,根据订单id更新一条留言")
-    public R<Object> updateMessageOrderLeaveCustomer(@PathVariable("order_id") Integer id, @RequestBody MessageOrderLeave messageOrderLeave1) {
-        // 根据 order_id 查找留言信息
-        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
-
-        // 如果留言信息不存在,返回 404 Not Found
-        if (messageOrderLeave == null) {
-//            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
-            return R.fail("Message order leave not found for order ID: " + id);
-        }
-
-        // 设置顾客评价内容
-        if (messageOrderLeave1.getCustomerReview() != null && !messageOrderLeave1.getCustomerReview().trim().isEmpty()) {
-            messageOrderLeave.setCustomerReview(messageOrderLeave1.getCustomerReview());
-        } else {
-            messageOrderLeave.setCustomerReview("用户未留言");
-        }
-
-        // 更新最后一次操作的时间
-        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
-
-        // 调用服务层更新数据
-        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
-
-        // 如果更新失败,返回 500 Internal Server Error
-        if (!updated) {
-//            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
-                return R.fail("Failed to update message order leave");
-        }
-
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-        return R.success(messageOrderLeave);
-    }
-    //商家对订单id进行回复
-//    @PutMapping("/seller/{order_id}")
-//    @ApiOperation("商家对订单id进行回复")
-//    public ResponseEntity<Object> updateMessageOrderLeave(@PathVariable("order_id") Integer id, @RequestParam String sellerReply) {
-//        // 检查 sellerReply 是否为空
-//        if (sellerReply == null || sellerReply.trim().isEmpty()) {
-//            return new ResponseEntity<>("sellerReply is required", HttpStatus.BAD_REQUEST);
-//        }
-//
-//        // 根据 order_id 查找留言信息
-//        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
-//
-//        // 如果没有找到对应的留言信息,返回 404 Not Found
-//        if (messageOrderLeave == null) {
-//            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
-//        }
-//
-//        // 设置商家回复内容
-//        messageOrderLeave.setSellerReply(sellerReply);
-//        // 更新最后一次操作的时间
-//        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
-//
-//        // 调用服务层更新数据
-//        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
-//
-//        // 如果更新失败,返回 500 Internal Server Error
-//        if (!updated) {
-//            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
-//        }
-//
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-    //商家对订单id进行回复 订单id必须唯一限制 否则会报错
-    @PutMapping("/seller/{order_id}")
-    @ApiOperation("商家对订单id进行回复")
-    public R<Object> updateMessageOrderLeaveSeller(@PathVariable("order_id") Integer id, @RequestBody MessageOrderLeave messageOrderLeave1) {
-        // 根据 order_id 查找留言信息
-        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
-
-        // 如果没有找到对应的留言信息,返回 404 Not Found
-        if (messageOrderLeave == null) {
-//            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
-                return R.fail("Message order leave not found for order ID: " + id);
-        }
-
-
-        // 设置商家回复内容
-        messageOrderLeave.setSellerReply(messageOrderLeave1.getSellerReply());
-        // 更新最后一次操作的时间
-        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
-
-        // 调用服务层更新数据
-        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
-
-        // 如果更新失败,返回 500 Internal Server Error
-        if (!updated) {
-//            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
-            return R.fail("Failed to update message order leave");
-        }
-
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-        return R.success(messageOrderLeave);
-    }
-
-}
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
deleted file mode 100644
index 0a972a6..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.oying.modules.message.rest;
-
-import cn.hutool.core.bean.BeanUtil;
-import com.oying.annotation.Log;
-import com.oying.modules.message.domain.MessageOrderSeller;
-import com.oying.modules.message.domain.MessageOrderSeller;
-import com.oying.modules.message.domain.dto.MessageOrderSellerDTO;
-import com.oying.modules.message.service.MessageOrderSellerService;
-import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
-import com.oying.utils.R;
-import lombok.RequiredArgsConstructor;
-import java.util.List;
-
-import org.apache.poi.util.Beta;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-
-/**
-* @author 李萌
-* @date 2025-05-20
-**/
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "卖家端订单消息通知")
-@RequestMapping("/api/message/messageOrderSeller")
-public class MessageOrderSellerController {
-
-    private final MessageOrderSellerService messageOrderSellerService;
-
-//    @ApiOperation("导出数据")
-//    @GetMapping(value = "/download")
-//    @PreAuthorize("@el.check('messageOrderSeller:list')")
-//    public void exportMessageOrderSeller(HttpServletResponse response, MessageOrderSellerQueryCriteria criteria) throws IOException {
-//        messageOrderSellerService.download(messageOrderSellerService.queryAll(criteria), response);
-//    }
-
-    @GetMapping
-    @ApiOperation("查询卖家端订单消息通知")
-    @PreAuthorize("@el.check('messageOrderSeller:list')")
-    public R<PageResult<MessageOrderSeller>> queryMessageOrderSeller(MessageOrderSellerQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-//        return new ResponseEntity<>(messageOrderSellerService.queryAll(criteria,page),HttpStatus.OK);
-        return R.success(messageOrderSellerService.queryAll(criteria,page));
-    }
-
-//    @PostMapping
-//    @Log("新增卖家端订单消息通知")
-//    @ApiOperation("新增卖家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderSeller:add')")
-//    public ResponseEntity<Object> createMessageOrderSeller(@Validated @RequestBody MessageOrderSeller resources){
-//        messageOrderSellerService.create(resources);
-//        return new ResponseEntity<>(HttpStatus.CREATED);
-//    }
-//
-//    @PutMapping
-//    @Log("修改卖家端订单消息通知")
-//    @ApiOperation("修改卖家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderSeller:edit')")
-//    public ResponseEntity<Object> updateMessageOrderSeller(@Validated @RequestBody MessageOrderSeller resources){
-//        messageOrderSellerService.update(resources);
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-//
-//    @DeleteMapping
-//    @Log("删除卖家端订单消息通知")
-//    @ApiOperation("删除卖家端订单消息通知")
-//    @PreAuthorize("@el.check('messageOrderSeller:del')")
-//    public ResponseEntity<Object> deleteMessageOrderSeller(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
-//        messageOrderSellerService.deleteAll(ids);
-//        return new ResponseEntity<>(HttpStatus.OK);
-//    }
-
-//    //订单状态变化通知
-//    @GetMapping("/status/{order_id}")
-//    @ApiOperation("查询一条订单状态变化通知")
-//    public R<String> getMessageOrderSeller(@PathVariable Integer order_id) {
-//        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
-//        String message = messageOrderSeller.getMessageType();
-//
-////        return new ResponseEntity<>(message, HttpStatus.OK);
-//        return R.success(message);
-//    }
-    //根据store_id 返回list订单状态变化通知
-    @GetMapping("/status/store/{store_id}")
-    @ApiOperation("根据store_id 返回list订单状态变化通知")
-    public R<List<MessageOrderSellerDTO>> getMessageOrderSeller(@PathVariable String store_id) {
-         List<MessageOrderSeller> messageOrderSeller = messageOrderSellerService.findByStoreId(store_id);
-         //转换为MessageOrderSellerDTO huto tools
-        List<MessageOrderSellerDTO> dtoList = BeanUtil.copyToList(messageOrderSeller, MessageOrderSellerDTO.class);
-        //判断store_id存在
-        if (messageOrderSeller == null) {
-            return R.fail("store_id不存在");
-        }else{return R.success(dtoList);}
-
-    }
-    //让前端标记已读
-    //修改逻辑 主键为条件  而不是订单号,有些订单号可能重复 含多条信息 已弃用
-//    @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//重复值处理
-    //让后端队友更新我的表
-    @PostMapping("/update/seller")
-    @ApiOperation("更新插入消息表")
-    public R<String> updateMessageOrderSeller(@RequestBody MessageOrderSeller resources) {
-        //插入一条数据
-        if(messageOrderSellerService.saveMessageOrderSellerByOrderIdAndStoreId(resources))
-            return R.success("更新成功");
-        return R.fail("更新失败");
-
-    }
-
-
-
-
-
-
-    //订单送达通知
-    @GetMapping("/deliver/{order_id}")
-    @ApiOperation("查询一条订单送达通知")
-    public R<String> getMessageOrderSellerDeliver(@PathVariable Integer order_id) {
-        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
-        String message = messageOrderSeller.getMessageType();
-        //如果MessageType为订单送达,则返回message——content
-        if (message.equals("买家下单")) {
-            String messageContent = messageOrderSeller.getMessageContent();
-//            return new ResponseEntity<>(messageContent, HttpStatus.OK);
-            return R.success(messageContent);
-        }else{
-            //返回没送达
-//            return new ResponseEntity<>("买家没下单", HttpStatus.OK);
-            return R.fail("没送达");
-        }
-    }
-    //实现点击跳转到订单详情
-    @GetMapping("/link/{order_id}")
-    @ApiOperation("点击跳转到订单详情")
-    public R<String> getMessageOrderSellerLink(@PathVariable Integer order_id) {
-        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
-        String link = messageOrderSeller.getLink();
-//        return new ResponseEntity<>(link, HttpStatus.OK);
-        return R.success(link);
-    }
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemAdvertiseController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemAdvertiseController.java
deleted file mode 100644
index 2734ce5..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemAdvertiseController.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.oying.modules.message.rest;
-
-import com.oying.annotation.Log;
-import com.oying.modules.message.domain.MessageSystemAdvertise;
-import com.oying.modules.message.service.MessageSystemAdvertiseService;
-import com.oying.modules.message.domain.dto.MessageSystemAdvertiseQueryCriteria;
-import com.oying.utils.R;
-import lombok.RequiredArgsConstructor;
-import java.util.List;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-
-/**
-* @author leomon
-* @date 2025-06-05
-**/
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "广告")
-@RequestMapping("/api/messageSystemAdvertise")
-public class MessageSystemAdvertiseController {
-
-    private final MessageSystemAdvertiseService messageSystemAdvertiseService;
-
-
-    @GetMapping
-    @ApiOperation("页查询广告")
-    @PreAuthorize("@el.check('messageSystemAdvertise:list')")
-    public R<PageResult<MessageSystemAdvertise>> queryMessageSystemAdvertise(MessageSystemAdvertiseQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-//        return new ResponseEntity<>(messageSystemAdvertiseService.queryAll(criteria,page),HttpStatus.OK);
-        return R.success(messageSystemAdvertiseService.queryAll(criteria,page));
-
-    }
-    //条查询广告
-    @GetMapping("/{id}")
-    @ApiOperation("条查询广告")
-    public R<MessageSystemAdvertise> getMessageSystemAdvertise(@PathVariable Integer id){
-        MessageSystemAdvertise messageSystemAdvertise = messageSystemAdvertiseService.getById(id);
-//        return new ResponseEntity<>(messageSystemAdvertise,HttpStatus.OK);
-        return R.success(messageSystemAdvertise);
-    }
-
-//    @PostMapping
-//    @Log("新增广告")
-//    @ApiOperation("新增广告")
-//    @PreAuthorize("@el.check('messageSystemAdvertise:add')")
-//    public ResponseEntity<Object> createMessageSystemAdvertise(@Validated @RequestBody MessageSystemAdvertise resources){
-//        messageSystemAdvertiseService.create(resources);
-//        return new ResponseEntity<>(HttpStatus.CREATED);
-//    }
-
-//    @PutMapping
-//    @Log("修改广告")
-//    @ApiOperation("修改广告")
-//    @PreAuthorize("@el.check('messageSystemAdvertise:edit')")
-//    public ResponseEntity<Object> updateMessageSystemAdvertise(@Validated @RequestBody MessageSystemAdvertise resources){
-//        messageSystemAdvertiseService.update(resources);
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-
-//    @DeleteMapping
-//    @Log("删除广告")
-//    @ApiOperation("删除广告")
-//    @PreAuthorize("@el.check('messageSystemAdvertise:del')")
-//    public ResponseEntity<Object> deleteMessageSystemAdvertise(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
-//        messageSystemAdvertiseService.deleteAll(ids);
-//        return new ResponseEntity<>(HttpStatus.OK);
-//    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
deleted file mode 100644
index 4ce11f6..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.oying.modules.message.rest;
-
-import com.alibaba.fastjson2.JSONObject;
-import com.oying.annotation.Log;
-import com.oying.modules.message.domain.MessageSystem;
-import com.oying.modules.message.domain.dto.SendMessageRequestDto;
-import com.oying.modules.message.service.MessageSystemService;
-import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
-import com.oying.modules.system.domain.User;
-import com.oying.modules.system.domain.UserSubscribe;
-import com.oying.utils.HttpRequest;
-import lombok.Data;
-import lombok.RequiredArgsConstructor;
-
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-import com.oying.modules.security.service.WeiXinService;
-import com.oying.utils.R;
-/**
- * @author 李萌
- * @date 2025-05-20
- **/
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "消息_系统")
-@RequestMapping("/api/message/messageSystem")
-public class MessageSystemController {
-
-    private static final Logger log = LoggerFactory.getLogger(MessageSystemController.class);
-    private final MessageSystemService messageSystemService;
-    private final WeiXinService weiXinService;
-
-
-
-//    @ApiOperation("导出数据")
-//    @GetMapping(value = "/download")
-//    @PreAuthorize("@el.check('messageSystem:list')")
-//    public void exportMessageSystem(HttpServletResponse response, MessageSystemQueryCriteria criteria) throws IOException {
-//        messageSystemService.download(messageSystemService.queryAll(criteria), response);
-//    }
-
-    @GetMapping
-    @ApiOperation("查询消息_系统")
-    @PreAuthorize("@el.check('messageSystem:list')")
-    public R<PageResult<MessageSystem>> queryMessageSystem(MessageSystemQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-//        return new ResponseEntity<>(messageSystemService.queryAll(criteria,page),HttpStatus.OK);
-        return R.success(messageSystemService.queryAll(criteria,page));
-    }
-
-//    @PostMapping
-//    @Log("新增消息_系统")
-//    @ApiOperation("新增消息_系统")
-//    @PreAuthorize("@el.check('messageSystem:add')")
-//    public ResponseEntity<Object> createMessageSystem(@Validated @RequestBody MessageSystem resources){
-//        messageSystemService.create(resources);
-//        return new ResponseEntity<>(HttpStatus.CREATED);
-//    }
-
-//    @PutMapping
-//    @Log("修改消息_系统")
-//    @ApiOperation("修改消息_系统")
-//    @PreAuthorize("@el.check('messageSystem:edit')")
-//    public ResponseEntity<Object> updateMessageSystem(@Validated @RequestBody MessageSystem resources){
-//        messageSystemService.update(resources);
-//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-//    }
-
-//    @DeleteMapping
-//    @Log("删除消息_系统")
-//    @ApiOperation("删除消息_系统")
-//    @PreAuthorize("@el.check('messageSystem:del')")
-//    public ResponseEntity<Object> deleteMessageSystem(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
-//        messageSystemService.deleteAll(ids);
-//        return new ResponseEntity<>(HttpStatus.OK);
-//    }
-
-    //查询一条系统消息
-    @GetMapping("/{id}")
-    @ApiOperation("查询一条系统消息")
-    public R<MessageSystem> getMessageSystem(@PathVariable Integer id){
-        MessageSystem messageSystem = messageSystemService.getById(id);
-//        return new ResponseEntity<>(messageSystem,HttpStatus.OK);
-        return R.success(messageSystem);
-    }
-    //插入一条系统消息 带两个参数start与end
-    @PostMapping()
-    @ApiOperation("插入一条系统消息")
-    public R<Object> insertMessageSystem(
-            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start,
-            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
-
-        // 创建 MessageSystem 对象
-        MessageSystem messageSystem = new MessageSystem();
-        messageSystem.setStartTime(new Timestamp(start.getTime()));
-        messageSystem.setEndTime(new Timestamp(end.getTime()));
-
-        // 调用服务层保存数据
-        messageSystemService.save(messageSystem);
-
-//        return new ResponseEntity<>(HttpStatus.OK);
-        return R.success("插入成功");
-    }
-
-    /**
-     * POST 该接口用于发送订阅消息。
-     *  data       请求参数
-     * openid     用户openId
-     * templateId 订阅模板id
-     * page       小程序跳转链接
-     */
-//    public void sendMessage(Map<String, Object> data, String openid, String templateId, String page) {
-//        JSONObject jsonObject = new JSONObject();
-//        if (wxEnabled) {
-//            String url = weiXinProperties.getSendMessage();
-//            url = url.replace("{accessToken}", getStableAccessToken());
-//            Map<String, Object> map = getSendMessageDto(data, openid, templateId, page);
-//            jsonObject = HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
-//        } else {
-//            jsonObject.put("message", "测试环境");
-//        }
-//        User user = userService.findByOpenid(openid);
-//        UserSubscribe sub = new UserSubscribe();
-//        sub.setSubType(templateId);
-//        sub.setUserId(user.getId());
-//        sub.setOpenid(openid);
-//        sub.setUsername(user.getUsername());
-//        sub.setSendMessage(JSONObject.toJSONString(data));
-//        sub.setSubMessage(jsonObject.toJSONString());
-//        subscribeService.save(sub);
-//    }
-    //调用微信发送消息接口sendMessage
-
-    //示例
-//    {
-//        "touser": "OPENID",
-//            "template_id": "TEMPLATE_ID",
-//            "page": "index",
-//            "data":{
-//        "phrase3": {
-//            "value": "审核通过"
-//        },
-//        "name1": {
-//            "value": "订阅"
-//        },
-//        "date2": {
-//            "value": "2019-12-25 09:42"
-//        }
-//    }
-//    }
-//todo  发送订阅消息   数据库暂未存储
-    @PostMapping("/sendMessage")
-    @ApiOperation("发送订阅消息")
-    public R<SendMessageRequestDto> sendMessage(@RequestBody SendMessageRequestDto request){
-        //打印request
-        //SendMessageRequestDto(touser=OPENID, template_id=TEMPLATE_ID, page=index, data={date2={"value":"2019-12-25 09:42"}, phrase3={"value":"审核通过"}, name1={"value":"订阅"}})
-        log.info("request:{}", request);
-        try {
-            weiXinService.sendMessage(request.getData(), request.getTouser(), request.getTemplate_id(), request.getPage());
-            return R.success(request);
-        } catch (Exception e) {
-            // 如果捕获到异常,返回错误信息
-            log.error("发送订阅消息失败", e);
-            return R.fail(request,"发送订阅消息失败 用真实数据:" + e.getMessage());
-        }
-    }
-
-
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesAdvertisementService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesAdvertisementService.java
new file mode 100644
index 0000000..d25fdda
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesAdvertisementService.java
@@ -0,0 +1,60 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesAdvertisement;
+import com.oying.modules.message.domain.dto.MesAdvertisementQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesAdvertisementService extends IService<MesAdvertisement> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesAdvertisement> queryAll(MesAdvertisementQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesAdvertisementDto>
+    */
+    List<MesAdvertisement> queryAll(MesAdvertisementQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesAdvertisement resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesAdvertisement resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesAdvertisement> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesCustomerCommentMsgService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesCustomerCommentMsgService.java
new file mode 100644
index 0000000..917267a
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesCustomerCommentMsgService.java
@@ -0,0 +1,80 @@
+package com.oying.modules.message.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.message.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+import com.oying.utils.PageResult;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author 李萌
+ * @description 服务接口
+ * @date 2025-07-25
+ **/
+public interface MesCustomerCommentMsgService extends IService<MesCustomerCommentMsg> {
+
+    /**
+     * 查询数据分页
+     *
+     * @param criteria 条件
+     * @param page     分页参数
+     * @return PageResult
+     */
+    PageResult<MesCustomerCommentMsg> queryAll(MesCustomerCommentMsgQueryCriteria criteria, Page<Object> page);
+
+    /**
+     * 查询所有数据不分页
+     *
+     * @param criteria 条件参数
+     * @return List<MesCustomerCommentMsgDto>
+     */
+    List<MesCustomerCommentMsg> queryAll(MesCustomerCommentMsgQueryCriteria criteria);
+
+    /**
+     * 创建
+     *
+     * @param resources /
+     */
+    void create(MesCustomerCommentMsg resources);
+
+    /**
+     * 编辑
+     *
+     * @param resources /
+     */
+    void update(MesCustomerCommentMsg resources);
+
+    /**
+     * 多选删除
+     *
+     * @param ids /
+     */
+    void deleteAll(List<Long> ids);
+
+    /**
+     * 导出数据
+     *
+     * @param all      待导出的数据
+     * @param response /
+     * @throws IOException /
+     */
+    void download(List<MesCustomerCommentMsg> all, HttpServletResponse response) throws IOException;
+
+    List<MesCustomerCommentMsgDTO> listCustomerComment(Long shopId);
+
+    //方法插入相应的数据
+    //一个店铺下多个订单 。  每个订单每个顾客留言
+    //插入参数 订单编号 留言内容 店铺ID
+    // 插入id, msg_record_id, shop_id, order_id, order_no, buyer_id, buyer_name, evaluation_id, replied, create_by, create_time, update_by, update_time, comment_time, comment_content, reply_content, ext_jump_url, int_jump_path
+
+    void insertOrderMsg(MesCustomerCommentMsg resources);
+
+    //插入具体字段  店铺id 订单编号 订单id 买家id 买家姓名 留言内容 回复内容
+    void insertOrderMsgDetail(Long shopId, Long orderId, String orderNo, String buyerId, String buyerName, String commentContent, String replyContent);
+
+}
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
new file mode 100644
index 0000000..c7ae0df
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
@@ -0,0 +1,114 @@
+package com.oying.modules.message.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+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;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author 李萌
+ * @description 服务接口
+ * @date 2025-07-25
+ **/
+public interface MesMsgRecordService extends IService<MesMsgRecord> {
+
+    /**
+     * 查询数据分页
+     *
+     * @param criteria 条件
+     * @param page     分页参数
+     * @return PageResult
+     */
+    PageResult<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+    /**
+     * 查询所有数据不分页
+     *
+     * @param criteria 条件参数
+     * @return List<MesMsgRecordDto>
+     */
+    List<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria);
+
+    /**
+     * 创建
+     *
+     * @param resources /
+     */
+    void create(MesMsgRecord resources);
+
+    /**
+     * 编辑
+     *
+     * @param resources /
+     */
+    void update(MesMsgRecord resources);
+
+    /**
+     * 多选删除
+     *
+     * @param ids /
+     */
+    void deleteAll(List<Long> ids);
+
+    /**
+     * 导出数据
+     *
+     * @param all      待导出的数据
+     * @param response /
+     * @throws IOException /
+     */
+    void download(List<MesMsgRecord> all, HttpServletResponse response) throws IOException;
+
+    List<MesMsgRecordQueryPollDto> PollMes(Long platform, Long mestype);
+
+    void batchMarkRead(Long platform, List<Long> msgIds);
+
+    PageResult<MesMsgRecordQuerySystemDto> queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+
+    List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content);
+
+    List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId);
+
+    List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId);
+
+    List<MesMsgRecordQueryOrderDto> queryorder(Long shopId);
+
+    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 name 订单属性 店铺号
+    void setBuyerStatusOrderSubmitted(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName);
+
+    //设置一个买家状态为送达     买家id name 订单属性 店铺号
+    void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, 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, MsgStatusEnum 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/MesMsgTemplateService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgTemplateService.java
new file mode 100644
index 0000000..b9dfb2f
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgTemplateService.java
@@ -0,0 +1,60 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesMsgTemplate;
+import com.oying.modules.message.domain.dto.MesMsgTemplateQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesMsgTemplateService extends IService<MesMsgTemplate> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesMsgTemplate> queryAll(MesMsgTemplateQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesMsgTemplateDto>
+    */
+    List<MesMsgTemplate> queryAll(MesMsgTemplateQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesMsgTemplate resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesMsgTemplate resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Integer> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesMsgTemplate> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesOrderEvaluationService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesOrderEvaluationService.java
new file mode 100644
index 0000000..1aa76f8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesOrderEvaluationService.java
@@ -0,0 +1,63 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesOrderEvaluation;
+import com.oying.modules.message.domain.dto.MesOrderEvaluationQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesOrderEvaluationService extends IService<MesOrderEvaluation> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesOrderEvaluation> queryAll(MesOrderEvaluationQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesOrderEvaluationDto>
+    */
+    List<MesOrderEvaluation> queryAll(MesOrderEvaluationQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesOrderEvaluation resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesOrderEvaluation resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesOrderEvaluation> all, HttpServletResponse response) throws IOException;
+
+    void addShopEvaluation(MesOrderEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesOrderItemEvaluationService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesOrderItemEvaluationService.java
new file mode 100644
index 0000000..cfb1de8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesOrderItemEvaluationService.java
@@ -0,0 +1,63 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesOrderItemEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.domain.dto.MesOrderItemEvaluationQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesOrderItemEvaluationService extends IService<MesOrderItemEvaluation> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesOrderItemEvaluation> queryAll(MesOrderItemEvaluationQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesOrderItemEvaluationDto>
+    */
+    List<MesOrderItemEvaluation> queryAll(MesOrderItemEvaluationQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesOrderItemEvaluation resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesOrderItemEvaluation resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesOrderItemEvaluation> all, HttpServletResponse response) throws IOException;
+
+    void addGoodsEvaluation(MesOrderItemEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesRiderEvaluationService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesRiderEvaluationService.java
new file mode 100644
index 0000000..ea21f0d
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesRiderEvaluationService.java
@@ -0,0 +1,63 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesRiderEvaluation;
+import com.oying.modules.message.domain.dto.MesRiderEvaluationQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesRiderEvaluationService extends IService<MesRiderEvaluation> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesRiderEvaluation> queryAll(MesRiderEvaluationQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesRiderEvaluationDto>
+    */
+    List<MesRiderEvaluation> queryAll(MesRiderEvaluationQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesRiderEvaluation resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesRiderEvaluation resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesRiderEvaluation> all, HttpServletResponse response) throws IOException;
+
+    void addRiderEvaluation(MesRiderEvaluationDto resources);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesShopReplyService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesShopReplyService.java
new file mode 100644
index 0000000..87a255b
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesShopReplyService.java
@@ -0,0 +1,60 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesShopReply;
+import com.oying.modules.message.domain.dto.MesShopReplyQueryCriteria;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @date 2025-07-25
+**/
+public interface MesShopReplyService extends IService<MesShopReply> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<MesShopReply> queryAll(MesShopReplyQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<MesShopReplyDto>
+    */
+    List<MesShopReply> queryAll(MesShopReplyQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(MesShopReply resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(MesShopReply resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<MesShopReply> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderBuyerService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderBuyerService.java
deleted file mode 100644
index 788bef2..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderBuyerService.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.oying.modules.message.service;
-
-import com.oying.modules.message.domain.MessageOrderBuyer;
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
-import java.util.Map;
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务接口
-* @author 李萌
-* @date 2025-05-20
-**/
-public interface MessageOrderBuyerService extends IService<MessageOrderBuyer> {
-
-    /**
-    * 查询数据分页
-    * @param criteria 条件
-    * @param page 分页参数
-    * @return PageResult
-    */
-    PageResult<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria, Page<Object> page);
-
-    /**
-    * 查询所有数据不分页
-    * @param criteria 条件参数
-    * @return List<MessageOrderBuyerDto>
-    */
-    List<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria);
-
-    /**
-    * 创建
-    * @param resources /
-    */
-    void create(MessageOrderBuyer resources);
-
-    /**
-    * 编辑
-    * @param resources /
-    */
-    void update(MessageOrderBuyer resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Integer> ids);
-
-    /**
-    * 导出数据
-    * @param all 待导出的数据
-    * @param response /
-    * @throws IOException /
-    */
-    void download(List<MessageOrderBuyer> all, HttpServletResponse response) throws IOException;
-
-    public MessageOrderBuyer findByOrderId(Integer orderId) ;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderLeaveService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderLeaveService.java
deleted file mode 100644
index f20e46e..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderLeaveService.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.oying.modules.message.service;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
-import java.util.Map;
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务接口
-* @author 李萌
-* @date 2025-05-20
-**/
-public interface MessageOrderLeaveService extends IService<MessageOrderLeave> {
-
-    /**
-    * 查询数据分页
-    * @param criteria 条件
-    * @param page 分页参数
-    * @return PageResult
-    */
-    PageResult<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria, Page<Object> page);
-
-    /**
-    * 查询所有数据不分页
-    * @param criteria 条件参数
-    * @return List<MessageOrderLeaveDto>
-    */
-    List<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria);
-
-    /**
-    * 创建
-    * @param resources /
-    */
-    void create(MessageOrderLeave resources);
-
-    /**
-    * 编辑
-    * @param resources /
-    */
-//    void update(MessageOrderLeave resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Integer> ids);
-
-    /**
-    * 导出数据
-    * @param all 待导出的数据
-    * @param response /
-    * @throws IOException /
-    */
-    void download(List<MessageOrderLeave> all, HttpServletResponse response) throws IOException;
-
-    /**
-     * 根据订单ID查找留言信息
-     * @param orderId 订单ID
-     * @return 匹配的留言记录,若不存在则返回 null
-     */
-    public MessageOrderLeave findByOrderId(Integer orderId) ;
-
-}
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
deleted file mode 100644
index db8686c..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.oying.modules.message.service;
-
-import com.google.common.annotations.Beta;
-import com.oying.modules.message.domain.MessageOrderSeller;
-import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
-
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务接口
-* @author 李萌
-* @date 2025-05-20
-**/
-public interface MessageOrderSellerService extends IService<MessageOrderSeller> {
-
-    /**
-    * 查询数据分页
-    * @param criteria 条件
-    * @param page 分页参数
-    * @return PageResult
-    */
-    PageResult<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria, Page<Object> page);
-
-    /**
-    * 查询所有数据不分页
-    * @param criteria 条件参数
-    * @return List<MessageOrderSellerDto>
-    */
-    List<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria);
-
-    /**
-    * 创建
-    * @param resources /
-    */
-    void create(MessageOrderSeller resources);
-
-    /**
-    * 编辑
-    * @param resources /
-    */
-    void update(MessageOrderSeller resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Integer> ids);
-
-    /**
-    * 导出数据
-    * @param all 待导出的数据
-    * @param response /
-    * @throws IOException /
-    */
-    void download(List<MessageOrderSeller> all, HttpServletResponse response) throws IOException;
-    public MessageOrderSeller findByOrderId(Integer orderId) ;
-
-    List<MessageOrderSeller> findByStoreId(String storeId);
-
-    boolean updateMessageOrderSellerRead(Integer orderId);
-
-    /**
-     * 保存或更新 MessageOrderSeller 记录。
-     * <p>
-     * 该方法根据传入的 MessageOrderSeller 对象,将数据插入到数据库中。
-     * 如果记录已存在,则更新;如果不存在,则插入新记录。
-     * </p>
-     * <p>
-     * 必须字段:
-     * - orderId:订单 ID
-     * - storeId:店铺 ID
-     * </p>
-     * <p>
-     * 可选字段:
-     * - messageType:消息类型 :  暂未使用
-     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单" 即com.oying.modules.message.common.OrderStatusEnum
-     * - link:链接
-     * - flag:标志字段(默认值为未读 0)
-     * </p>
-     *
-     * @param resources MessageOrderSeller 对象,包含需要保存或更新的数据。
-     * @return true 表示保存成功,false 表示保存失败。
-     */
-    @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/MessageSystemAdvertiseService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageSystemAdvertiseService.java
deleted file mode 100644
index 2fde73e..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageSystemAdvertiseService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.oying.modules.message.service;
-
-import com.oying.modules.message.domain.MessageSystemAdvertise;
-import com.oying.modules.message.domain.dto.MessageSystemAdvertiseQueryCriteria;
-import java.util.Map;
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务接口
-* @author leomon
-* @date 2025-06-05
-**/
-public interface MessageSystemAdvertiseService extends IService<MessageSystemAdvertise> {
-
-    /**
-    * 查询数据分页
-    * @param criteria 条件
-    * @param page 分页参数
-    * @return PageResult
-    */
-    PageResult<MessageSystemAdvertise> queryAll(MessageSystemAdvertiseQueryCriteria criteria, Page<Object> page);
-
-    /**
-    * 查询所有数据不分页
-    * @param criteria 条件参数
-    * @return List<MessageSystemAdvertiseDto>
-    */
-    List<MessageSystemAdvertise> queryAll(MessageSystemAdvertiseQueryCriteria criteria);
-
-    /**
-    * 创建
-    * @param resources /
-    */
-    void create(MessageSystemAdvertise resources);
-
-    /**
-    * 编辑
-    * @param resources /
-    */
-    void update(MessageSystemAdvertise resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Long> ids);
-
-    /**
-    * 导出数据
-    * @param all 待导出的数据
-    * @param response /
-    * @throws IOException /
-    */
-    void download(List<MessageSystemAdvertise> all, HttpServletResponse response) throws IOException;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MessageSystemService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageSystemService.java
deleted file mode 100644
index 38c4ccb..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/MessageSystemService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.oying.modules.message.service;
-
-import com.oying.modules.message.domain.MessageSystem;
-import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
-
-import java.util.Date;
-import java.util.Map;
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
- * @description 服务接口
- * @author 李萌
- * @date 2025-05-20
- **/
-public interface MessageSystemService extends IService<MessageSystem> {
-
-    /**
-     * 查询数据分页
-     * @param criteria 条件
-     * @param page 分页参数
-     * @return PageResult
-     */
-    PageResult<MessageSystem> queryAll(MessageSystemQueryCriteria criteria, Page<Object> page);
-
-    /**
-     * 查询所有数据不分页
-     * @param criteria 条件参数
-     * @return List<MessageSystemDto>
-     */
-    List<MessageSystem> queryAll(MessageSystemQueryCriteria criteria);
-
-    /**
-     * 创建
-     * @param resources /
-     */
-    void create(MessageSystem resources);
-
-    /**
-     * 编辑
-     * @param resources /
-     */
-    void update(MessageSystem resources);
-
-    /**
-     * 多选删除
-     * @param ids /
-     */
-    void deleteAll(List<Integer> ids);
-
-    /**
-     * 导出数据
-     * @param all 待导出的数据
-     * @param response /
-     * @throws IOException /
-     */
-    void download(List<MessageSystem> all, HttpServletResponse response) throws IOException;
-
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesAdvertisementServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesAdvertisementServiceImpl.java
new file mode 100644
index 0000000..93a1712
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesAdvertisementServiceImpl.java
@@ -0,0 +1,93 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesAdvertisement;
+import com.oying.utils.FileUtil;
+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.MesAdvertisementService;
+import com.oying.modules.message.domain.dto.MesAdvertisementQueryCriteria;
+import com.oying.modules.message.mapper.MesAdvertisementMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author 李萌
+* @date 2025-07-25
+**/
+@Service
+@RequiredArgsConstructor
+public class MesAdvertisementServiceImpl extends ServiceImpl<MesAdvertisementMapper, MesAdvertisement> implements MesAdvertisementService {
+
+    private final MesAdvertisementMapper mesAdvertisementMapper;
+
+    @Override
+    public PageResult<MesAdvertisement> queryAll(MesAdvertisementQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(mesAdvertisementMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesAdvertisement> queryAll(MesAdvertisementQueryCriteria criteria){
+        return mesAdvertisementMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesAdvertisement resources) {
+        mesAdvertisementMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesAdvertisement resources) {
+        MesAdvertisement mesAdvertisement = getById(resources.getId());
+        mesAdvertisement.copy(resources);
+        mesAdvertisementMapper.updateById(mesAdvertisement);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesAdvertisementMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesAdvertisement> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesAdvertisement mesAdvertisement : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("广告标题", mesAdvertisement.getTitle());
+            map.put("副标题/简介", mesAdvertisement.getSubTitle());
+            map.put("广告正文(支持富文本)", mesAdvertisement.getContent());
+            map.put("封面图URL", mesAdvertisement.getCoverImg());
+            map.put("Banner图URL(冗余)", mesAdvertisement.getBannerImg());
+            map.put("投放渠道 1小程序 2APP 3全平台", mesAdvertisement.getPlatform());
+            map.put("跳转类型 1内部 2外部", mesAdvertisement.getJumpType());
+            map.put("跳转地址(内部路径或外部链接)", mesAdvertisement.getJumpUrl());
+            map.put("跳转携带参数(JSON)", mesAdvertisement.getJumpParams());
+            map.put("排序值 越大越前", mesAdvertisement.getSortOrder());
+            map.put("是否置顶 0否 1是", mesAdvertisement.getIsTop());
+            map.put("状态 1启用 2禁用", mesAdvertisement.getStatus());
+            map.put("公告开始时间", mesAdvertisement.getEffectiveTime());
+            map.put("公告结束时间", mesAdvertisement.getExpireTime());
+            map.put("点击次数(冗余)", mesAdvertisement.getClickCount());
+            map.put("展示次数(冗余)", mesAdvertisement.getShowCount());
+            map.put("备注", mesAdvertisement.getRemark());
+            map.put(" createBy",  mesAdvertisement.getCreateBy());
+            map.put(" createTime",  mesAdvertisement.getCreateTime());
+            map.put(" updateBy",  mesAdvertisement.getUpdateBy());
+            map.put(" updateTime",  mesAdvertisement.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java
new file mode 100644
index 0000000..73afd17
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java
@@ -0,0 +1,168 @@
+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.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+import com.oying.modules.message.mapper.MesCustomerCommentMsgMapper;
+import com.oying.modules.message.service.MesCustomerCommentMsgService;
+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 javax.servlet.http.HttpServletResponse;
+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 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesCustomerCommentMsgServiceImpl extends ServiceImpl<MesCustomerCommentMsgMapper, MesCustomerCommentMsg> implements MesCustomerCommentMsgService {
+
+    private final MesCustomerCommentMsgMapper mesCustomerCommentMsgMapper;
+
+    @Override
+    public PageResult<MesCustomerCommentMsg> queryAll(MesCustomerCommentMsgQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesCustomerCommentMsgMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesCustomerCommentMsg> queryAll(MesCustomerCommentMsgQueryCriteria criteria) {
+        return mesCustomerCommentMsgMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesCustomerCommentMsg resources) {
+        mesCustomerCommentMsgMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesCustomerCommentMsg resources) {
+        MesCustomerCommentMsg mesCustomerCommentMsg = getById(resources.getId());
+        mesCustomerCommentMsg.copy(resources);
+        mesCustomerCommentMsgMapper.updateById(mesCustomerCommentMsg);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesCustomerCommentMsgMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesCustomerCommentMsg> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesCustomerCommentMsg mesCustomerCommentMsg : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("对应 mes_msg_record.id", mesCustomerCommentMsg.getMsgRecordId());
+            map.put("店铺ID", mesCustomerCommentMsg.getShopId());
+            map.put("订单ID", mesCustomerCommentMsg.getOrderId());
+            map.put("订单编号 冗余", mesCustomerCommentMsg.getOrderNo());
+            map.put("买家用户ID", mesCustomerCommentMsg.getBuyerId());
+            map.put("买家昵称 冗余", mesCustomerCommentMsg.getBuyerName());
+            map.put("评价ID 冗余", mesCustomerCommentMsg.getEvaluationId());
+            map.put("商户是否已回复 0=未回复 1=已回复", mesCustomerCommentMsg.getReplied());
+            map.put("创建人", mesCustomerCommentMsg.getCreateBy());
+            map.put("创建时间", mesCustomerCommentMsg.getCreateTime());
+            map.put("更新人", mesCustomerCommentMsg.getUpdateBy());
+            map.put("更新时间", mesCustomerCommentMsg.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    public List<MesCustomerCommentMsgDTO> listCustomerComment(Long shopId) {
+        return mesCustomerCommentMsgMapper.listCustomerComment(shopId);
+    }
+
+
+    //订单消息 插入对应字段
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOrderMsg(MesCustomerCommentMsg resources) {
+        //先临时对象
+        MesCustomerCommentMsg mesCustomerCommentMsg = new MesCustomerCommentMsg();
+        //对象属性非空则插入
+        if (resources.getMsgRecordId() != null) {
+            mesCustomerCommentMsg.setMsgRecordId(resources.getMsgRecordId());
+        }
+        if (resources.getShopId() != null) {
+            mesCustomerCommentMsg.setShopId(resources.getShopId());
+        }
+        if (resources.getOrderId() != null) {
+            mesCustomerCommentMsg.setOrderId(resources.getOrderId());
+        }
+        if (resources.getOrderNo() != null) {
+            mesCustomerCommentMsg.setOrderNo(resources.getOrderNo());
+        }
+        if (resources.getBuyerId() != null) {
+            mesCustomerCommentMsg.setBuyerId(resources.getBuyerId());
+        }
+        if (resources.getBuyerName() != null) {
+            mesCustomerCommentMsg.setBuyerName(resources.getBuyerName());
+        }
+
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOrderMsgDetail(Long shopId, Long orderId, String orderNo, String buyerId, String buyerName, String commentContent, String replyContent) {
+        // 插入具体字段  店铺id 订单编号 订单id 买家id 买家姓名 留言内容 回复内容
+        // 先临时对象
+        MesCustomerCommentMsg mesCustomerCommentMsg = new MesCustomerCommentMsg();
+
+        // 设置对象属性 非空则插入 注意要有异常判断
+        if (shopId != null) {
+            mesCustomerCommentMsg.setShopId(shopId);
+        }
+        if (orderId != null) {
+            mesCustomerCommentMsg.setOrderId(orderId);
+        }
+        if (orderNo != null) {
+            mesCustomerCommentMsg.setOrderNo(orderNo);
+        }
+        if (buyerId != null) {
+            mesCustomerCommentMsg.setBuyerId(buyerId);
+        }
+        if (buyerName != null) {
+            mesCustomerCommentMsg.setBuyerName(buyerName);
+        }
+        if (commentContent != null) {
+            mesCustomerCommentMsg.setCommentContent(commentContent);
+        }
+        if (replyContent != null) {
+            mesCustomerCommentMsg.setReplyContent(replyContent);
+            // 如果有回复内容,则标记为已回复
+            mesCustomerCommentMsg.setReplied(1);
+        } else {
+            // 如果没有回复内容,则标记为未回复
+            mesCustomerCommentMsg.setReplied(0);
+        }
+
+        // 设置创建时间
+// 设置创建时间 - 使用 Timestamp 的标准写法
+        mesCustomerCommentMsg.setCreateTime(new Timestamp(System.currentTimeMillis()));
+
+
+        // 插入数据
+        mesCustomerCommentMsgMapper.insert(mesCustomerCommentMsg);
+    }
+
+}
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
new file mode 100644
index 0000000..c3f6531
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
@@ -0,0 +1,312 @@
+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.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.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 javax.servlet.http.HttpServletResponse;
+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 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesMsgRecordServiceImpl extends ServiceImpl<MesMsgRecordMapper, MesMsgRecord> implements MesMsgRecordService {
+
+    private final MesMsgRecordMapper mesMsgRecordMapper;
+
+    @Override
+    public PageResult<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesMsgRecordMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria) {
+        return mesMsgRecordMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesMsgRecord resources) {
+        mesMsgRecordMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesMsgRecord resources) {
+        MesMsgRecord mesMsgRecord = getById(resources.getId());
+        mesMsgRecord.copy(resources);
+        mesMsgRecordMapper.updateById(mesMsgRecord);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesMsgRecordMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesMsgRecord> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesMsgRecord mesMsgRecord : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("模板ID 可无", mesMsgRecord.getTemplateId());
+            map.put("接收人ID", mesMsgRecord.getReceiverId());
+            map.put("1=买家 2=商户 3=骑手", mesMsgRecord.getPlatform());
+            map.put("同模板type", mesMsgRecord.getMsgType());
+            map.put("最终标题", mesMsgRecord.getTitle());
+            map.put("最终内容", mesMsgRecord.getContent());
+            map.put("业务ID 例如订单ID", mesMsgRecord.getBizId());
+            map.put("业务类型 ORDER/EVALUATION 等", mesMsgRecord.getBizType());
+            map.put("已读 0=未读 1=已读", mesMsgRecord.getIsRead());
+            map.put("阅读时间", mesMsgRecord.getReadTime());
+            map.put("扩展字段 存跳转链接等", mesMsgRecord.getExtra());
+            map.put("创建人", mesMsgRecord.getCreateBy());
+            map.put("创建时间", mesMsgRecord.getCreateTime());
+            map.put("更新人", mesMsgRecord.getUpdateBy());
+            map.put("更新时间", mesMsgRecord.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    public List<MesMsgRecordQueryPollDto> PollMes(Long platform, Long mestype) {
+        return mesMsgRecordMapper.PollMes(platform, mestype);
+    }
+
+    @Override
+    public void batchMarkRead(Long platform, List<Long> msgIds) {
+        mesMsgRecordMapper.batchMarkRead(platform, msgIds);
+    }
+
+    @Override
+    public PageResult<MesMsgRecordQuerySystemDto> queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesMsgRecordMapper.queryAllSysNotice(criteria, page));
+    }
+
+    @Override
+    public List<MesMsgRecordQueryOrderDto> queryorder(Long shopId) {
+        return mesMsgRecordMapper.queryorder(shopId);
+    }
+
+    @Override
+    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(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
+        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_ACCEPTED.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(MsgStatusEnum.MERCHANT_ACCEPTED.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_DELIVERED.getValue()); // 使用枚举的描述作为消息内容
+        record.setContentKey(String.valueOf(MsgStatusEnum.BUYER_ORDER_DELIVERED.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_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_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);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgTemplateServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgTemplateServiceImpl.java
new file mode 100644
index 0000000..5af6a19
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgTemplateServiceImpl.java
@@ -0,0 +1,83 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesMsgTemplate;
+import com.oying.exception.EntityExistException;
+import com.oying.utils.FileUtil;
+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.MesMsgTemplateService;
+import com.oying.modules.message.domain.dto.MesMsgTemplateQueryCriteria;
+import com.oying.modules.message.mapper.MesMsgTemplateMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author 李萌
+* @date 2025-07-25
+**/
+@Service
+@RequiredArgsConstructor
+public class MesMsgTemplateServiceImpl extends ServiceImpl<MesMsgTemplateMapper, MesMsgTemplate> implements MesMsgTemplateService {
+
+    private final MesMsgTemplateMapper mesMsgTemplateMapper;
+
+    @Override
+    public PageResult<MesMsgTemplate> queryAll(MesMsgTemplateQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(mesMsgTemplateMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesMsgTemplate> queryAll(MesMsgTemplateQueryCriteria criteria){
+        return mesMsgTemplateMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesMsgTemplate resources) {
+        mesMsgTemplateMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesMsgTemplate resources) {
+        MesMsgTemplate mesMsgTemplate = getById(resources.getId());
+        mesMsgTemplate.copy(resources);
+        mesMsgTemplateMapper.updateById(mesMsgTemplate);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Integer> ids) {
+        mesMsgTemplateMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesMsgTemplate> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesMsgTemplate mesMsgTemplate : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("模板编码", mesMsgTemplate.getCode());
+            map.put("模板名称", mesMsgTemplate.getName());
+            map.put("标题模板 支持占位符", mesMsgTemplate.getTitleTpl());
+            map.put("内容模板 支持占位符", mesMsgTemplate.getContentTpl());
+            map.put("1=系统 2=订单 3=评价/留言", mesMsgTemplate.getType());
+            map.put("1=买家 2=商户 3=骑手", mesMsgTemplate.getPlatform());
+            map.put("创建人", mesMsgTemplate.getCreateBy());
+            map.put("创建时间", mesMsgTemplate.getCreateTime());
+            map.put("更新人", mesMsgTemplate.getUpdateBy());
+            map.put("更新时间", mesMsgTemplate.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java
new file mode 100644
index 0000000..f59c7eb
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java
@@ -0,0 +1,99 @@
+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.domain.MesOrderEvaluation;
+import com.oying.modules.message.domain.dto.MesOrderEvaluationQueryCriteria;
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+import com.oying.modules.message.mapper.MesOrderEvaluationMapper;
+import com.oying.modules.message.service.MesOrderEvaluationService;
+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 javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesOrderEvaluationServiceImpl extends ServiceImpl<MesOrderEvaluationMapper, MesOrderEvaluation> implements MesOrderEvaluationService {
+
+    private final MesOrderEvaluationMapper mesOrderEvaluationMapper;
+
+    @Override
+    public PageResult<MesOrderEvaluation> queryAll(MesOrderEvaluationQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesOrderEvaluationMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesOrderEvaluation> queryAll(MesOrderEvaluationQueryCriteria criteria) {
+        return mesOrderEvaluationMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesOrderEvaluation resources) {
+        mesOrderEvaluationMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesOrderEvaluation resources) {
+        MesOrderEvaluation mesOrderEvaluation = getById(resources.getId());
+        mesOrderEvaluation.copy(resources);
+        mesOrderEvaluationMapper.updateById(mesOrderEvaluation);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesOrderEvaluationMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesOrderEvaluation> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesOrderEvaluation mesOrderEvaluation : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("订单ID", mesOrderEvaluation.getOrderId());
+            map.put("买家用户ID", mesOrderEvaluation.getBuyerId());
+            map.put("订单编号 冗余字段", mesOrderEvaluation.getOrderNo());
+            map.put("店铺ID 冗余字段", mesOrderEvaluation.getShopId());
+            map.put("店铺名称 冗余字段", mesOrderEvaluation.getShopName());
+            map.put("骑手ID", mesOrderEvaluation.getRiderId());
+            map.put("骑手姓名 冗余字段", mesOrderEvaluation.getRiderName());
+            map.put("商品评分 0-5,支持半星", mesOrderEvaluation.getGoodsScore());
+            map.put("商品评价内容", mesOrderEvaluation.getGoodsContent());
+            map.put("商品评价图片 最多5张 存JSON数组", mesOrderEvaluation.getGoodsImgs());
+            map.put("店铺服务评分", mesOrderEvaluation.getShopScore());
+            map.put("店铺服务评价内容", mesOrderEvaluation.getShopContent());
+            map.put("骑手服务评分", mesOrderEvaluation.getRiderScore());
+            map.put("骑手服务评价内容", mesOrderEvaluation.getRiderContent());
+            map.put("买家删除评价 0=正常 1=已删除", mesOrderEvaluation.getIsDeleted());
+            map.put("创建人", mesOrderEvaluation.getCreateBy());
+            map.put("创建时间", mesOrderEvaluation.getCreateTime());
+            map.put("更新人", mesOrderEvaluation.getUpdateBy());
+            map.put("更新时间", mesOrderEvaluation.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void addShopEvaluation(MesOrderEvaluationDto resources) {
+        mesOrderEvaluationMapper.addShopEvaluation(resources);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java
new file mode 100644
index 0000000..06795d9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java
@@ -0,0 +1,92 @@
+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.domain.MesOrderItemEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.domain.dto.MesOrderItemEvaluationQueryCriteria;
+import com.oying.modules.message.mapper.MesOrderItemEvaluationMapper;
+import com.oying.modules.message.service.MesOrderItemEvaluationService;
+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 javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesOrderItemEvaluationServiceImpl extends ServiceImpl<MesOrderItemEvaluationMapper, MesOrderItemEvaluation> implements MesOrderItemEvaluationService {
+
+    private final MesOrderItemEvaluationMapper mesOrderItemEvaluationMapper;
+
+    @Override
+    public PageResult<MesOrderItemEvaluation> queryAll(MesOrderItemEvaluationQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesOrderItemEvaluationMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesOrderItemEvaluation> queryAll(MesOrderItemEvaluationQueryCriteria criteria) {
+        return mesOrderItemEvaluationMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesOrderItemEvaluation resources) {
+        mesOrderItemEvaluationMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesOrderItemEvaluation resources) {
+        MesOrderItemEvaluation mesOrderItemEvaluation = getById(resources.getId());
+        mesOrderItemEvaluation.copy(resources);
+        mesOrderItemEvaluationMapper.updateById(mesOrderItemEvaluation);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesOrderItemEvaluationMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesOrderItemEvaluation> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesOrderItemEvaluation mesOrderItemEvaluation : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("对应 mes_order_evaluation.id", mesOrderItemEvaluation.getOrderEvalId());
+            map.put("订单明细ID", mesOrderItemEvaluation.getOrderItemId());
+            map.put("商品ID", mesOrderItemEvaluation.getGoodsId());
+            map.put("商品名称 冗余", mesOrderItemEvaluation.getGoodsName());
+            map.put("商品主图 冗余", mesOrderItemEvaluation.getGoodsPic());
+            map.put("商品单项评分", mesOrderItemEvaluation.getScore());
+            map.put("评价内容", mesOrderItemEvaluation.getContent());
+            map.put("评价图片JSON 最多5张", mesOrderItemEvaluation.getImgs());
+            map.put("创建人", mesOrderItemEvaluation.getCreateBy());
+            map.put("创建时间", mesOrderItemEvaluation.getCreateTime());
+            map.put("更新人", mesOrderItemEvaluation.getUpdateBy());
+            map.put("更新时间", mesOrderItemEvaluation.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addGoodsEvaluation(MesOrderItemEvaluationDto resources) {
+        mesOrderItemEvaluationMapper.addGoodsEvaluation(resources);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesRiderEvaluationServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesRiderEvaluationServiceImpl.java
new file mode 100644
index 0000000..166dfe2
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesRiderEvaluationServiceImpl.java
@@ -0,0 +1,91 @@
+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.domain.MesRiderEvaluation;
+import com.oying.modules.message.domain.dto.MesRiderEvaluationQueryCriteria;
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+import com.oying.modules.message.mapper.MesRiderEvaluationMapper;
+import com.oying.modules.message.service.MesRiderEvaluationService;
+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 javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesRiderEvaluationServiceImpl extends ServiceImpl<MesRiderEvaluationMapper, MesRiderEvaluation> implements MesRiderEvaluationService {
+
+    private final MesRiderEvaluationMapper mesRiderEvaluationMapper;
+
+    @Override
+    public PageResult<MesRiderEvaluation> queryAll(MesRiderEvaluationQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(mesRiderEvaluationMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesRiderEvaluation> queryAll(MesRiderEvaluationQueryCriteria criteria) {
+        return mesRiderEvaluationMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesRiderEvaluation resources) {
+        mesRiderEvaluationMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesRiderEvaluation resources) {
+        MesRiderEvaluation mesRiderEvaluation = getById(resources.getId());
+        mesRiderEvaluation.copy(resources);
+        mesRiderEvaluationMapper.updateById(mesRiderEvaluation);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesRiderEvaluationMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesRiderEvaluation> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesRiderEvaluation mesRiderEvaluation : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("订单ID", mesRiderEvaluation.getOrderId());
+            map.put("订单编号 冗余", mesRiderEvaluation.getOrderNo());
+            map.put("骑手ID", mesRiderEvaluation.getRiderId());
+            map.put("骑手姓名 冗余", mesRiderEvaluation.getRiderName());
+            map.put("买家用户ID", mesRiderEvaluation.getBuyerId());
+            map.put("骑手服务评分", mesRiderEvaluation.getScore());
+            map.put("评价内容", mesRiderEvaluation.getContent());
+            map.put("创建人", mesRiderEvaluation.getCreateBy());
+            map.put("创建时间", mesRiderEvaluation.getCreateTime());
+            map.put("更新人", mesRiderEvaluation.getUpdateBy());
+            map.put("更新时间", mesRiderEvaluation.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addRiderEvaluation(MesRiderEvaluationDto resources) {
+        mesRiderEvaluationMapper.addRiderEvaluation(resources);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesShopReplyServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesShopReplyServiceImpl.java
new file mode 100644
index 0000000..fb9da35
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesShopReplyServiceImpl.java
@@ -0,0 +1,79 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesShopReply;
+import com.oying.utils.FileUtil;
+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.MesShopReplyService;
+import com.oying.modules.message.domain.dto.MesShopReplyQueryCriteria;
+import com.oying.modules.message.mapper.MesShopReplyMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author 李萌
+* @date 2025-07-25
+**/
+@Service
+@RequiredArgsConstructor
+public class MesShopReplyServiceImpl extends ServiceImpl<MesShopReplyMapper, MesShopReply> implements MesShopReplyService {
+
+    private final MesShopReplyMapper mesShopReplyMapper;
+
+    @Override
+    public PageResult<MesShopReply> queryAll(MesShopReplyQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(mesShopReplyMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<MesShopReply> queryAll(MesShopReplyQueryCriteria criteria){
+        return mesShopReplyMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(MesShopReply resources) {
+        mesShopReplyMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MesShopReply resources) {
+        MesShopReply mesShopReply = getById(resources.getId());
+        mesShopReply.copy(resources);
+        mesShopReplyMapper.updateById(mesShopReply);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        mesShopReplyMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<MesShopReply> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (MesShopReply mesShopReply : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("mes_order_evaluation.id", mesShopReply.getEvaluationId());
+            map.put("1=商品评价回复 2=店铺服务评价回复", mesShopReply.getReplyType());
+            map.put("回复内容", mesShopReply.getContent());
+            map.put("商户ID", mesShopReply.getCreateBy());
+            map.put("创建时间", mesShopReply.getCreateTime());
+            map.put("更新人", mesShopReply.getUpdateBy());
+            map.put("更新时间", mesShopReply.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderBuyerServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderBuyerServiceImpl.java
deleted file mode 100644
index 212e818..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderBuyerServiceImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.oying.modules.message.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.modules.message.domain.MessageOrderBuyer;
-import com.oying.utils.FileUtil;
-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.MessageOrderBuyerService;
-import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
-import com.oying.modules.message.mapper.MessageOrderBuyerMapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务实现
-* @author 李萌
-* @date 2025-05-20
-**/
-@Service
-@RequiredArgsConstructor
-public class MessageOrderBuyerServiceImpl extends ServiceImpl<MessageOrderBuyerMapper, MessageOrderBuyer> implements MessageOrderBuyerService {
-
-    private final MessageOrderBuyerMapper messageOrderBuyerMapper;
-
-    @Override
-    public PageResult<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria, Page<Object> page){
-        return PageUtil.toPage(messageOrderBuyerMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria){
-        return messageOrderBuyerMapper.findAll(criteria);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(MessageOrderBuyer resources) {
-        messageOrderBuyerMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void update(MessageOrderBuyer resources) {
-        MessageOrderBuyer messageOrderBuyer = getById(resources.getId());
-        messageOrderBuyer.copy(resources);
-        messageOrderBuyerMapper.updateById(messageOrderBuyer);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Integer> ids) {
-        messageOrderBuyerMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<MessageOrderBuyer> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (MessageOrderBuyer messageOrderBuyer : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put("订单ID", messageOrderBuyer.getOrderId());
-            map.put("消息类型(订单状态变化、订单送达)", messageOrderBuyer.getMessageType());
-            map.put("消息内容", messageOrderBuyer.getMessageContent());
-            map.put("跳转链接", messageOrderBuyer.getLink());
-            map.put("创建时间", messageOrderBuyer.getCreateTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-
-    @Override
-    public MessageOrderBuyer findByOrderId(Integer orderId) {
-        return baseMapper.selectOne(new QueryWrapper<MessageOrderBuyer>().eq("order_id", orderId));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderLeaveServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderLeaveServiceImpl.java
deleted file mode 100644
index 9d28813..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderLeaveServiceImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.oying.modules.message.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.utils.FileUtil;
-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.MessageOrderLeaveService;
-import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
-import com.oying.modules.message.mapper.MessageOrderLeaveMapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务实现
-* @author 李萌
-* @date 2025-05-20
-**/
-@Service
-@RequiredArgsConstructor
-public class MessageOrderLeaveServiceImpl extends ServiceImpl<MessageOrderLeaveMapper, MessageOrderLeave> implements MessageOrderLeaveService {
-
-    private final MessageOrderLeaveMapper messageOrderLeaveMapper;
-
-    @Override
-    public PageResult<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria, Page<Object> page){
-        return PageUtil.toPage(messageOrderLeaveMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria){
-        return messageOrderLeaveMapper.findAll(criteria);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(MessageOrderLeave resources) {
-        messageOrderLeaveMapper.insert(resources);
-    }
-
-//    @Override
-//    @Transactional(rollbackFor = Exception.class)
-//    public void update(MessageOrderLeave resources) {
-//        MessageOrderLeave messageOrderLeave = getById(resources.getId());
-//        messageOrderLeave.copy(resources);
-//        messageOrderLeaveMapper.updateById(messageOrderLeave);
-//    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Integer> ids) {
-        messageOrderLeaveMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<MessageOrderLeave> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (MessageOrderLeave messageOrderLeave : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put("订单ID", messageOrderLeave.getOrderId());
-            map.put("顾客评价内容", messageOrderLeave.getCustomerReview());
-            map.put("商家回复内容", messageOrderLeave.getSellerReply());
-            map.put("跳转链接", messageOrderLeave.getLink());
-            map.put("创建时间", messageOrderLeave.getCreateTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-
-    /**
-     * 根据订单ID查找留言信息
-     * @param orderId 订单ID
-     * @return 匹配的留言记录,若不存在则返回 null
-     */
-    public MessageOrderLeave findByOrderId(Integer orderId) {
-        return baseMapper.selectOne(new QueryWrapper<MessageOrderLeave>()
-                .eq("order_id", orderId));
-    }
-
-}
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
deleted file mode 100644
index a248ec6..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.oying.modules.message.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.modules.message.domain.MessageOrderSeller;
-import com.oying.utils.FileUtil;
-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.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;
-import com.oying.utils.PageUtil;
-
-import java.util.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务实现
-* @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){
-        return PageUtil.toPage(messageOrderSellerMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria){
-        return messageOrderSellerMapper.findAll(criteria);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(MessageOrderSeller resources) {
-        messageOrderSellerMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void update(MessageOrderSeller resources) {
-        MessageOrderSeller messageOrderSeller = getById(resources.getId());
-        messageOrderSeller.copy(resources);
-        messageOrderSellerMapper.updateById(messageOrderSeller);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Integer> ids) {
-        messageOrderSellerMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<MessageOrderSeller> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (MessageOrderSeller messageOrderSeller : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put(" orderId",  messageOrderSeller.getOrderId());
-            map.put(" messageType",  messageOrderSeller.getMessageType());
-            map.put(" messageContent",  messageOrderSeller.getMessageContent());
-            map.put(" link",  messageOrderSeller.getLink());
-            map.put(" createTime",  messageOrderSeller.getCreateTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-
-    @Override
-    public MessageOrderSeller findByOrderId(Integer orderId) {
-        return baseMapper.selectOne(new QueryWrapper<MessageOrderSeller>().eq("order_id", orderId));
-    }
-
-    @Override
-    public List<MessageOrderSeller> findByStoreId(String storeId) {
-        return messageOrderSellerMapper.findByStoreId(storeId);
-    }
-
-    @Override
-    public boolean updateMessageOrderSellerRead(Integer orderId) {
-        return messageOrderSellerMapper.updateMessageOrderSellerRead(orderId);
-    }
-
-    /**
-     * 保存或更新 MessageOrderSeller 记录。
-     * <p>
-     * 该方法根据传入的 MessageOrderSeller 对象,将数据插入到数据库中。
-     * 如果记录已存在,则更新;如果不存在,则插入新记录。
-     * </p>
-     * <p>
-     * 必须字段:
-     * - orderId:订单 ID
-     * - storeId:店铺 ID
-     * </p>
-     * <p>
-     * 可选字段:
-     * - messageType:消息类型 : 暂时不用
-     * - messageContent:消息内容 :  "订单已提交"   :"支付成功"   商家已接单   骑手已接单".......com.oying.modules.message.common.OrderStatusEnum
-     * - link:链接
-     * - flag:标志字段(默认值为未读 0)
-     * </p>
-     *
-     * @param resources MessageOrderSeller 对象,包含需要保存或更新的数据。
-     * @return true 表示保存成功,false 表示保存失败。
-     *
-     * 目前插入orderId   storeId messageContent即可,其他保留---------
-     */
-    @Override
-    public boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller 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/java/com/oying/modules/message/service/impl/MessageSystemAdvertiseServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemAdvertiseServiceImpl.java
deleted file mode 100644
index e298a07..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemAdvertiseServiceImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.oying.modules.message.service.impl;
-
-import com.oying.modules.message.domain.MessageSystemAdvertise;
-import com.oying.utils.FileUtil;
-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.MessageSystemAdvertiseService;
-import com.oying.modules.message.domain.dto.MessageSystemAdvertiseQueryCriteria;
-import com.oying.modules.message.mapper.MessageSystemAdvertiseMapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务实现
-* @author leomon
-* @date 2025-06-05
-**/
-@Service
-@RequiredArgsConstructor
-public class MessageSystemAdvertiseServiceImpl extends ServiceImpl<MessageSystemAdvertiseMapper, MessageSystemAdvertise> implements MessageSystemAdvertiseService {
-
-    private final MessageSystemAdvertiseMapper messageSystemAdvertiseMapper;
-
-    @Override
-    public PageResult<MessageSystemAdvertise> queryAll(MessageSystemAdvertiseQueryCriteria criteria, Page<Object> page){
-        return PageUtil.toPage(messageSystemAdvertiseMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<MessageSystemAdvertise> queryAll(MessageSystemAdvertiseQueryCriteria criteria){
-        return messageSystemAdvertiseMapper.findAll(criteria);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(MessageSystemAdvertise resources) {
-        messageSystemAdvertiseMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void update(MessageSystemAdvertise resources) {
-        MessageSystemAdvertise messageSystemAdvertise = getById(resources.getId());
-        messageSystemAdvertise.copy(resources);
-        messageSystemAdvertiseMapper.updateById(messageSystemAdvertise);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Long> ids) {
-        messageSystemAdvertiseMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<MessageSystemAdvertise> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (MessageSystemAdvertise messageSystemAdvertise : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put("广告标题", messageSystemAdvertise.getTitle());
-            map.put("广告内容", messageSystemAdvertise.getContent());
-            map.put("广告图片链接", messageSystemAdvertise.getImageUrl());
-            map.put("广告跳转链接", messageSystemAdvertise.getLinkUrl());
-            map.put("广告状态(0: 禁用;1: 启用)", messageSystemAdvertise.getStatus());
-            map.put("创建人", messageSystemAdvertise.getCreateBy());
-            map.put("更新人", messageSystemAdvertise.getUpdateBy());
-            map.put("创建时间", messageSystemAdvertise.getCreateTime());
-            map.put("更新时间", messageSystemAdvertise.getUpdateTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemServiceImpl.java
deleted file mode 100644
index 0fc9845..0000000
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemServiceImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.oying.modules.message.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.oying.modules.message.domain.MessageOrderLeave;
-import com.oying.modules.message.domain.MessageSystem;
-import com.oying.utils.FileUtil;
-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.MessageSystemService;
-import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
-import com.oying.modules.message.mapper.MessageSystemMapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
-
-import java.util.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-
-import com.oying.utils.PageResult;
-
-/**
- * @description 服务实现
- * @author 李萌
- * @date 2025-05-20
- **/
-@Service
-@RequiredArgsConstructor
-public class MessageSystemServiceImpl extends ServiceImpl<MessageSystemMapper, MessageSystem> implements MessageSystemService {
-
-    private final MessageSystemMapper messageSystemMapper;
-
-    @Override
-    public PageResult<MessageSystem> queryAll(MessageSystemQueryCriteria criteria, Page<Object> page){
-        return PageUtil.toPage(messageSystemMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<MessageSystem> queryAll(MessageSystemQueryCriteria criteria){
-        return messageSystemMapper.findAll(criteria);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(MessageSystem resources) {
-        messageSystemMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void update(MessageSystem resources) {
-        MessageSystem messageSystem = getById(resources.getId());
-        messageSystem.copy(resources);
-        messageSystemMapper.updateById(messageSystem);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Integer> ids) {
-        messageSystemMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<MessageSystem> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (MessageSystem messageSystem : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put("系统维护开始时间", messageSystem.getStartTime());
-            map.put("系统维护截至时间", messageSystem.getEndTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-
-
-
-
-}
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/domain/Product.java b/oying-system/src/main/java/com/oying/modules/pc/product/domain/Product.java
index 566ea69..2c5e76f 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/domain/Product.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/domain/Product.java
@@ -58,6 +58,9 @@
     @ApiModelProperty(value = "状态")
     private Integer status;
 
+    @ApiModelProperty(value = "上架状态")
+    private Integer shelfStatus;
+
     @NotBlank
     @ApiModelProperty(value = "主图片")
     private String mainImageId;
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditData.java b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditData.java
index 7f8f95d..d383ca0 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditData.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditData.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.product.domain.dto;
 
+import com.oying.modules.pc.product.domain.Product;
 import com.oying.modules.pc.store.domain.Store;
 import com.oying.modules.pc.store.domain.dto.StoreRevisionRecord;
 import lombok.Data;
@@ -7,7 +8,8 @@
 @Data
 public class ProductAuditData {
 
-    private Store store;
-    private StoreRevisionRecord revisionRecord;
+    private Product originalStore;
+    private Product product;
+    private ProductRevisionRecord revisionRecord;
 
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditQueryCriteria.java
index d91c32d..32f5e4b 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductAuditQueryCriteria.java
@@ -13,10 +13,19 @@
 @Data
 public class ProductAuditQueryCriteria {
 
-    @NotNull
+    private String blurry;
+
     @ApiModelProperty(value = "商品ID")
     private Long productId;
 
+    @ApiModelProperty(value = "商品名称")
+    private String productName;
+
+    @ApiModelProperty(value = "商品标题")
+    private String productTitle;
+
+    private String createBy;
+
     @NotBlank
     @ApiModelProperty(value = "类型")
     private String type;
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductQueryCriteria.java
index 644f932..9ea4244 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductQueryCriteria.java
@@ -21,6 +21,8 @@
 
     private Integer status;
 
+    private Integer shelfStatus;
+
     private Long categoryId;
 
     private Long secondCategoryId;
@@ -35,4 +37,8 @@
 
     private Integer limit;
 
+    private String sortColumn;
+
+    private String sortDirection;
+
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductRevisionRecord.java b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductRevisionRecord.java
index ae1e04a..20770cb 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductRevisionRecord.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/domain/dto/ProductRevisionRecord.java
@@ -10,23 +10,5 @@
 
 @Data
 public class ProductRevisionRecord {
-
-    @ApiModelProperty(value = "店铺ID")
-    private Long storeId;
-
-    @ApiModelProperty(value = "店铺名称")
-    private String storeName;
-
-    @ApiModelProperty(value = "资质")
-    private List<StoreQualification> qualifications = new ArrayList<>();
-    
-    @ApiModelProperty(value = "删除的资质")
-    private List<Long> deletedQualificationIds = new ArrayList<>();
-
-    @ApiModelProperty(value = "修改的资质")
-    private List<StoreQualificationUpdateRequest> updatedQualifications = new ArrayList<>();
-
-    @ApiModelProperty(value = "新增的资质")
-    private List<StoreQualification> newQualifications = new ArrayList<>();
     
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/mapper/ProductAuditMapper.java b/oying-system/src/main/java/com/oying/modules/pc/product/mapper/ProductAuditMapper.java
index dad7e69..33c69e1 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/mapper/ProductAuditMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/mapper/ProductAuditMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.oying.modules.pc.product.domain.ProductAudit;
 import com.oying.modules.pc.product.domain.dto.ProductAuditQueryCriteria;
+import com.oying.modules.pc.product.view.ProductAuditView;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +18,7 @@
 @Mapper
 public interface ProductAuditMapper extends BaseMapper<ProductAudit> {
 
-    IPage<ProductAudit> findAll(@Param("criteria") ProductAuditQueryCriteria criteria, Page<Object> page);
+    IPage<ProductAuditView> findAll(@Param("criteria") ProductAuditQueryCriteria criteria, Page<Object> page);
 
-    List<ProductAudit> findAll(@Param("criteria") ProductAuditQueryCriteria criteria);
+    List<ProductAuditView> findAll(@Param("criteria") ProductAuditQueryCriteria criteria);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductController.java b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductController.java
index 149958d..a0a2299 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductController.java
@@ -76,7 +76,7 @@
         return ResponseEntity.ok(R.success(pageResult));
     }
 
-    @GetMapping(value = "/{productId}}")
+    @GetMapping(value = "/{productId}")
     @ApiOperation("查询商品")
     // @PreAuthorize("@el.check('product:list')")
     public ResponseEntity<?> getProduct(@PathVariable Long productId) {
@@ -87,8 +87,8 @@
         return ResponseEntity.ok(R.success(product));
     }
 
-    @GetMapping(value = "/{productId}}/details")
-    @ApiOperation("查询商品")
+    @GetMapping(value = "/{productId}/details")
+    @ApiOperation("查询商品详情")
     // @PreAuthorize("@el.check('product:list')")
     public ResponseEntity<?> getProductDetails(@PathVariable Long productId) {
         Product product = productService.getById(productId);
@@ -99,16 +99,16 @@
         return ResponseEntity.ok(R.success(product));
     }
 
-    @GetMapping(value = "/{productId}}/images")
-    @ApiOperation("查询商品")
+    @GetMapping(value = "/{productId}/images")
+    @ApiOperation("查询商品图片")
     // @PreAuthorize("@el.check('product:list')")
     public ResponseEntity<?> getProductImages(@PathVariable Long productId) {
         return ResponseEntity.ok(R.success(productImageService.queryImagesByProductId(productId)));
     }
 
 
-    @GetMapping(value = "/{productId}}/labels")
-    @ApiOperation("查询商品")
+    @GetMapping(value = "/{productId}/labels")
+    @ApiOperation("查询商品标签信息")
     // @PreAuthorize("@el.check('product:list')")
     public ResponseEntity<?> getProductLabels(@PathVariable Long productId) {
         return ResponseEntity.ok(R.success(productLabelService.queryLabelsByProductId(productId)));
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductCustomerController.java b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductCustomerController.java
index 000ecca..0e2ec45 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductCustomerController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductCustomerController.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.oying.modules.pc.product.domain.Product;
 import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria;
+import com.oying.modules.pc.product.domain.enums.ProductStatusEnum;
 import com.oying.modules.pc.product.service.ProductImageService;
 import com.oying.modules.pc.product.service.ProductLabelService;
 import com.oying.modules.pc.product.service.ProductService;
@@ -54,6 +55,7 @@
         criteria.setCategoryId(categoryId);
         criteria.setSecondCategoryId(secondCategoryId);
         criteria.setBlurry(blurry);
+        criteria.setShelfStatus(ProductStatusEnum.AVAILABLE.getValue());
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
         PageResult<Product> productPageResult = productService.queryAll(criteria, page);
 
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java
index 800f96f..899e619 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/rest/ProductMerchantController.java
@@ -124,6 +124,16 @@
         return ResponseEntity.noContent().build();
     }
 
+    @PostMapping(value = "/delete")
+    @Log("批量删除商品")
+    @ApiOperation("批量删除商品")
+    //@PreAuthorize("@el.check('merchant:product:batchDel') " +
+    //        "and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> delProduct(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        productMerchantService.batchDelete(ids);
+        return ResponseEntity.noContent().build();
+    }
+
     @PutMapping(value = "/{productId}/on")
     @Log("上架商品")
     @ApiOperation("上架商品")
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/service/ProductAuditService.java b/oying-system/src/main/java/com/oying/modules/pc/product/service/ProductAuditService.java
index 66ce99d..7929629 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/service/ProductAuditService.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/service/ProductAuditService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.oying.modules.pc.product.domain.ProductAudit;
 import com.oying.modules.pc.product.domain.dto.ProductAuditQueryCriteria;
+import com.oying.modules.pc.product.view.ProductAuditView;
 import com.oying.utils.PageResult;
 
 import javax.servlet.http.HttpServletResponse;
@@ -24,7 +25,7 @@
      * @param page     分页参数
      * @return PageResult
      */
-    PageResult<ProductAudit> queryAll(ProductAuditQueryCriteria criteria, Page<Object> page);
+    PageResult<ProductAuditView> queryAll(ProductAuditQueryCriteria criteria, Page<Object> page);
 
     /**
      * 查询所有数据不分页
@@ -32,7 +33,7 @@
      * @param criteria 条件参数
      * @return List<StoreRevisionDto>
      */
-    List<ProductAudit> queryAll(ProductAuditQueryCriteria criteria);
+    List<ProductAuditView> queryAll(ProductAuditQueryCriteria criteria);
 
     /**
      * 商品ID查询修订数据,
@@ -43,6 +44,14 @@
     ProductAudit getByProductId(Long productId);
 
     /**
+     * 是否有待审记录
+     *
+     * @param productId 必须的参数,不能为null
+     * @return 查询到的结果
+     */
+    boolean hasPendingByStoreId(Long productId);
+
+    /**
      * 创建
      *
      * @param resources /
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductAuditServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductAuditServiceImpl.java
index 6713397..d55c18b 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductAuditServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductAuditServiceImpl.java
@@ -10,6 +10,8 @@
 import com.oying.modules.pc.product.events.ProductAuditVerdictEvent;
 import com.oying.modules.pc.product.mapper.ProductAuditMapper;
 import com.oying.modules.pc.product.service.ProductAuditService;
+import com.oying.modules.pc.product.view.ProductAuditView;
+import com.oying.modules.pc.store.domain.StoreAudit;
 import com.oying.utils.FileUtil;
 import com.oying.utils.PageResult;
 import com.oying.utils.PageUtil;
@@ -39,12 +41,12 @@
     private final ProductAuditMapper productAuditMapper;
 
     @Override
-    public PageResult<ProductAudit> queryAll(ProductAuditQueryCriteria criteria, Page<Object> page) {
+    public PageResult<ProductAuditView> queryAll(ProductAuditQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(productAuditMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<ProductAudit> queryAll(ProductAuditQueryCriteria criteria) {
+    public List<ProductAuditView> queryAll(ProductAuditQueryCriteria criteria) {
         return productAuditMapper.findAll(criteria);
     }
 
@@ -56,6 +58,14 @@
     }
 
     @Override
+    public boolean hasPendingByStoreId(Long productId) {
+        LambdaQueryWrapper<ProductAudit> wrapper = new LambdaQueryWrapper<ProductAudit>()
+                .eq(ProductAudit::getProductId, productId)
+                .eq(ProductAudit::getStatus, AuditStatusEnum.PENDING.getValue());
+        return productAuditMapper.selectCount(wrapper) > 0;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void create(ProductAudit resources) {
         productAuditMapper.insert(resources);
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
index 583047a..24ed038 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjUtil;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.oying.exception.BadRequestException;
 import com.oying.exception.EntityNotFoundException;
@@ -12,6 +13,7 @@
 import com.oying.modules.pc.product.domain.ProductAudit;
 import com.oying.modules.pc.product.domain.ProductImage;
 import com.oying.modules.pc.product.domain.ProductLabel;
+import com.oying.modules.pc.product.domain.dto.ProductAuditData;
 import com.oying.modules.pc.product.domain.dto.ProductImageCreateRequest;
 import com.oying.modules.pc.product.domain.dto.ProductMerchantCreateRequest;
 import com.oying.modules.pc.product.domain.dto.ProductMerchantUpdateRequest;
@@ -76,7 +78,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void update(ProductMerchantUpdateRequest request) {
         Product existingProduct = this.findOrThrow(request.getProductId());
-        this.validateApprovedStatus(existingProduct.getStatus());
+        this.validateApprovedStatus(existingProduct.getShelfStatus());
         this.processImagesUpdate(request);
         this.processLabelsUpdate(request);
         BeanUtils.copyProperties(request, existingProduct);
@@ -87,7 +89,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void updateImages(ProductMerchantUpdateRequest request) {
         Product existingProduct = this.findOrThrow(request.getProductId());
-        this.validateApprovedStatus(existingProduct.getStatus());
+        this.validateApprovedStatus(existingProduct.getShelfStatus());
         this.findOrThrow(request.getProductId());
         this.processImagesUpdate(request);
     }
@@ -96,7 +98,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void updateLabels(ProductMerchantUpdateRequest request) {
         Product existingProduct = this.findOrThrow(request.getProductId());
-        this.validateApprovedStatus(existingProduct.getStatus());
+        this.validateApprovedStatus(existingProduct.getShelfStatus());
         this.findOrThrow(request.getProductId());
         this.processImagesUpdate(request);
     }
@@ -109,10 +111,22 @@
 
     @Override
     public void putOnShelf(Long productId) {
+        Product existingProduct = productService.getById(productId);
+        if (ProductStatusEnum.AVAILABLE.getValue().equals(existingProduct.getShelfStatus())) {
+            throw new BadRequestException("商品已上架");
+        }
+
+        if (productAuditService.hasPendingByStoreId(productId)) {
+            throw new BadRequestException("已在审核中");
+        }
+
         ProductAudit audit = new ProductAudit();
         audit.setProductId(productId);
         audit.setType(ProductChangeTypeEnum.PUT_ON_SHELF.name());
         audit.setStatus(AuditStatusEnum.PENDING.getValue());
+        ProductAuditData auditData = new ProductAuditData();
+        auditData.setOriginalStore(existingProduct);
+        audit.setData(JSON.toJSONString(auditData));
         productAuditService.create(audit);
         LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<Product>()
                 .eq(Product::getProductId, productId)
@@ -122,9 +136,14 @@
 
     @Override
     public void takeOffShelf(Long productId) {
+        Product existingProduct = productService.getById(productId);
+        if (ProductStatusEnum.NO_AVAILABLE.getValue().equals(existingProduct.getShelfStatus())) {
+            return;
+        }
         LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<Product>()
                 .eq(Product::getProductId, productId)
-                .set(Product::getStatus, ProductStatusEnum.NO_AVAILABLE.getValue());
+                .set(Product::getStatus, ProductStatusEnum.NO_AVAILABLE.getValue())
+                .set(Product::getShelfStatus, ProductStatusEnum.NO_AVAILABLE.getValue());
         productService.update(wrapper);
     }
 
@@ -179,11 +198,14 @@
 
     private void handlePutOnShelfAuditEvent(ProductAudit audit) {
         AuditStatusEnum auditStatus = AuditStatusEnum.get(audit.getStatus());
+        Product existingProduct = productService.getById(audit.getProductId());
         if (AuditStatusEnum.APPROVED.equals(auditStatus)) {
-            Product existingProduct = productService.getById(audit.getProductId());
+            existingProduct.setStatus(ProductStatusEnum.AVAILABLE.getValue());
+            existingProduct.setShelfStatus(ProductStatusEnum.AVAILABLE.getValue());
+        } else {
             existingProduct.setStatus(auditStatus.getValue());
-            productService.updateById(existingProduct);
         }
+        productService.updateById(existingProduct);
     }
 
     private void validateApprovedStatus(Integer status) {
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductAuditView.java b/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductAuditView.java
new file mode 100644
index 0000000..2521747
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductAuditView.java
@@ -0,0 +1,50 @@
+package com.oying.modules.pc.product.view;
+
+import com.oying.base.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* @description /
+* @author lzp
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+public class ProductAuditView extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "商品ID")
+    private Long productId;
+
+    @ApiModelProperty(value = "商品名称")
+    private String productName;
+
+    @ApiModelProperty(value = "商品标题")
+    private String productTitle;
+
+    @ApiModelProperty(value = "审核ID")
+    private Long auditId;
+
+    @ApiModelProperty(value = "类型")
+    private String type;
+
+    @ApiModelProperty(value = "审核状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "审核原因")
+    private String reason;
+
+    @ApiModelProperty(value = "审核人")
+    private String auditor;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date auditTime;
+
+    @ApiModelProperty(value = "审核内容")
+    private String data;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductCustomerView.java b/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductCustomerView.java
index 75aebc4..08347c8 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductCustomerView.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/view/ProductCustomerView.java
@@ -32,6 +32,12 @@
     @ApiModelProperty(value = "商品标题")
     private String title;
 
+    @ApiModelProperty(value = "一级分类ID")
+    private Long categoryId;
+
+    @ApiModelProperty(value = "二级分类ID")
+    private Long secondCategoryId;
+
     @ApiModelProperty(value = "状态")
     private Integer status;
 
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/Store.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/Store.java
index 5ba2fd9..833fe2a 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/Store.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/Store.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.oying.base.BaseEntity;
 import com.oying.modules.pc.product.domain.Product;
 import io.swagger.annotations.ApiModelProperty;
@@ -78,19 +79,15 @@
     @ApiModelProperty(value = "店铺标签,逗号分隔")
     private String tags;
 
-    @ApiModelProperty(value = "配送费用")
-    private BigDecimal deliveryFee;
-
-    @ApiModelProperty(value = "起送金额")
-    private BigDecimal deliveryMinimum;
-
     @ApiModelProperty(value = "联系电话")
     private String contactPhone;
 
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     @ApiModelProperty(value = "营业状态")
@@ -139,6 +136,15 @@
     @ApiModelProperty(value = "评分")
     private Double score = 0d;
 
+    @ApiModelProperty(value = "包装费用")
+    private BigDecimal packagingFee;
+
+    @ApiModelProperty(value = "配送费用")
+    private BigDecimal deliveryFee;
+
+    @ApiModelProperty(value = "起送金额")
+    private BigDecimal deliveryMinimum;
+
     @TableField(exist = false)
     @ApiModelProperty(value = "配送距离")
     private Integer deliveryDuration = 0;
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditData.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditData.java
index d60c325..47fe004 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditData.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditData.java
@@ -6,6 +6,7 @@
 @Data
 public class StoreAuditData {
 
+    private Store originalStore;
     private Store store;
     private StoreRevisionRecord revisionRecord;
 
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditQueryCriteria.java
index a9216ad..dd4607c 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreAuditQueryCriteria.java
@@ -13,10 +13,14 @@
 @Data
 public class StoreAuditQueryCriteria {
 
-    @NotNull
-    @ApiModelProperty(value = "店铺ID")
+    private String blurry;
+
     private Long storeId;
 
+    private String storeName;
+
+    private String createBy;
+
     @NotBlank
     @ApiModelProperty(value = "类型")
     private String type;
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCreateRequest.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCreateRequest.java
index 011205f..05c2404 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCreateRequest.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCreateRequest.java
@@ -7,6 +7,7 @@
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -67,6 +68,9 @@
     @ApiModelProperty(value = "是否支持自提")
     private Integer selfPickup;
 
+    @ApiModelProperty(value = "包装费用")
+    private BigDecimal packagingFee;
+
     @ApiModelProperty(value = "店铺资质", example = "[]")
     private List<StoreQualificationCreateRequest> qualificationList = new ArrayList<>();
 
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCustomerDetailDto.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCustomerDetailDto.java
index 7dc881f..c693101 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCustomerDetailDto.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreCustomerDetailDto.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.domain.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -39,9 +40,11 @@
     private String contactPhone;
 
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     private String businessHours;
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreFieldUpdateRequest.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreFieldUpdateRequest.java
index 0bc09b2..b53dfbd 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreFieldUpdateRequest.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreFieldUpdateRequest.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.domain.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -60,6 +61,11 @@
     @NotNull(groups = UpdateStoreDeliveryFeeGroup.class)
     private BigDecimal deliveryFee;
 
+    public interface UpdateStorePackagingFeeGroup{}
+
+    @NotNull(groups = UpdateStorePackagingFeeGroup.class)
+    private BigDecimal packagingFee;
+
     public interface UpdateStoreDeliveryMinimumGroup{}
 
     @NotNull(groups = UpdateStoreDeliveryMinimumGroup.class)
@@ -73,9 +79,11 @@
     public interface UpdateStoreBusinessHoursGroup{}
 
     @NotNull(groups = UpdateStoreBusinessHoursGroup.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @NotNull(groups = UpdateStoreBusinessHoursGroup.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     public interface UpdateStoreAddressGroup{}
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreUpdateRequest.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreUpdateRequest.java
index 9ea552d..bf35cd7 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreUpdateRequest.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreUpdateRequest.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.domain.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.oying.modules.pc.product.domain.Product;
 import com.oying.modules.pc.store.domain.StoreQualification;
 import io.swagger.annotations.ApiModelProperty;
@@ -61,13 +62,18 @@
     @ApiModelProperty(value = "起送金额")
     private BigDecimal deliveryMinimum;
 
+    @ApiModelProperty(value = "包装费用")
+    private BigDecimal packagingFee;
+
     @ApiModelProperty(value = "联系电话")
     private String contactPhone;
 
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     @ApiModelProperty(value = "详细地址")
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreAuditMapper.java b/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreAuditMapper.java
index 8280a8e..1b37d45 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreAuditMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreAuditMapper.java
@@ -3,6 +3,8 @@
 import com.oying.modules.pc.store.domain.StoreAudit;
 import com.oying.modules.pc.store.domain.dto.StoreAuditQueryCriteria;
 import java.util.List;
+
+import com.oying.modules.pc.store.view.StoreAuditView;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -16,7 +18,7 @@
 @Mapper
 public interface StoreAuditMapper extends BaseMapper<StoreAudit> {
 
-    IPage<StoreAudit> findAll(@Param("criteria") StoreAuditQueryCriteria criteria, Page<Object> page);
+    IPage<StoreAuditView> findAll(@Param("criteria") StoreAuditQueryCriteria criteria, Page<Object> page);
 
-    List<StoreAudit> findAll(@Param("criteria") StoreAuditQueryCriteria criteria);
+    List<StoreAuditView> findAll(@Param("criteria") StoreAuditQueryCriteria criteria);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java
index d193a8e..6eefbd2 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java
@@ -126,10 +126,20 @@
     @DeleteMapping
     @Log("删除店铺类目")
     @ApiOperation("删除店铺类目")
-    @PreAuthorize("@el.check('storeCategory:del')" +
-            " and @storeMerchantOwnershipService.check(#storeId)")
+    /*@PreAuthorize("@el.check('storeCategory:del')" +
+            " and @storeMerchantOwnershipService.check(#storeId)")*/
     public ResponseEntity<?> deleteStoreCategory(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         storeCategoryService.deleteAll(ids);
         return ResponseEntity.noContent().build();
     }
+
+    @PostMapping(value = "/delete")
+    @Log("删除店铺类目")
+    @ApiOperation("删除店铺类目")
+    /*@PreAuthorize("@el.check('storeCategory:del')" +
+            " and @storeMerchantOwnershipService.check(#storeId)")*/
+    public ResponseEntity<?> delStoreCategory(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        storeCategoryService.deleteAll(ids);
+        return ResponseEntity.noContent().build();
+    }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
index b98c44f..8e0c22d 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
@@ -1,5 +1,7 @@
 package com.oying.modules.pc.store.rest;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.util.ObjUtil;
 import com.oying.modules.pc.product.domain.Product;
 import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria;
@@ -18,7 +20,6 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -59,7 +60,7 @@
     public ResponseEntity<?> getStoreById(@PathVariable("storeId") Long storeId) {
         Store store = storeService.getById(storeId);
         CustomerStoreView view = new CustomerStoreView();
-        BeanUtils.copyProperties(store, view);
+        BeanUtil.copyProperties(store, view, CopyOptions.create().setIgnoreNullValue(true));
         view.setBusinessHours(BusinessHoursUtils.formatBusinessHours(store.getOpenTime(), store.getCloseTime()));
         return ResponseEntity.ok(R.success(view));
     }
@@ -68,16 +69,19 @@
     @ApiOperation("查询店铺")
     public ResponseEntity<?> getStoreDetailsById(@PathVariable("storeId") Long storeId) {
         Store store = storeService.getById(storeId);
+        CustomerStoreView view = new CustomerStoreView();
+        BeanUtil.copyProperties(store, view, CopyOptions.create().setIgnoreNullValue(true));
+        view.setBusinessHours(BusinessHoursUtils.formatBusinessHours(store.getOpenTime(), store.getCloseTime()));
         if (ObjUtil.isNotEmpty(store)) {
-            store.setQualifications(storeQualificationService.getByStoreId(storeId));
+            view.setQualifications(storeQualificationService.getByStoreId(storeId));
         }
-        return ResponseEntity.ok(R.success(store));
+        return ResponseEntity.ok(R.success(view));
     }
 
     private List<Product> getProductsByStoreId(Long storeId) {
         ProductQueryCriteria criteria = new ProductQueryCriteria();
         criteria.setStoreId(storeId);
-        criteria.setStatus(ProductStatusEnum.AVAILABLE.getValue());
+        criteria.setShelfStatus(ProductStatusEnum.AVAILABLE.getValue());
         criteria.setLimit(3);
         return productService.queryAll(criteria);
     }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java
index 4f5f2f0..0b9c3b1 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java
@@ -73,9 +73,9 @@
     //@PreAuthorize("@el.check('merchant:store:getById')")
     public ResponseEntity<?> getStoreById(@PathVariable Long storeId) {
         Store store = storeService.getById(storeId);
-        StoreMerchantView view = new StoreMerchantView();
-        BeanUtils.copyProperties(store, view);
-        return ResponseEntity.ok(R.success(view));
+        /*StoreMerchantView view = new StoreMerchantView();
+        BeanUtils.copyProperties(store, view);*/
+        return ResponseEntity.ok(R.success(store));
     }
 
     @GetMapping(value = "/{storeId}/details")
@@ -188,7 +188,7 @@
     public ResponseEntity<?> updateAddress(@PathVariable("storeId") Long storeId,
                               @Validated(value = StoreFieldUpdateRequest.UpdateStoreAddressGroup.class)
                               @RequestBody StoreFieldUpdateRequest request) {
-        storeService.updateAddress(storeId, request.getAddress(), request.getVersion());
+        storeService.updateAddress(storeId, request.getAddress(), request.getLongitude(), request.getLatitude(), request.getVersion());
         return ResponseEntity.noContent().build();
     }
 
@@ -277,6 +277,20 @@
     }
 
     /**
+     * 修改包装费用
+     */
+    @PatchMapping(value = "/{storeId}/packagingFee")
+    @ApiOperation("修改包装费用")
+    /*@PreAuthorize("@el.check('merchant:store:deliveryFee')" +
+            " and @storeMerchantOwnershipService.check(#storeId)")*/
+    public ResponseEntity<?> updatePackagingFee(@PathVariable("storeId") Long storeId,
+                                               @Validated(value = StoreFieldUpdateRequest.UpdateStorePackagingFeeGroup.class)
+                                               @RequestBody StoreFieldUpdateRequest request) {
+        storeService.updatePackagingFee(storeId, request.getPackagingFee(), request.getVersion());
+        return ResponseEntity.noContent().build();
+    }
+
+    /**
      * 修改状态
      */
     @PatchMapping(value = "/{storeId}/businessStatus")
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreQualificationMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreQualificationMerchantController.java
index aa31e18..c1eafde 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreQualificationMerchantController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreQualificationMerchantController.java
@@ -92,4 +92,14 @@
         storeQualificationService.deleteAll(ids);
         return ResponseEntity.noContent().build();
     }
+
+    @PostMapping(value = "/delete")
+    @Log("删除店铺资质")
+    @ApiOperation("删除店铺资质")
+    //@PreAuthorize("@el.check('merchant:storeQualification:batchDel') " +
+    //        "and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> batchDelete(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        storeQualificationService.deleteAll(ids);
+        return ResponseEntity.noContent().build();
+    }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreAuditService.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreAuditService.java
index 180c43a..929adbe 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreAuditService.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreAuditService.java
@@ -8,6 +8,7 @@
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.pc.store.view.StoreAuditView;
 import com.oying.utils.PageResult;
 
 /**
@@ -23,14 +24,14 @@
     * @param page 分页参数
     * @return PageResult
     */
-    PageResult<StoreAudit> queryAll(StoreAuditQueryCriteria criteria, Page<Object> page);
+    PageResult<StoreAuditView> queryAll(StoreAuditQueryCriteria criteria, Page<Object> page);
 
     /**
     * 查询所有数据不分页
     * @param criteria 条件参数
     * @return List<StoreRevisionDto>
     */
-    List<StoreAudit> queryAll(StoreAuditQueryCriteria criteria);
+    List<StoreAuditView> queryAll(StoreAuditQueryCriteria criteria);
 
     /**
      * 店铺ID查询修订数据,
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreService.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreService.java
index f5443f1..901a842 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreService.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/StoreService.java
@@ -50,7 +50,7 @@
 
     boolean updateContactPhone(Long storeId, String contactPhone, Long version);
 
-    boolean updateAddress(Long storeId, String address, Long version);
+    boolean updateAddress(Long storeId, String address, Double longitude, Double latitude, Long version);
 
     boolean updateLocation(Long storeId, Double longitude, Double latitude, Long version);
 
@@ -64,6 +64,8 @@
 
     boolean updateDeliveryFee(Long storeId, BigDecimal deliveryFee, Long version);
 
+    boolean updatePackagingFee(Long storeId, BigDecimal packagingFee, Long version);
+
     boolean updateStatus(Long storeId, Integer status, Long version);
 
     boolean existsByIdAndMerchantId(Long storeId, Long merchantId);
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreAuditServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreAuditServiceImpl.java
index 3411955..a4cc8c5 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreAuditServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreAuditServiceImpl.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,9 +11,8 @@
 import com.oying.modules.pc.store.events.StoreAuditVerdictEvent;
 import com.oying.modules.pc.store.mapper.StoreAuditMapper;
 import com.oying.modules.pc.store.service.StoreAuditService;
-import com.oying.utils.FileUtil;
-import com.oying.utils.PageResult;
-import com.oying.utils.PageUtil;
+import com.oying.modules.pc.store.view.StoreAuditView;
+import com.oying.utils.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
@@ -20,10 +20,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author lzp
@@ -39,12 +36,12 @@
     private final StoreAuditMapper storeAuditMapper;
 
     @Override
-    public PageResult<StoreAudit> queryAll(StoreAuditQueryCriteria criteria, Page<Object> page) {
+    public PageResult<StoreAuditView> queryAll(StoreAuditQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(storeAuditMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<StoreAudit> queryAll(StoreAuditQueryCriteria criteria) {
+    public List<StoreAuditView> queryAll(StoreAuditQueryCriteria criteria) {
         return storeAuditMapper.findAll(criteria);
     }
 
@@ -91,6 +88,8 @@
             throw new BadRequestException("审核状态错误");
         }
         existingAudit.copy(resources);
+        existingAudit.setAuditor(SecurityUtils.getCurrentUsername());
+        existingAudit.setAuditTime(new Date());
         storeAuditMapper.updateById(existingAudit);
         eventPublisher.publishEvent(new StoreAuditVerdictEvent(existingAudit.getAuditId()));
     }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreMerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreMerchantServiceImpl.java
index f3ce233..121e5a4 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreMerchantServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreMerchantServiceImpl.java
@@ -65,6 +65,8 @@
             BeanUtil.copyProperties(request, existingStore, CopyOptions.create().setIgnoreNullValue(true));
             storeService.update(existingStore, true);
         } else if (AuditStatusEnum.APPROVED.equals(existingStatus)) {
+            Store originalStore = new Store();
+            BeanUtil.copyProperties(existingStore, originalStore, CopyOptions.create().setIgnoreNullValue(true));
             Store newStore = new Store();
             newStore.setQualifications(ListUtil.of());
             BeanUtil.copyProperties(request, newStore, CopyOptions.create().setIgnoreNullValue(true));
@@ -95,6 +97,7 @@
             StoreRevisionRecord revisionRecord = new StoreRevisionRecord();
             BeanUtil.copyProperties(request, revisionRecord, CopyOptions.create().setIgnoreNullValue(true));
             StoreAuditData auditData = new StoreAuditData();
+            auditData.setOriginalStore(originalStore);
             auditData.setStore(newStore);
             auditData.setRevisionRecord(revisionRecord);
             this.createLatestModification(request.getStoreId(), StoreChangeTypeEnum.STORE_UPDATE, auditData);
@@ -109,7 +112,9 @@
         if (StoreStatusEnum.OPEN.equals(businessStatus) && !AuditStatusEnum.APPROVED.equals(existingStatus)) {
             throw new BadRequestException("店铺未审核");
         }
-        storeService.updateStatus(existingStore.getStoreId(), businessStatus.getValue(), existingStore.getVersion());
+        existingStore.setStatus(businessStatus.getValue());
+        existingStore.setBusinessStatus(businessStatus.getValue());
+        storeService.update(existingStore, true);
     }
 
     @Override
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
index 253d66c..4b09b6a 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
@@ -1,6 +1,7 @@
 package com.oying.modules.pc.store.service.impl;
 
 import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -167,10 +168,16 @@
     }
 
     @Override
-    public boolean updateAddress(Long storeId, String address, Long version) {
+    public boolean updateAddress(Long storeId, String address, Double longitude, Double latitude, Long version) {
         Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getAddress, address);
+        if (ObjectUtil.isNotEmpty(longitude)) {
+            wrapper.set(Store::getLongitude, longitude);
+        }
+        if (ObjectUtil.isNotEmpty(latitude)) {
+            wrapper.set(Store::getLatitude, latitude);
+        }
         return update(wrapper);
     }
 
@@ -225,6 +232,14 @@
     }
 
     @Override
+    public boolean updatePackagingFee(Long storeId, BigDecimal packagingFee, Long version) {
+        Store existingStore = this.getOrThrow(storeId, version);
+        LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
+                .set(Store::getPackagingFee, packagingFee);
+        return update(wrapper);
+    }
+
+    @Override
     public boolean updateStatus(Long storeId, Integer status, Long version) {
         Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/view/CustomerStoreView.java b/oying-system/src/main/java/com/oying/modules/pc/store/view/CustomerStoreView.java
index b43552e..d3f2474 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/view/CustomerStoreView.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/view/CustomerStoreView.java
@@ -1,12 +1,13 @@
 package com.oying.modules.pc.store.view;
 
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.oying.modules.pc.store.domain.StoreQualification;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.time.LocalTime;
+import java.util.List;
 
 @Data
 public class CustomerStoreView {
@@ -41,13 +42,22 @@
     @ApiModelProperty(value = "联系电话")
     private String contactPhone;
 
+    @ApiModelProperty(value = "营业时间")
+    private String businessHours;
+
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
-    private String businessHours;
+    @ApiModelProperty(value = "营业状态")
+    private Integer businessStatus;
+
+    @ApiModelProperty(value = "市级代码")
+    private String cityCode;
 
     @ApiModelProperty(value = "详细地址")
     private String address;
@@ -70,6 +80,15 @@
     @ApiModelProperty(value = "评分")
     private Double score = 0d;
 
+    @ApiModelProperty(value = "包装费用")
+    private BigDecimal packagingFee;
+
+    @ApiModelProperty(value = "配送费用")
+    private BigDecimal deliveryFee;
+
+    @ApiModelProperty(value = "起送金额")
+    private BigDecimal deliveryMinimum;
+
     @ApiModelProperty(value = "配送距离")
     private Integer deliveryDuration = 0;
 
@@ -82,4 +101,7 @@
     @ApiModelProperty(value = "月销售量")
     private Integer monthlyUnitsSold = 0;
 
+    @ApiModelProperty(value = "资质")
+    private List<StoreQualification> qualifications;
+
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreAuditView.java b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreAuditView.java
new file mode 100644
index 0000000..81baf53
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreAuditView.java
@@ -0,0 +1,54 @@
+package com.oying.modules.pc.store.view;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.oying.base.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* @description /
+* @author lzp
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+public class StoreAuditView extends BaseEntity implements Serializable {
+
+    @ApiModelProperty(value = "店铺ID")
+    private Long storeId;
+
+    @ApiModelProperty(value = "店铺名称")
+    private String storeName;
+
+    @ApiModelProperty(value = "审核ID")
+    private Long auditId;
+
+    @ApiModelProperty(value = "类型")
+    private String type;
+
+    @ApiModelProperty(value = "审核状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "审核原因")
+    private String reason;
+
+    @ApiModelProperty(value = "审核人")
+    private String auditor;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date auditTime;
+
+    @ApiModelProperty(value = "审核内容")
+    private String data;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreMerchantView.java b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreMerchantView.java
index cb84e75..1c8b870 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreMerchantView.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreMerchantView.java
@@ -1,9 +1,13 @@
 package com.oying.modules.pc.store.view;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.oying.modules.pc.store.domain.StoreQualification;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalTime;
+import java.util.List;
 
 @Data
 public class StoreMerchantView {
@@ -35,13 +39,18 @@
     @ApiModelProperty(value = "店铺描述")
     private String description;
 
+    @ApiModelProperty(value = "包装费用")
+    private BigDecimal packagingFee;
+
     @ApiModelProperty(value = "联系电话")
     private String contactPhone;
 
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     @ApiModelProperty(value = "详细地址")
@@ -65,4 +74,7 @@
     @ApiModelProperty(value = "版本号")
     private Long version;
 
+    @ApiModelProperty(value = "资质")
+    private List<StoreQualification> qualifications;
+
 }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreSimpleView.java b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreSimpleView.java
index 8f8c764..6652206 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreSimpleView.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/view/StoreSimpleView.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.view;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -52,9 +53,11 @@
     private String contactPhone;
 
     @ApiModelProperty(value = "营业开始时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime openTime;
 
     @ApiModelProperty(value = "营业结束时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm")
     private LocalTime closeTime;
 
     @ApiModelProperty(value = "市级代码")
diff --git a/oying-system/src/main/java/com/oying/modules/security/config/SecurityProperties.java b/oying-system/src/main/java/com/oying/modules/security/config/SecurityProperties.java
index 77a3b86..ff07ca3 100644
--- a/oying-system/src/main/java/com/oying/modules/security/config/SecurityProperties.java
+++ b/oying-system/src/main/java/com/oying/modules/security/config/SecurityProperties.java
@@ -55,11 +55,6 @@
      */
     private Long renew;
 
-    /**
-     * 自定义redis key
-     */
-    private String generateOrderSn;
-
     public String getTokenStartWith() {
         return tokenStartWith + " ";
     }
diff --git a/oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java b/oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java
index 5ce08d2..0eb367d 100644
--- a/oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java
+++ b/oying-system/src/main/java/com/oying/modules/security/rest/AuthController.java
@@ -230,7 +230,7 @@
     @Log("骑手小程序:微信授权登录")
     @ApiOperation("骑手小程序:微信授权登录")
     @AnonymousPostMapping(value = "/rider/login/weixin")
-    public ResponseEntity<Object> riderLoginWeixin(@Validated @RequestBody AuthUserWeixinDto authUser, HttpServletRequest request) throws Exception {
+    public ResponseEntity<Object> riderLoginWeixin(@Validated @RequestBody AuthUserWeixinDto authUser, HttpServletRequest request) {
         JSONObject jsonObject;
         switch (authUser.getType()) {
             case OLD:
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
index c899502..93dd1ee 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
@@ -9,6 +9,7 @@
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.sql.Timestamp;
 import java.util.Objects;
 import java.util.Set;
 
@@ -56,9 +57,16 @@
     private String orderRemark;
 
     @NotBlank
-    @ApiModelProperty(value = "预计送达时间")
+    @ApiModelProperty(value = "送达预计时间")
     private String orderTime;
 
+    @ApiModelProperty(value = "送达完成时间")
+    private Timestamp orderFinishTime;
+
+    @NotNull
+    @ApiModelProperty(value = "打包费")
+    private BigDecimal packagingPrice;
+
     @NotNull
     @ApiModelProperty(value = "配送费")
     private BigDecimal sendPrice;
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
index f837d29..553f0dc 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
@@ -42,6 +42,10 @@
     private Integer operation = 0;
 
     @NotBlank
+    @ApiModelProperty(value = "类型")
+    private String operationType;
+
+    @NotBlank
     @ApiModelProperty(value = "用户操作描述")
     private String operationDescribe = "提交订单";
 
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
index 988d692..e6d3787 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
@@ -59,6 +59,10 @@
     private String orderStoreNum;
 
     @NotNull
+    @ApiModelProperty(value = "打包费")
+    private BigDecimal packagingPrice;
+
+    @NotNull
     @ApiModelProperty(value = "配送费")
     private BigDecimal sendPrice;
 
@@ -111,7 +115,7 @@
     @ApiModelProperty(value = "实付金额")
     private BigDecimal actuallyPayPrice;
 
-    @ApiModelProperty(value = "退款价格")
+    @ApiModelProperty(value = "退款金额")
     private BigDecimal refundPrice;
 
     @ApiModelProperty(value = "退款状态")
@@ -123,7 +127,7 @@
     @ApiModelProperty(value = "退款渠道")
     private String channel;
 
-    @ApiModelProperty(value = "退款原因")
+    @ApiModelProperty(value = "退货类型")
     private String reason;
 
     @ApiModelProperty(value = "备注")
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java
deleted file mode 100644
index 107c4e7..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.oying.modules.sh.domain;
-
-import lombok.Data;
-import cn.hutool.core.bean.BeanUtil;
-import io.swagger.annotations.ApiModelProperty;
-import cn.hutool.core.bean.copier.CopyOptions;
-import java.sql.Timestamp;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-/**
-* @description /
-* @author lixin
-* @date 2025-07-02
-**/
-@Data
-@TableName("sh_order_return_operation_log")
-public class OrderReturnOperationLog implements Serializable {
-
-    @TableId(value = "log_id", type = IdType.AUTO)
-    @ApiModelProperty(value = "主键")
-    private Long logId;
-
-    @NotBlank
-    @ApiModelProperty(value = "订单号")
-    private String returnNum;
-
-    @NotBlank
-    @ApiModelProperty(value = "用户账号")
-    private String username;
-
-    @NotBlank
-    @ApiModelProperty(value = "用户类型(骑手、消费者、商家、平台)")
-    private String userType;
-
-    @NotNull
-    @ApiModelProperty(value = "用户操作")
-    private Integer operation;
-
-    @NotBlank
-    @ApiModelProperty(value = "用户操作描述")
-    private String operationDescribe;
-
-    @NotBlank
-    @ApiModelProperty(value = "备注")
-    private String remark;
-
-    @NotNull
-    @ApiModelProperty(value = "操作时的订单快照")
-    private String snapshotData;
-
-    @NotNull
-    @ApiModelProperty(value = "操作时间")
-    private Timestamp operationTime;
-
-    public void copy(OrderReturnOperationLog source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
index 26b92d1..c7bf374 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
@@ -24,6 +24,9 @@
     @ApiModelProperty(value = "用户类型")
     private String userType;
 
+    @ApiModelProperty(value = "类型")
+    private String operationType;
+
     @ApiModelProperty(value = "订单号")
     private String orderNum;
     private List<Timestamp> operationTime;
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java
deleted file mode 100644
index 572a792..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.oying.modules.sh.domain.dto;
-
-import lombok.Data;
-import java.sql.Timestamp;
-import java.util.List;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
-* @author lixin
-* @date 2025-07-02
-**/
-@Data
-public class OrderReturnOperationLogQueryCriteria{
-
-    @ApiModelProperty(value = "页码", example = "1")
-    private Integer page = 1;
-
-    @ApiModelProperty(value = "每页数据量", example = "10")
-    private Integer size = 10;
-
-    @ApiModelProperty(value = "订单号")
-    private String returnNum;
-
-    @ApiModelProperty(value = "用户账号")
-    private String username;
-
-    @ApiModelProperty(value = "用户类型(骑手、消费者、商家、平台)")
-    private String userType;
-    private List<Timestamp> operationTime;
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/request/AuditOrderReturn.java b/oying-system/src/main/java/com/oying/modules/sh/domain/request/AuditOrderReturn.java
index 4133bab..851eca1 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/request/AuditOrderReturn.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/request/AuditOrderReturn.java
@@ -1,5 +1,6 @@
 package com.oying.modules.sh.domain.request;
 
+import com.oying.utils.enums.ReturnAuditEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -18,7 +19,7 @@
     @ApiModelProperty(value = "退单号")
     private String returnNum;
     @ApiModelProperty(value = "审核状态")
-    private String auditStatus;
+    private ReturnAuditEnum auditStatus;
     @ApiModelProperty(value = "备注")
     private String message;
     @ApiModelProperty(value = "金额")
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/request/ReturnOrder.java b/oying-system/src/main/java/com/oying/modules/sh/domain/request/ReturnOrder.java
new file mode 100644
index 0000000..66afd21
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/request/ReturnOrder.java
@@ -0,0 +1,33 @@
+package com.oying.modules.sh.domain.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author xin
+ * @description
+ * @date 2025/7/20 17:17
+ */
+@Getter
+@Setter
+public class ReturnOrder {
+
+    @NotBlank
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+    @NotBlank
+    @ApiModelProperty(value = "退货类型")
+    private String reason;
+    @NotBlank
+    @ApiModelProperty(value = "备注:退货描述")
+    private String remark;
+    @ApiModelProperty(value = "图片地址,多张','分割")
+    private String photos;
+    @ApiModelProperty(value = "订单商品")
+    private List<ProductOrder>  productOrders;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderInfo.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderInfo.java
index 028d5cf..a6270c2 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderInfo.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderInfo.java
@@ -32,8 +32,8 @@
     private BigDecimal promotionAmount = BigDecimal.ZERO;
     @ApiModelProperty(value = "优惠卷待定")
     private Object coupon;
-    @ApiModelProperty(value = "运费待定")
-    private Object shippingFee;
-    @ApiModelProperty(value = "打包费待定")
-    private Object packingCharges;
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal deliveryPrice = BigDecimal.ZERO;
+    @ApiModelProperty(value = "打包费")
+    private BigDecimal packagingPrice = BigDecimal.ZERO;
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
new file mode 100644
index 0000000..205e2f1
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
@@ -0,0 +1,27 @@
+package com.oying.modules.sh.domain.vo;
+
+import com.oying.modules.sh.domain.OrderAddressSnapshot;
+import com.oying.modules.sh.domain.OrderOperationLog;
+import com.oying.modules.sh.domain.OrderReturn;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author xin
+ * @description
+ * @date 2025/8/19 22:14
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+public class OrderReturnResponse {
+
+    private OrderReturn orderReturn;
+
+    private OrderAddressSnapshot address;
+
+    private List<OrderOperationLog> operation;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderOperationLogMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderOperationLogMapper.java
index 8d97f9c..f98e5fd 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderOperationLogMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderOperationLogMapper.java
@@ -20,5 +20,5 @@
 
     List<OrderOperationLog> findAll(@Param("criteria") OrderOperationLogQueryCriteria criteria);
 
-    List<OrderOperationLog> getByOrderNum(String orderNum);
+    List<OrderOperationLog> getByOrderNum(String orderNum, String type);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
index 58667c5..59a4b19 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
@@ -24,7 +24,12 @@
 
     OrderReturn getByReturnNum(String returnNum);
 
-    void updatePayStatus(String returnNum, String status, String time);
+    void updatePayStatus(@Param("returnNum") String returnNum, @Param("refundStatus") String refundStatus, @Param("successTime") String successTime);
 
     Long countAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("blurry") String blurry);
+
+    OrderReturn getByOrderNum(String orderNum, Integer status);
+
+    void updateStatus(@Param("returnNum") String returnNum, @Param("returnStatus") Integer returnStatus,
+                      @Param("value") String value, @Param("auditStatus") Integer auditStatus);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java
deleted file mode 100644
index 401243f..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.oying.modules.sh.mapper;
-
-import com.oying.modules.sh.domain.OrderReturnOperationLog;
-import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
-/**
-* @author lixin
-* @date 2025-07-02
-**/
-@Mapper
-public interface OrderReturnOperationLogMapper extends BaseMapper<OrderReturnOperationLog> {
-
-    IPage<OrderReturnOperationLog> findAll(@Param("criteria") OrderReturnOperationLogQueryCriteria criteria, Page<Object> page);
-
-    List<OrderReturnOperationLog> findAll(@Param("criteria") OrderReturnOperationLogQueryCriteria criteria);
-
-    List<OrderReturnOperationLog> getByReturnNum(String returnNum);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderOperationLogController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderOperationLogController.java
index 3ef4e6f..46c77eb 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderOperationLogController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderOperationLogController.java
@@ -46,7 +46,7 @@
     @GetMapping("getByOrderNum")
     @ApiOperation("根据订单号查询订单操作日志")
     @PreAuthorize("@el.check('orderOperationLog:list')")
-    public ResponseEntity<Object> queryOrderOperationLog(@RequestParam String orderNum) {
-        return new ResponseEntity<>(R.success(orderOperationLogService.getByOrderNum(orderNum)), HttpStatus.OK);
+    public ResponseEntity<Object> queryOrderOperationLog(@RequestParam String orderNum, @RequestParam String type) {
+        return new ResponseEntity<>(R.success(orderOperationLogService.getByOrderNum(orderNum, type)), HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
index c58992a..e449512 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
@@ -3,12 +3,11 @@
 import com.oying.annotation.Log;
 import com.oying.modules.sh.domain.OrderReturn;
 import com.oying.modules.sh.domain.request.AuditOrderReturn;
+import com.oying.modules.sh.domain.request.ReturnOrder;
 import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria;
 import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
-
-import java.util.List;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -49,12 +48,25 @@
         return new ResponseEntity<>(R.success(orderReturnService.queryAll(criteria, page)), HttpStatus.OK);
     }
 
+    @ApiOperation("订单号订单售后")
+    @GetMapping(value = "/getByReturnNum")
+    public ResponseEntity<Object> getByReturnNum(@RequestParam String returnNum) {
+        return new ResponseEntity<>(R.success(orderReturnService.getByReturnNum(returnNum)), HttpStatus.OK);
+    }
+
     @PostMapping
-    @Log("新增退款订单")
-    @ApiOperation("新增退款订单")
-    @PreAuthorize("@el.check('orderReturn:add')")
-    public ResponseEntity<Object> createOrderReturn(@Validated @RequestBody OrderReturn resources) {
+    @Log("申请订单售后")
+    @ApiOperation("申请订单售后")
+    public ResponseEntity<Object> createOrderReturn(@Validated @RequestBody ReturnOrder resources) {
         orderReturnService.create(resources);
+        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
+    }
+
+    @PostMapping("cancel")
+    @Log("取消订单售后")
+    @ApiOperation("取消订单售后")
+    public ResponseEntity<Object> cancel(@RequestParam String returnNum) {
+        orderReturnService.cancel(returnNum);
         return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
     }
 
@@ -74,14 +86,5 @@
     public ResponseEntity<Object> updateOrderReturn(@Validated @RequestBody OrderReturn resources) {
         orderReturnService.update(resources);
         return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT);
-    }
-
-    @DeleteMapping
-    @Log("删除退款订单")
-    @ApiOperation("删除退款订单")
-    @PreAuthorize("@el.check('orderReturn:del')")
-    public ResponseEntity<Object> deleteOrderReturn(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
-        orderReturnService.deleteAll(ids);
-        return new ResponseEntity<>(R.success(), HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java
deleted file mode 100644
index 6b6b72c..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.oying.modules.sh.rest;
-
-import com.oying.modules.sh.domain.OrderReturnOperationLog;
-import com.oying.modules.sh.service.OrderReturnOperationLogService;
-import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
-import com.oying.utils.R;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.utils.PageResult;
-
-/**
-* @author lixin
-* @date 2025-07-02
-**/
-@RestController
-@RequiredArgsConstructor
-@Api(tags = "SH:退订用户操作管理")
-@RequestMapping("/api/orderReturnOperationLog")
-public class OrderReturnOperationLogController {
-
-    private final OrderReturnOperationLogService orderReturnOperationLogService;
-
-    @ApiOperation("导出数据")
-    @GetMapping(value = "/download")
-    @PreAuthorize("@el.check('orderReturnOperationLog:list')")
-    public void exportOrderReturnOperationLog(HttpServletResponse response, OrderReturnOperationLogQueryCriteria criteria) throws IOException {
-        orderReturnOperationLogService.download(orderReturnOperationLogService.queryAll(criteria), response);
-    }
-
-    @GetMapping
-    @ApiOperation("查询退订用户操作管理")
-    @PreAuthorize("@el.check('orderReturnOperationLog:list')")
-    public ResponseEntity<PageResult<OrderReturnOperationLog>> queryOrderReturnOperationLog(OrderReturnOperationLogQueryCriteria criteria){
-        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(orderReturnOperationLogService.queryAll(criteria,page),HttpStatus.OK);
-    }
-
-    @GetMapping("getByReturnNum")
-    @ApiOperation("根据退单号查询退单操作日志")
-    public ResponseEntity<Object> getByReturnNum(@RequestParam String returnNum) {
-        return new ResponseEntity<>(R.success(orderReturnOperationLogService.getByReturnNum(returnNum)), HttpStatus.OK);
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
index d21c030..6338bcb 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
@@ -58,5 +58,5 @@
     */
     void download(List<OrderOperationLog> all, HttpServletResponse response) throws IOException;
 
-    List<OrderOperationLog> getByOrderNum(String orderNum);
+    List<OrderOperationLog> getByOrderNum(String orderNum, String type);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java
deleted file mode 100644
index 4e07023..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.oying.modules.sh.service;
-
-import com.oying.modules.sh.domain.OrderReturnOperationLog;
-import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
-import java.util.List;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务接口
-* @author lixin
-* @date 2025-07-02
-**/
-public interface OrderReturnOperationLogService extends IService<OrderReturnOperationLog> {
-
-    /**
-    * 查询数据分页
-    * @param criteria 条件
-    * @param page 分页参数
-    * @return PageResult
-    */
-    PageResult<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria, Page<Object> page);
-
-    /**
-    * 查询所有数据不分页
-    * @param criteria 条件参数
-    * @return List<OrderReturnOperationLogDto>
-    */
-    List<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria);
-
-    /**
-    * 创建
-    * @param resources /
-    */
-    void create(OrderReturnOperationLog resources);
-
-    /**
-    * 编辑
-    * @param resources /
-    */
-    void update(OrderReturnOperationLog resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Long> ids);
-
-    /**
-    * 导出数据
-    * @param all 待导出的数据
-    * @param response /
-    * @throws IOException /
-    */
-    void download(List<OrderReturnOperationLog> all, HttpServletResponse response) throws IOException;
-
-    List<OrderReturnOperationLog> getByReturnNum(String returnNum);
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
index 2aa81cf..f8f1c9e 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
@@ -8,6 +8,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.oying.modules.sh.domain.request.AuditOrderReturn;
+import com.oying.modules.sh.domain.request.ReturnOrder;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
 import com.oying.utils.PageResult;
 
 /**
@@ -36,19 +38,16 @@
     * 创建
     * @param resources /
     */
-    void create(OrderReturn resources);
+    void create(ReturnOrder resources);
+
+
+    void cancel(String returnNum);
 
     /**
     * 编辑
     * @param resources /
     */
     void update(OrderReturn resources);
-
-    /**
-    * 多选删除
-    * @param ids /
-    */
-    void deleteAll(List<Long> ids);
 
     /**
     * 导出数据
@@ -58,9 +57,9 @@
     */
     void download(List<OrderReturn> all, HttpServletResponse response) throws IOException;
 
-    OrderReturn getByReturnNum(String outRefundNo);
+    OrderReturnResponse getByReturnNum(String outRefundNo);
 
-    void updatePayStatus(String outRefundNo, String status, String time);
+    void updatePayStatus(String outRefundNo, String refundStatus, String successTime);
 
     void audit(AuditOrderReturn resources);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
index b2515a3..4430bf7 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
@@ -49,6 +49,8 @@
 
     OrderResponse getByOrderNum(String orderNum);
 
+    Order queryByOrderNum(String orderNum);
+
     void operationLog(OrderResponse order, OrderStatusEnum stateEnum,String cardName);
 
     void updatePayStatus(String outTradeNo, PayStateEnum stateEnum, String payInfo, String timeEnd);
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 48972f7..2f06131 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
@@ -1,6 +1,9 @@
 package com.oying.modules.sh.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.oying.exception.BadRequestException;
+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;
@@ -34,6 +37,7 @@
 
     private final OrderOperationLogMapper orderOperationLogMapper;
     private final OrderMapper orderMapper;
+    private final MesMsgRecordService mesMsgRecordService;
 
     @Override
     public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page) {
@@ -46,45 +50,129 @@
     }
 
     @Override
-    public List<OrderOperationLog> getByOrderNum(String orderNum) {
-        return orderOperationLogMapper.getByOrderNum(orderNum);
+    public List<OrderOperationLog> getByOrderNum(String orderNum, String type) {
+        return orderOperationLogMapper.getByOrderNum(orderNum, type);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void create(OrderResponse response, OrderStatusEnum statusEnum, String cardName) {
+    public synchronized void create(OrderResponse response, OrderStatusEnum statusEnum, String cardName) {
         String userType = ConstantsKey.BUYER;
         String username = null;
+        Timestamp time = new Timestamp(System.currentTimeMillis());
+        MsgStatusEnum msgStatusEnum = null;
         switch (statusEnum) {
             case ZERO:
             case ONE:
-            case EIGHT:
-            case NINE:
+            case TEN:
                 userType = ConstantsKey.BUYER;
                 break;
             case TWO:
                 username = response.getOrder().getUsername();
-            case FOUR:
-                userType = ConstantsKey.MERCHANT;
+                OrderOperationLog log1 = new OrderOperationLog();
+                log1.setOrderNum(response.getOrder().getOrderNum());
+                log1.setUsername(username);
+                log1.setUserType(userType);
+                log1.setOperation(OrderStatusEnum.ONE.getKey());
+                log1.setOperationType(OrderStatusEnum.ONE.getCode());
+                log1.setOperationDescribe(OrderStatusEnum.ONE.getValue());
+                log1.setRemark(username + ":" + time + ">" + OrderStatusEnum.ONE.getValue() + ":" + response.getOrder().getOrderNum());
+                Map<String, Object> map1 = new LinkedHashMap<>();
+                response.getOrder().setOrderStatus(OrderStatusEnum.ONE.getKey());
+                response.getOrder().setOrderStatusDescribe(OrderStatusEnum.ONE.getValue());
+                map1.put("order", response.getOrder());
+                map1.put("address", response.getAddress());
+                log1.setSnapshotData(JSON.toJSONString(map1));
+                log1.setOperationTime(time);
+                orderOperationLogMapper.insert(log1);
+                response.getOrder().setOrderStatus(OrderStatusEnum.TWO.getKey());
+                response.getOrder().setOrderStatusDescribe(OrderStatusEnum.TWO.getValue());
+                msgStatusEnum = MsgStatusEnum.MERCHANT_ACCEPTED;
+                userType = ConstantsKey.BUYER;
                 break;
             case THREE:
+                msgStatusEnum = MsgStatusEnum.MERCHANT_PREPARED;
+                userType = ConstantsKey.BUYER;
+                break;
+            case FOUR:
                 orderMapper.updateRider(response.getOrder().getOrderNum(), SecurityUtils.getCurrentUserId(), SecurityUtils.getCurrentUsername(), cardName);
-            case FIVE:
-            case SIX:
-            case SEVEN:
+                msgStatusEnum = MsgStatusEnum.RIDER_PENDING_ACCEPTANCE;
                 userType = ConstantsKey.RIDER;
                 break;
+            case FIVE:
+                msgStatusEnum = MsgStatusEnum.RIDER_ARRIVED;
+                userType = ConstantsKey.RIDER;
+                break;
+            case SIX:
+                msgStatusEnum = MsgStatusEnum.RIDER_PICKED_UP;
+                userType = ConstantsKey.RIDER;
+                break;
+            case SEVEN:
+                userType = ConstantsKey.RIDER;
+                username = SecurityUtils.getCurrentUsername();
+                OrderOperationLog log2 = new OrderOperationLog();
+                log2.setOrderNum(response.getOrder().getOrderNum());
+                log2.setUsername(username);
+                log2.setUserType(userType);
+                log2.setOperation(statusEnum.getKey());
+                log2.setOperationType(statusEnum.getCode());
+                log2.setOperationDescribe(statusEnum.getValue());
+                log2.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum());
+                Map<String, Object> map2 = new LinkedHashMap<>();
+                map2.put("order", response.getOrder());
+                map2.put("address", response.getAddress());
+                log2.setSnapshotData(JSON.toJSONString(map2));
+                log2.setOperationTime(time);
+                orderOperationLogMapper.insert(log2);
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                msgStatusEnum = MsgStatusEnum.BUYER_ORDER_DELIVERED;
+                statusEnum = OrderStatusEnum.EIGHT;
+                break;
+            case EIGHT:
+                msgStatusEnum = MsgStatusEnum.BUYER_ORDER_COMPLETED;
+                userType = ConstantsKey.BUYER;
+                break;
+            case NINE:
+                if (response.getOrder().getOrderStatus().equals(OrderStatusEnum.NINE.getKey())) {
+                    throw new BadRequestException("订单已取消");
+                }
+                if (response.getOrder().getOrderStatus() > OrderStatusEnum.TWO.getKey()) {
+                    throw new BadRequestException(OrderStatusEnum.getValue(response.getOrder().getOrderStatus()));
+                }
+                msgStatusEnum = MsgStatusEnum.RIDER_ORDER_CANCELLED;
+                userType = ConstantsKey.BUYER;
+                break;
+            case ELEVEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
+            case TWELVE:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                break;
+            case THIRTEEN:
+                userType = ConstantsKey.MERCHANT;
+                break;
+            case FOURTEEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                break;
+            case FIFTEEN:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
             default:
+                throw new BadRequestException("状态错误");
         }
         if (username == null) {
             username = SecurityUtils.getCurrentUsername();
         }
-        Timestamp time = new Timestamp(System.currentTimeMillis());
         OrderOperationLog resources = new OrderOperationLog();
         resources.setOrderNum(response.getOrder().getOrderNum());
         resources.setUsername(username);
         resources.setUserType(userType);
         resources.setOperation(statusEnum.getKey());
+        resources.setOperationType(statusEnum.getCode());
         resources.setOperationDescribe(statusEnum.getValue());
         resources.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum());
         Map<String, Object> map = new LinkedHashMap<>();
@@ -93,6 +181,9 @@
         resources.setSnapshotData(JSON.toJSONString(map));
         resources.setOperationTime(time);
         orderOperationLogMapper.insert(resources);
+        if (msgStatusEnum != null){
+//            mesMsgRecordService.insertOrderMsg(response.getOrder(), msgStatusEnum, MesTypeEnum.ORDER);
+        }
         orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
     }
 
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java
deleted file mode 100644
index 845ff10..0000000
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.oying.modules.sh.service.impl;
-
-import com.oying.modules.sh.domain.OrderReturnOperationLog;
-import com.oying.utils.FileUtil;
-import lombok.RequiredArgsConstructor;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.oying.modules.sh.service.OrderReturnOperationLogService;
-import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
-import com.oying.modules.sh.mapper.OrderReturnOperationLogMapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
-
-import java.util.*;
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-
-import com.oying.utils.PageResult;
-
-/**
-* @description 服务实现
-* @author lixin
-* @date 2025-07-02
-**/
-@Service
-@RequiredArgsConstructor
-public class OrderReturnOperationLogServiceImpl extends ServiceImpl<OrderReturnOperationLogMapper, OrderReturnOperationLog> implements OrderReturnOperationLogService {
-
-    private final OrderReturnOperationLogMapper orderReturnOperationLogMapper;
-
-    @Override
-    public PageResult<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria, Page<Object> page){
-        return PageUtil.toPage(orderReturnOperationLogMapper.findAll(criteria, page));
-    }
-
-    @Override
-    public List<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria){
-        return orderReturnOperationLogMapper.findAll(criteria);
-    }
-
-    @Override
-    public List<OrderReturnOperationLog> getByReturnNum(String returnNum) {
-        return orderReturnOperationLogMapper.getByReturnNum(returnNum);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(OrderReturnOperationLog resources) {
-        orderReturnOperationLogMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void update(OrderReturnOperationLog resources) {
-        OrderReturnOperationLog orderReturnOperationLog = getById(resources.getLogId());
-        orderReturnOperationLog.copy(resources);
-        orderReturnOperationLogMapper.updateById(orderReturnOperationLog);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Long> ids) {
-        orderReturnOperationLogMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void download(List<OrderReturnOperationLog> all, HttpServletResponse response) throws IOException {
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (OrderReturnOperationLog orderReturnOperationLog : all) {
-            Map<String, Object> map = new LinkedHashMap<>();
-            map.put("订单号", orderReturnOperationLog.getReturnNum());
-            map.put("用户账号", orderReturnOperationLog.getUsername());
-            map.put("用户类型(骑手、消费者、商家、平台)", orderReturnOperationLog.getUserType());
-            map.put("用户操作", orderReturnOperationLog.getOperation());
-            map.put("用户操作描述", orderReturnOperationLog.getOperationDescribe());
-            map.put("备注", orderReturnOperationLog.getRemark());
-            map.put("操作时的订单快照", orderReturnOperationLog.getSnapshotData());
-            map.put("操作时间", orderReturnOperationLog.getOperationTime());
-            list.add(map);
-        }
-        FileUtil.downloadExcel(list, response);
-    }
-}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
index f8fe21d..337325d 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
@@ -1,27 +1,34 @@
 package com.oying.modules.sh.service.impl;
 
+import com.oying.exception.BadRequestException;
+import com.oying.modules.hwc.service.SwiftPassService;
+import com.oying.modules.sh.domain.Order;
+import com.oying.modules.sh.domain.OrderProductSnapshot;
 import com.oying.modules.sh.domain.OrderReturn;
+import com.oying.modules.sh.domain.OrderReturnProductSnapshot;
 import com.oying.modules.sh.domain.request.AuditOrderReturn;
-import com.oying.utils.FileUtil;
+import com.oying.modules.sh.domain.request.ProductOrder;
+import com.oying.modules.sh.domain.request.ReturnOrder;
+import com.oying.modules.sh.domain.vo.OrderResponse;
+import com.oying.modules.sh.domain.vo.OrderReturnResponse;
+import com.oying.modules.sh.service.*;
+import com.oying.utils.*;
+import com.oying.utils.enums.GenerateEnum;
+import com.oying.utils.enums.OrderStatusEnum;
+import com.oying.utils.enums.PayTypeEnum;
 import com.oying.utils.enums.ReturnAuditEnum;
 import lombok.RequiredArgsConstructor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria;
 import com.oying.modules.sh.mapper.OrderReturnMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
 
-import java.util.List;
-import java.util.Map;
+import java.sql.Timestamp;
+import java.util.*;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-
-import com.oying.utils.PageResult;
 
 /**
  * @author lixin
@@ -33,6 +40,15 @@
 public class OrderReturnServiceImpl extends ServiceImpl<OrderReturnMapper, OrderReturn> implements OrderReturnService {
 
     private final OrderReturnMapper orderReturnMapper;
+    private final OrderOperationLogService operationLogService;
+    private final OrderService orderService;
+    private final OrderReturnProductSnapshotService productSnapshotService;
+    private final RedisUtils redisUtils;
+    private final SwiftPassService swiftPassService;
+    private final OrderAddressSnapshotService addressSnapshotService;
+    private static final String ORDER_RETURN_KEY = "oying:order:refund";
+    private static final String ORDER_CODE = "REFUND";
+    public static final Integer DAY = 30;
 
     @Override
     public PageResult<OrderReturn> queryAll(OrderReturnQueryCriteria criteria, Page<Object> page) {
@@ -48,19 +64,120 @@
     }
 
     @Override
-    public OrderReturn getByReturnNum(String returnNum) {
-        return orderReturnMapper.getByReturnNum(returnNum);
+    public OrderReturnResponse getByReturnNum(String returnNum) {
+        OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum);
+        return new OrderReturnResponse(orderReturn,
+                addressSnapshotService.queryByOrderNum(orderReturn.getOrderNum()),
+                operationLogService.getByOrderNum(orderReturn.getOrderNum(), ORDER_CODE));
     }
 
     @Override
-    public void updatePayStatus(String returnNum, String status, String time) {
-        orderReturnMapper.updatePayStatus(returnNum, status, time);
+    public void updatePayStatus(String returnNum, String refundStatus, String successTime) {
+        orderReturnMapper.updatePayStatus(returnNum, refundStatus, successTime);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void create(OrderReturn resources) {
-        orderReturnMapper.insert(resources);
+    public synchronized void create(ReturnOrder resources) {
+        OrderResponse response = orderService.getByOrderNum(resources.getOrderNum());
+        Order order = response.getOrder();
+        if (order == null) {
+            throw new BadRequestException("订单不存在!");
+        }
+        if (Objects.equals(order.getOrderStatus(), OrderStatusEnum.ZERO.getKey())) {
+            throw new BadRequestException("订单未支付");
+        }
+        OrderReturn returnOrder1 = orderReturnMapper.getByOrderNum(resources.getOrderNum(), ReturnAuditEnum.ZERO.getKey());
+        if (returnOrder1 != null) {
+            throw new BadRequestException("申请已提交");
+        }
+        OrderReturn returnOrder2 = orderReturnMapper.getByOrderNum(resources.getOrderNum(), ReturnAuditEnum.TWO.getKey());
+        if (returnOrder2 != null) {
+            throw new BadRequestException("退款订单已处理");
+        }
+        if (!DateUtil.isBefore(order.getPayTime(), DAY)) {
+            throw new BadRequestException("订单已超过售后有效期");
+        }
+        // 退款订单
+        OrderReturn returnOrder = new OrderReturn();
+        // 退款订单号
+        String returnNum = redisUtils.generateSn(ORDER_RETURN_KEY, GenerateEnum.ORDER_RETURN.getKey());
+        returnOrder.setReturnNum(returnNum);
+        returnOrder.setReturnStatus(ReturnAuditEnum.ZERO.getKey());
+        returnOrder.setReturnStatusDescribe(ReturnAuditEnum.ZERO.getValue());
+        returnOrder.setOrderNum(resources.getOrderNum());
+        returnOrder.setOrderTime(order.getOrderTime());
+        returnOrder.setOrderStoreNum(order.getOrderStoreNum());
+        returnOrder.setPackagingPrice(order.getPackagingPrice());
+        returnOrder.setSendPrice(order.getSendPrice());
+        returnOrder.setSendType(order.getSendType() != null ? order.getSendType() : null);
+        returnOrder.setRiderId(order.getRiderId() != null ? order.getRiderId() : null);
+        returnOrder.setRiderPhone(order.getRiderPhone() != null ? order.getRiderPhone() : null);
+        returnOrder.setRiderName(order.getRiderName() != null ? order.getRiderName() : null);
+        returnOrder.setPayType(order.getPayType());
+        returnOrder.setUserId(order.getUserId());
+        returnOrder.setUsername(order.getUsername());
+        returnOrder.setStoreId(order.getStoreId());
+        returnOrder.setStoreName(order.getStoreName());
+        returnOrder.setStoreLogo(order.getStoreLogo());
+        returnOrder.setOriginalPrice(order.getOriginalPrice());
+        returnOrder.setPaidPrice(order.getPaidPrice());
+        returnOrder.setActuallyPayPrice(order.getActuallyPayPrice());
+        returnOrder.setReason(resources.getReason());
+        returnOrder.setRemark(resources.getRemark());
+        returnOrder.setPhotos(resources.getPhotos());
+        returnOrder.setAuditStatus(ReturnAuditEnum.ZERO.getKey());
+        orderReturnMapper.insert(returnOrder);
+        List<OrderReturnProductSnapshot> productSnapshots = new ArrayList<>();
+        for (ProductOrder productOrder : resources.getProductOrders()) {
+            for (OrderProductSnapshot snapshot : order.getProductSnapshots()) {
+                if (productOrder.getProductId().equals(snapshot.getProductId())) {
+                    OrderReturnProductSnapshot productSnapshot = getSnapshot(snapshot, returnNum);
+                    productSnapshots.add(productSnapshot);
+                }
+            }
+        }
+        productSnapshotService.saveBatch(productSnapshots);
+        operationLogService.create(response, OrderStatusEnum.FIFTEEN, null);
+    }
+
+    private static OrderReturnProductSnapshot getSnapshot(OrderProductSnapshot snapshot, String returnNum) {
+        OrderReturnProductSnapshot productSnapshot = new OrderReturnProductSnapshot();
+        productSnapshot.setReturnNum(returnNum);
+        productSnapshot.setStoreId(snapshot.getStoreId());
+        productSnapshot.setProductId(snapshot.getProductId());
+        productSnapshot.setProductCode(snapshot.getProductCode() != null ? snapshot.getProductCode() : null);
+        productSnapshot.setProductBarcode(snapshot.getProductBarcode());
+        productSnapshot.setProductName(snapshot.getProductName());
+        productSnapshot.setProductTitle(snapshot.getProductTitle());
+        productSnapshot.setProductMainImage(snapshot.getProductMainImage());
+        productSnapshot.setProductDescription(snapshot.getProductDescription());
+        productSnapshot.setParamData(snapshot.getParamData() != null ? snapshot.getParamData() : null);
+        productSnapshot.setUnitPrice(snapshot.getUnitPrice());
+        productSnapshot.setDetailCount(snapshot.getDetailCount());
+        productSnapshot.setOriginalPrice(snapshot.getOriginalPrice());
+        productSnapshot.setPaidPrice(snapshot.getPaidPrice());
+        productSnapshot.setActuallyPayPrice(snapshot.getActuallyPayPrice());
+        return productSnapshot;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void cancel(String returnNum) {
+        OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum);
+        if (orderReturn == null) {
+            throw new BadRequestException("申请不存在!");
+        }
+        if (!orderReturn.getUserId().equals(SecurityUtils.getCurrentUserId())) {
+            throw new BadRequestException("不能修改他人申请");
+        }
+        if (orderReturn.getAuditStatus().equals(ReturnAuditEnum.ONE.getKey())) {
+            throw new BadRequestException("申请已拒绝");
+        }
+        orderReturnMapper.updateStatus(returnNum, OrderStatusEnum.FIFTEEN.getKey(), OrderStatusEnum.FIFTEEN.getValue(),
+                ReturnAuditEnum.THREE.getKey());
+        OrderResponse response = orderService.getByOrderNum(orderReturn.getOrderNum());
+        operationLogService.create(response, OrderStatusEnum.FIFTEEN, null);
     }
 
     @Override
@@ -73,14 +190,50 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void audit(AuditOrderReturn resources) {
-
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteAll(List<Long> ids) {
-        orderReturnMapper.deleteBatchIds(ids);
+    public synchronized void audit(AuditOrderReturn resources) {
+        OrderReturn orderReturn = orderReturnMapper.getByReturnNum(resources.getReturnNum());
+        if (orderReturn == null) {
+            throw new BadRequestException("申请不存在!");
+        }
+        if (!Objects.equals(orderReturn.getReturnStatus(), ReturnAuditEnum.ZERO.getKey())) {
+            throw new BadRequestException("申请已处理或取消");
+        }
+        if (resources.getAmount().compareTo(orderReturn.getActuallyPayPrice()) > 0) {
+            throw new BadRequestException("退款金额超过订单金额");
+        }
+        switch (resources.getAuditStatus()) {
+            case ONE:
+                break;
+            case TWO:
+                long total = BigDecimalUtils.yuanToCents(orderReturn.getActuallyPayPrice());
+                long refund = BigDecimalUtils.yuanToCents(resources.getAmount());
+                orderReturn.setRefundPrice(resources.getAmount());
+                PayTypeEnum status = PayTypeEnum.find(orderReturn.getPayType());
+                switch (status) {
+                    case HWC:
+                    case HWC2:
+                        if (refund > 0) {
+                            Map<String, String> re = swiftPassService.refund(orderReturn.getReturnNum(), orderReturn.getOrderNum(),
+                                    resources.getMessage(), refund, total, status);
+                            orderReturn.setChannel(re.get("refund_channel"));
+                        }
+                        break;
+                    default:
+                        throw new BadRequestException("暂未开通其余支付模式");
+                }
+                break;
+            default:
+                throw new BadRequestException("审核状态错误");
+        }
+        // 审核状态
+        orderReturn.setAuditStatus(resources.getAuditStatus().getKey());
+        // 审核人
+        orderReturn.setAuditUser(SecurityUtils.getCurrentUsername());
+        // 审核时间
+        orderReturn.setAuditTime(new Timestamp(System.currentTimeMillis()));
+        // 审核信息
+        orderReturn.setAuditMessage(resources.getMessage());
+        orderReturnMapper.updateById(orderReturn);
     }
 
     @Override
@@ -99,7 +252,7 @@
             map.put("退款状态", orderReturn.getRefundStatus());
             map.put("退款成功时间", orderReturn.getSuccessTime());
             map.put("退款渠道", orderReturn.getChannel());
-            map.put("退款原因", orderReturn.getReason());
+            map.put("退货类型", orderReturn.getReason());
             map.put("备注", orderReturn.getRemark());
             map.put("图片", orderReturn.getPhotos());
             map.put("审核状态", ReturnAuditEnum.getValue(orderReturn.getAuditStatus()));
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
index 6042c17..5c4657e 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -54,7 +54,10 @@
     private final RedisUtils redisUtils;
     private final StoreService storeService;
     private final OrderOperationLogService operationLogService;
-    private final static String DESCRIBE = "哦应:";
+    private static final String DESCRIBE = "哦应:";
+    private static final String ORDER_KEY = "oying:order";
+    private static final String ORDER_STORE_KEY = "oying:order:store";
+    private static final String ORDER_CODE = "ORDER";
 
     @Override
     public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page) {
@@ -91,7 +94,8 @@
         if (!(address.getDistance().compareTo(BigDecimal.valueOf(store.getRadius())) <= 0)) {
             throw new BadRequestException("超出配送范围");
         }
-        String orderNum = redisUtils.generateOrderSn(GenerateEnum.ORDER.getKey());
+        // 订单号
+        String orderNum = redisUtils.generateSn(ORDER_KEY, GenerateEnum.ORDER.getKey());
         // 总金额
         BigDecimal amount = BigDecimal.ZERO;
         // 商品快照
@@ -128,7 +132,7 @@
         // 订单信息
         Order order = new Order();
         order.setOrderNum(orderNum);
-        order.setOrderStoreNum(redisUtils.generateOrderSn(Math.toIntExact(submit.getStoreId())).substring(orderNum.length() - 4));
+        order.setOrderStoreNum(redisUtils.generateSn(ORDER_STORE_KEY, Math.toIntExact(submit.getStoreId())).substring(orderNum.length() - 4));
         order.setOrderStatus(OrderStatusEnum.ZERO.getKey());
         order.setOrderStatusDescribe(OrderStatusEnum.ZERO.getValue());
         order.setOrderRemark(submit.getRemark() != null ? submit.getRemark() : "");
@@ -173,7 +177,6 @@
 
         OrderAddressSnapshot addressSnapshot = getOrderAddressSnapshot(orderNum, address);
 
-
         addressSnapshotService.save(addressSnapshot);
         orderMapper.insert(order);
         productSnapshotService.saveBatch(snapshots);
@@ -212,6 +215,7 @@
         }
         List<ProductInfo> products = new ArrayList<>();
         BigDecimal amount = BigDecimal.ZERO;
+        int count = 0;
         for (ProductOrder productOrder : criteria.getProducts()) {
             Product product = productService.getById(productOrder.getProductId());
             if (product == null) {
@@ -236,6 +240,7 @@
             info.setCount(productOrder.getCount());
             products.add(info);
             amount = BigDecimalUtils.add(amount, BigDecimalUtils.multiply(product.getPrice(), productOrder.getCount()));
+            count += productOrder.getCount();
         }
         if (!(amount.compareTo(store.getDeliveryMinimum()) >= 0)) {
             throw new BadRequestException("起送金额:" + store.getDeliveryMinimum());
@@ -246,6 +251,8 @@
         info.setAmount(amount);
         info.setPayAmount(amount);
         info.setPromotionAmount(BigDecimal.ZERO);
+        info.setDeliveryPrice(store.getDeliveryFee());
+        info.setPackagingPrice(BigDecimalUtils.multiply(store.getPackagingFee(), count));
         info.setUserAddresses(userAddressService.queryUserAddress(store.getLongitude(), store.getLatitude()));
         return info;
     }
@@ -261,7 +268,13 @@
     public OrderResponse getByOrderNum(String orderNum) {
         return new OrderResponse(orderMapper.getByOrderNum(orderNum),
                 addressSnapshotService.queryByOrderNum(orderNum),
-                operationLogService.getByOrderNum(orderNum));
+                operationLogService.getByOrderNum(orderNum, ORDER_CODE));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Order queryByOrderNum(String orderNum) {
+        return orderMapper.getByOrderNum(orderNum);
     }
 
     @Override
@@ -278,11 +291,11 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void cancel(String orderNum) {
+    public synchronized void cancel(String orderNum) {
         OrderResponse response = getByOrderNum(orderNum);
         Order order = response.getOrder();
         if (order == null) {
-            throw new BadRequestException("订单不存在");
+            throw new BadRequestException("订单不存在!");
         }
         if (!SecurityUtils.getCurrentUserId().equals(order.getUserId())) {
             throw new BadRequestException("不能修改他人订单");
@@ -295,7 +308,7 @@
             case HWC:
             case HWC2:
                 JSONObject object = swiftPassService.query(orderNum, anEnum);
-                if (object.getString("trade_state").equals(PayStateEnum.NOTPAY.getKey())) {
+                if (!object.getString("trade_state").equals(PayStateEnum.NOTPAY.getKey())) {
                     throw new BadRequestException(PayStateEnum.getValue(order.getPayState()));
                 }
                 swiftPassService.closeOrder(orderNum, anEnum);
@@ -323,6 +336,19 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteAll(List<Long> ids) {
+        Long userid = SecurityUtils.getCurrentUserId();
+        for (Long id : ids) {
+            Order order = getById(id);
+            if (order == null) {
+                throw new BadRequestException("订单不存在!");
+            }
+            if (!order.getUserId().equals(userid)) {
+                throw new BadRequestException("不能删除他人订单");
+            }
+            if (!order.getPayState().equals(PayStateEnum.NOTPAY.getKey())) {
+                throw new BadRequestException("只能删除未支付订单");
+            }
+        }
         orderMapper.deleteBatchIds(ids);
     }
 
diff --git a/oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java b/oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java
index 119ba1e..ab437e5 100644
--- a/oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java
@@ -20,6 +20,7 @@
 import com.oying.exception.EntityExistException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -128,8 +129,10 @@
         // 清除缓存
         delCaches(user.getId(), user.getUsername());
         // 更新用户角色
-        userRoleMapper.deleteByUserId(resources.getId());
-        userRoleMapper.insertData(resources.getId(), resources.getRoles());
+        if (!ObjectUtils.isEmpty(resources.getRoles())) {
+            userRoleMapper.deleteByUserId(resources.getId());
+            userRoleMapper.insertData(resources.getId(), resources.getRoles());
+        }
     }
 
     @Override
diff --git a/oying-system/src/main/resources/config/application-dev.yml b/oying-system/src/main/resources/config/application-dev.yml
index cd03254..3b94915 100644
--- a/oying-system/src/main/resources/config/application-dev.yml
+++ b/oying-system/src/main/resources/config/application-dev.yml
@@ -89,8 +89,6 @@
   online-key: "online_token:"
   # 验证码
   code-key: "captcha_code:"
-  # 自定义redis key
-  generate-order-sn: oying:generate:sn
   # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
   detect: 1800000
   # 续期时间范围,默认1小时,单位毫秒
diff --git a/oying-system/src/main/resources/config/application-prod.yml b/oying-system/src/main/resources/config/application-prod.yml
index ff689d1..92ff604 100644
--- a/oying-system/src/main/resources/config/application-prod.yml
+++ b/oying-system/src/main/resources/config/application-prod.yml
@@ -93,8 +93,6 @@
   online-key: "online_token:"
   # 验证码
   code-key: "captcha_code:"
-  # 自定义redis key
-  generate-order-sn: oying:generate:sn
   # token 续期检查时间范围(默认30分钟,单位默认毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
   detect: 1800000
   # 续期时间范围,默认 1小时,这里单位毫秒
diff --git a/oying-system/src/main/resources/mapper/message/MesAdvertisementMapper.xml b/oying-system/src/main/resources/mapper/message/MesAdvertisementMapper.xml
new file mode 100644
index 0000000..5b4f941
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesAdvertisementMapper.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesAdvertisementMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesAdvertisement">
+        <id column="id" property="id"/>
+        <result column="title" property="title"/>
+        <result column="sub_title" property="subTitle"/>
+        <result column="content" property="content"/>
+        <result column="cover_img" property="coverImg"/>
+        <result column="banner_img" property="bannerImg"/>
+        <result column="platform" property="platform"/>
+        <result column="jump_type" property="jumpType"/>
+        <result column="jump_url" property="jumpUrl"/>
+        <result column="jump_params" property="jumpParams"/>
+        <result column="sort_order" property="sortOrder"/>
+        <result column="is_top" property="isTop"/>
+        <result column="status" property="status"/>
+        <result column="effective_time" property="effectiveTime"/>
+        <result column="expire_time" property="expireTime"/>
+        <result column="click_count" property="clickCount"/>
+        <result column="show_count" property="showCount"/>
+        <result column="remark" property="remark"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, title, sub_title, content, cover_img, banner_img, platform, jump_type, jump_url, jump_params, sort_order, is_top, status, effective_time, expire_time, click_count, show_count, remark, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_advertisement
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MesCustomerCommentMsgMapper.xml b/oying-system/src/main/resources/mapper/message/MesCustomerCommentMsgMapper.xml
new file mode 100644
index 0000000..5e336ad
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesCustomerCommentMsgMapper.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesCustomerCommentMsgMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesCustomerCommentMsg">
+        <id column="id" property="id"/>
+        <result column="msg_record_id" property="msgRecordId"/>
+        <result column="shop_id" property="shopId"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_no" property="orderNo"/>
+        <result column="buyer_id" property="buyerId"/>
+        <result column="buyer_name" property="buyerName"/>
+        <result column="evaluation_id" property="evaluationId"/>
+        <result column="replied" property="replied"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="comment_time" property="commentTime"/>
+        <result column="comment_content" property="commentContent"/>
+        <result column="reply_content" property="replyContent"/>
+        <result column="ext_jump_url" property="extJumpUrl"/>
+        <result column="int_jump_path" property="intJumpPath"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, msg_record_id, shop_id, order_id, order_no, buyer_id, buyer_name, evaluation_id, replied, create_by, create_time, update_by, update_time, comment_time, comment_content, reply_content, ext_jump_url, int_jump_path
+    </sql>
+    <sql id="CustomerCommentMsg_Column_List">
+        id, shop_id, order_no, buyer_id, buyer_name, replied, comment_time, comment_content, reply_content
+    </sql>
+
+
+    <select id="findAll" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM mes_customer_comment_msg
+        <where>
+        </where>
+        ORDER BY id DESC
+    </select>
+
+    <select id="listCustomerComment" resultType="com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO"
+            parameterType="java.lang.Long">
+        SELECT
+            <include refid="CustomerCommentMsg_Column_List"/>
+        FROM mes_customer_comment_msg
+        WHERE shop_id = #{shopId}
+        ORDER BY id DESC
+    </select>
+</mapper>
diff --git a/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml b/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
new file mode 100644
index 0000000..0c8d08a
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesMsgRecordMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesMsgRecord">
+        <id column="id" property="id"/>
+        <result column="template_id" property="templateId"/>
+        <result column="receiver_id" property="receiverId"/>
+        <result column="platform" property="platform"/>
+        <result column="msg_type" property="msgType"/>
+        <result column="title" property="title"/>
+        <result column="content" property="content"/>
+        <result column="biz_id" property="bizId"/>
+        <result column="biz_type" property="bizType"/>
+        <result column="is_read" property="isRead"/>
+        <result column="read_time" property="readTime"/>
+        <result column="extra" property="extra"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <!-- 新增字段映射 -->
+        <result column="order_id" property="orderId"/>
+        <result column="buyer_id" property="buyerId"/>
+        <result column="order_no" property="orderNo"/>
+        <result column="shop_id" property="shopId"/>
+        <result column="shop_name" property="shopName"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+    </resultMap>
+    <!-- 为 MesMsgRecordQueryPollDto 创建专门的 resultMap -->
+    <resultMap id="PollResultMap" type="com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto">
+        <id column="id" property="id"/>
+        <result column="title" property="title"/>
+        <result column="content" property="content"/>
+    </resultMap>
+    <!-- 为 MesMsgRecordQuerySystemDto 创建专门的 resultMap -->
+    <resultMap id="SystemResultMap" type="com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto">
+        <id column="id" property="id"/>
+        <result column="title" property="title"/>
+        <result column="content" property="content"/>
+    </resultMap>
+
+
+    <sql id="Base_Column_List">
+        id
+        , template_id, receiver_id, platform, msg_type, title, content, biz_id, biz_type, is_read, read_time, extra, create_by, create_time, update_by, update_time
+    </sql>
+    <!-- 与 MesMsgRecordQueryPollDto 字段对应的 SQL 片段 -->
+    <sql id="Poll_Column_List">
+        id
+        , title, content
+    </sql>
+    <!-- 与 MesMsgRecordQuerySystemDto 字段对应的 SQL 片段 -->
+    <sql id="System_Column_List">
+        id
+        , title, content
+    </sql>
+    <update id="batchMarkRead">
+        UPDATE mes_msg_record
+        SET is_read = 1,
+        read_time = NOW()
+        WHERE id IN
+        <foreach item="item" collection="msgIds" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        AND platform = #{platform}
+    </update>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_msg_record
+        <where>
+        </where>
+        order by id desc
+    </select>
+    <!-- 使用Map作为参数类型,支持多参数传递 -->
+    <select id="PollMes" parameterType="map" resultMap="PollResultMap">
+        <!-- 根据平台和消息类型查询未读消息 -->
+        select
+        <include refid="Poll_Column_List"/>
+        from mes_msg_record
+        <where>
+            <if test="platform != null">
+                platform = #{platform}
+            </if>
+            <if test="msgType != null">
+                and msg_type = #{msgType}
+            </if>
+            and is_read = 0
+        </where>
+        order by id desc
+    </select>
+
+    <select id="queryAllSysNotice"
+            resultMap="SystemResultMap">
+        select
+        <include refid="System_Column_List"/>
+        from mes_msg_record
+        <where>
+            # 系统1
+            msg_type = 1
+        </where>
+        order by id desc
+    </select>
+    <select id="queryorder" resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+            parameterType="java.lang.Long">
+        # 根据店铺号 给出订单号与订单消息
+        select id,content,order_no
+        from mes_msg_record
+        <where>
+            <if test="shopId != null">
+                shop_id = #{shopId}
+            </if>
+        </where>
+
+    </select>
+    <select id="PollMesAll" parameterType="long" resultMap="PollResultMap">
+        <!-- 根据平台和消息类型查询未读消息 -->
+        select
+        <include refid="Poll_Column_List"/>
+        from mes_msg_record
+        <where>
+            <if test="platform != null">
+                platform = #{platform}
+            </if>
+            and is_read = 0
+        </where>
+        order by id desc
+    </select>
+    <select id="queryorderPending"
+            resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+            parameterType="map">
+        SELECT id, content, order_no
+        FROM mes_msg_record
+        WHERE content = #{content}
+          AND shop_id = #{shopId}
+        ORDER BY id DESC
+    </select>
+    <select id="queryBuyerOrderMessages"
+            resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+            parameterType="java.lang.Long">
+        select id, content, order_no
+        from mes_msg_record
+        where buyer_id = #{buyerId}
+        order by id desc
+    </select>
+    <select id="queryBuyerOrderMessagesComplete"
+            resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+            parameterType="java.lang.Long">
+        select id, content, order_no
+        from mes_msg_record
+        where buyer_id = #{buyerId}
+          and content = '订单完成'
+        order by id desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MesMsgTemplateMapper.xml b/oying-system/src/main/resources/mapper/message/MesMsgTemplateMapper.xml
new file mode 100644
index 0000000..70910f4
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesMsgTemplateMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesMsgTemplateMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesMsgTemplate">
+        <id column="id" property="id"/>
+        <result column="code" property="code"/>
+        <result column="name" property="name"/>
+        <result column="title_tpl" property="titleTpl"/>
+        <result column="content_tpl" property="contentTpl"/>
+        <result column="type" property="type"/>
+        <result column="platform" property="platform"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, code, name, title_tpl, content_tpl, type, platform, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_msg_template
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MesOrderEvaluationMapper.xml b/oying-system/src/main/resources/mapper/message/MesOrderEvaluationMapper.xml
new file mode 100644
index 0000000..f03b56a
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesOrderEvaluationMapper.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesOrderEvaluationMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesOrderEvaluation">
+        <id column="id" property="id"/>
+        <result column="order_id" property="orderId"/>
+        <result column="buyer_id" property="buyerId"/>
+        <result column="order_no" property="orderNo"/>
+        <result column="shop_id" property="shopId"/>
+        <result column="shop_name" property="shopName"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="goods_score" property="goodsScore"/>
+        <result column="goods_content" property="goodsContent"/>
+        <result column="goods_imgs" property="goodsImgs"/>
+        <result column="shop_score" property="shopScore"/>
+        <result column="shop_content" property="shopContent"/>
+        <result column="rider_score" property="riderScore"/>
+        <result column="rider_content" property="riderContent"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, order_id, buyer_id, order_no, shop_id, shop_name, rider_id, rider_name, goods_score, goods_content, goods_imgs, shop_score, shop_content, rider_score, rider_content, is_deleted, create_by, create_time, update_by, update_time
+    </sql>
+    <insert id="addShopEvaluation" parameterType="com.oying.modules.message.domain.myDto.MesOrderEvaluationDto">
+        INSERT INTO mes_order_evaluation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="shopId != null">
+                shop_id,
+            </if>
+            <if test="shopName != null and shopName != ''">
+                shop_name,
+            </if>
+            <if test="shopScore != null">
+                shop_score,
+            </if>
+            <if test="shopContent != null and shopContent != ''">
+                shop_content,
+            </if>
+        </trim>
+        <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
+            <if test="shopId != null">
+                #{shopId},
+            </if>
+            <if test="shopName != null and shopName != ''">
+                #{shopName},
+            </if>
+            <if test="shopScore != null">
+                #{shopScore},
+            </if>
+            <if test="shopContent != null and shopContent != ''">
+                #{shopContent},
+            </if>
+        </trim>
+    </insert>
+
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_order_evaluation
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MesOrderItemEvaluationMapper.xml b/oying-system/src/main/resources/mapper/message/MesOrderItemEvaluationMapper.xml
new file mode 100644
index 0000000..e7b0208
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesOrderItemEvaluationMapper.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesOrderItemEvaluationMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesOrderItemEvaluation">
+        <id column="id" property="id"/>
+        <result column="order_eval_id" property="orderEvalId"/>
+        <result column="order_item_id" property="orderItemId"/>
+        <result column="goods_id" property="goodsId"/>
+        <result column="goods_name" property="goodsName"/>
+        <result column="goods_pic" property="goodsPic"/>
+        <result column="score" property="score"/>
+        <result column="content" property="content"/>
+        <result column="imgs" property="imgs"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, order_eval_id, order_item_id, goods_id, goods_name, goods_pic, score, content, imgs, create_by, create_time, update_by, update_time
+    </sql>
+    <insert id="addGoodsEvaluation" parameterType="com.oying.modules.message.domain.MesOrderItemEvaluationDto">
+        INSERT INTO mes_order_item_evaluation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderEvalId != null">
+                order_eval_id,
+            </if>
+            <if test="orderItemId != null">
+                order_item_id,
+            </if>
+            <if test="goodsId != null">
+                goods_id,
+            </if>
+            <if test="goodsName != null and goodsName != ''">
+                goods_name,
+            </if>
+            <if test="goodsPic != null and goodsPic != ''">
+                goods_pic,
+            </if>
+            <if test="score != null">
+                score,
+            </if>
+            <if test="content != null and content != ''">
+                content,
+            </if>
+            <if test="imgs != null and imgs != ''">
+                imgs,
+            </if>
+        </trim>
+        <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
+            <if test="orderEvalId != null">
+                #{orderEvalId},
+            </if>
+            <if test="orderItemId != null">
+                #{orderItemId},
+            </if>
+            <if test="goodsId != null">
+                #{goodsId},
+            </if>
+            <if test="goodsName != null and goodsName != ''">
+                #{goodsName},
+            </if>
+            <if test="goodsPic != null and goodsPic != ''">
+                #{goodsPic},
+            </if>
+            <if test="score != null">
+                #{score},
+            </if>
+            <if test="content != null and content != ''">
+                #{content},
+            </if>
+            <if test="imgs != null and imgs != ''">
+                #{imgs},
+            </if>
+        </trim>
+    </insert>
+
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_order_item_evaluation
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MesRiderEvaluationMapper.xml b/oying-system/src/main/resources/mapper/message/MesRiderEvaluationMapper.xml
new file mode 100644
index 0000000..da02422
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesRiderEvaluationMapper.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.oying.modules.message.mapper.MesRiderEvaluationMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesRiderEvaluation">
+        <id column="id" property="id"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_no" property="orderNo"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="buyer_id" property="buyerId"/>
+        <result column="score" property="score"/>
+        <result column="content" property="content"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, order_id, order_no, rider_id, rider_name, buyer_id, score, content, create_by, create_time, update_by, update_time
+    </sql>
+    <insert id="addRiderEvaluation" parameterType="com.oying.modules.message.domain.myDto.MesRiderEvaluationDto">
+        INSERT INTO mes_rider_evaluation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">
+                order_id,
+            </if>
+            <if test="orderNo != null and orderNo != ''">
+                order_no,
+            </if>
+            <if test="riderId != null">
+                rider_id,
+            </if>
+            <if test="riderName != null and riderName != ''">
+                rider_name,
+            </if>
+            <if test="buyerId != null and buyerId != ''">
+                buyer_id,
+            </if>
+            <if test="score != null">
+                score,
+            </if>
+            <if test="content != null and content != ''">
+                content,
+            </if>
+            <if test="imgs != null and imgs != ''">
+                imgs,
+            </if>
+        </trim>
+        <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">
+                #{orderId},
+            </if>
+            <if test="orderNo != null and orderNo != ''">
+                #{orderNo},
+            </if>
+            <if test="riderId != null">
+                #{riderId},
+            </if>
+            <if test="riderName != null and riderName != ''">
+                #{riderName},
+            </if>
+            <if test="buyerId != null and buyerId != ''">
+                #{buyerId},
+            </if>
+            <if test="score != null">
+                #{score},
+            </if>
+            <if test="content != null and content != ''">
+                #{content},
+            </if>
+            <if test="imgs != null and imgs != ''">
+                #{imgs},
+            </if>
+        </trim>
+    </insert>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from mes_rider_evaluation
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MessageSystemMapper.xml b/oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml
similarity index 65%
rename from oying-system/src/main/resources/mapper/message/MessageSystemMapper.xml
rename to oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml
index 8ef7543..f2ec744 100644
--- a/oying-system/src/main/resources/mapper/message/MessageSystemMapper.xml
+++ b/oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml
@@ -1,24 +1,25 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.message.mapper.MessageSystemMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageSystem">
+<mapper namespace="com.oying.modules.message.mapper.MesShopReplyMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesShopReply">
         <id column="id" property="id"/>
-        <result column="start_time" property="startTime"/>
-        <result column="end_time" property="endTime"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
+        <result column="evaluation_id" property="evaluationId"/>
+        <result column="reply_type" property="replyType"/>
+        <result column="content" property="content"/>
         <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
         <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id, start_time, end_time, create_time, update_time, create_by, update_by
+        id, evaluation_id, reply_type, content, create_by, create_time, update_by, update_time
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
-        from message_system
+        from mes_shop_reply
         <where>
         </where>
         order by id desc
diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderBuyerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderBuyerMapper.xml
deleted file mode 100644
index af70f58..0000000
--- a/oying-system/src/main/resources/mapper/message/MessageOrderBuyerMapper.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.message.mapper.MessageOrderBuyerMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderBuyer">
-        <id column="id" property="id"/>
-        <result column="order_id" property="orderId"/>
-        <result column="message_type" property="messageType"/>
-        <result column="message_content" property="messageContent"/>
-        <result column="link" property="link"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="create_by" property="createBy"/>
-        <result column="update_by" property="updateBy"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id, order_id, message_type, message_content, link, create_time, update_time, create_by, update_by
-    </sql>
-
-    <select id="findAll" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from message_order_buyer
-        <where>
-        </where>
-        order by id desc
-    </select>
-</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderLeaveMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderLeaveMapper.xml
deleted file mode 100644
index b79908d..0000000
--- a/oying-system/src/main/resources/mapper/message/MessageOrderLeaveMapper.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.message.mapper.MessageOrderLeaveMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderLeave">
-        <id column="id" property="id"/>
-        <result column="order_id" property="orderId"/>
-        <result column="customer_review" property="customerReview"/>
-        <result column="seller_reply" property="sellerReply"/>
-        <result column="link" property="link"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="create_by" property="createBy"/>
-        <result column="update_by" property="updateBy"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id, order_id, customer_review, seller_reply, link, create_time, update_time, create_by, update_by
-    </sql>
-
-    <select id="findAll" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from message_order_leave
-        <where>
-        </where>
-        order by id desc
-    </select>
-</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
deleted file mode 100644
index 03a2b9c..0000000
--- a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.message.mapper.MessageOrderSellerMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderSeller">
-        <id column="id" property="id"/>
-        <result column="order_id" property="orderId"/>
-        <result column="store_id" property="storeId"/>
-        <result column="message_type" property="messageType"/>
-        <result column="message_content" property="messageContent"/>
-        <result column="link" property="link"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="create_by" property="createBy"/>
-        <result column="update_by" property="updateBy"/>
-        <result column="flag" property="flag"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id, order_id,store_id, message_type, message_content, link, create_time, update_time, create_by, update_by,flag
-    </sql>
-
-    <insert id="saveMessageOrderSellerByOrderIdAndStoreId" parameterType="com.oying.modules.message.domain.MessageOrderSeller">
-        #             动态sql 必须插入 order_id store_id   其他字段可以选择性插入 flag默认插入0
-        <!-- 动态 SQL:必须插入 order_id 和 store_id -->
-        <!-- 其他字段可以选择性插入 -->
-        INSERT INTO message_order_seller (
-        order_id,
-        store_id,
-        <if test="messageType != null">message_type,</if>
-        <if test="messageContent != null">message_content,</if>
-        <if test="link != null">link,</if>
-        flag
-        ) VALUES (
-        #{orderId},
-        #{storeId},
-        <if test="messageType != null">#{messageType},</if>
-        <if test="messageContent != null">#{messageContent},</if>
-        <if test="link != null">#{link},</if>
-        0
-        )
-    </insert>
-
-    <select id="findAll" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from message_order_seller
-        <where>
-        </where>
-        order by id desc
-    </select>
-
-    <select id="findByStoreId" resultType="com.oying.modules.message.domain.MessageOrderSeller"
-            parameterType="java.lang.String">
-#     根据store_id(不是主键)返回 list
-        select
-        <include refid="Base_Column_List"/>
-        from message_order_seller
-        where store_id = #{storeId} and flag = 0
-        order by id desc
-    </select>
-    <update id="updateMessageOrderSellerRead" parameterType="java.lang.Integer">
-        update message_order_seller
-        set flag = 1
-        where order_id = #{orderId}
-    </update>
-    <update id="updateReadStatusById">
-        update message_order_seller
-        set flag = 1
-        where id = #{id}
-    </update>
-
-
-</mapper>
diff --git a/oying-system/src/main/resources/mapper/message/MessageSystemAdvertiseMapper.xml b/oying-system/src/main/resources/mapper/message/MessageSystemAdvertiseMapper.xml
deleted file mode 100644
index 97ad099..0000000
--- a/oying-system/src/main/resources/mapper/message/MessageSystemAdvertiseMapper.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.message.mapper.MessageSystemAdvertiseMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageSystemAdvertise">
-        <id column="id" property="id"/>
-        <result column="title" property="title"/>
-        <result column="content" property="content"/>
-        <result column="image_url" property="imageUrl"/>
-        <result column="link_url" property="linkUrl"/>
-        <result column="status" property="status"/>
-        <result column="create_by" property="createBy"/>
-        <result column="update_by" property="updateBy"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_time" property="updateTime"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id, title, content, image_url, link_url, status, create_by, update_by, create_time, update_time
-    </sql>
-
-    <select id="findAll" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from message_system_advertise
-        <where>
-        </where>
-        order by id desc
-    </select>
-</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/pc/product/ProductAuditMapper.xml b/oying-system/src/main/resources/mapper/pc/product/ProductAuditMapper.xml
index a7f5155..3cad00d 100644
--- a/oying-system/src/main/resources/mapper/pc/product/ProductAuditMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/product/ProductAuditMapper.xml
@@ -16,25 +16,62 @@
         <result column="update_time" property="updateTime"/>
     </resultMap>
 
+    <resultMap id="JoinResultMap" type="com.oying.modules.pc.product.view.ProductAuditView">
+        <result column="product_id" property="productId"/>
+        <result column="product_name" property="productName"/>
+        <result column="product_title" property="productTitle"/>
+        <result column="audit_id" property="auditId"/>
+        <result column="type" property="type"/>
+        <result column="status" property="status"/>
+        <result column="data" property="data"/>
+        <result column="reason" property="reason"/>
+        <result column="auditor" property="auditor"/>
+        <result column="audit_time" property="auditTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
     <sql id="Base_Column_List">
         audit_id, product_id, type, status, reason, auditor, audit_time, data, create_by, create_time, update_by, update_time
     </sql>
 
-    <select id="findAll" resultMap="BaseResultMap">
+    <sql id="Join_Column_List">
+        p.name as product_name, p.title as product_title,
+        pa.audit_id, pa.product_id, pa.type, pa.status, pa.reason, pa.auditor, pa.audit_time, pa.data, pa.create_by, pa.create_time, pa.update_by, pa.update_time
+    </sql>
+
+    <select id="findAll" resultMap="JoinResultMap">
         select
-        <include refid="Base_Column_List"/>
-        from pc_product_audit
+        <include refid="Join_Column_List"/>
+        from pc_product_audit as pa left join pc_product as p on pa.product_id = p.product_id
         <where>
+            <if test="criteria.blurry != null and criteria.blurry != ''">
+                and p.name like concat('%', #{criteria.blurry}, '%')
+            </if>
+            <if test="criteria.productName != null and criteria.productName != ''">
+                and p.name like concat('%', #{criteria.productName}, '%')
+            </if>
+            <if test="criteria.blurry != null and criteria.blurry != ''">
+                and p.title like concat('%', #{criteria.blurry}, '%')
+            </if>
+            <if test="criteria.productTitle != null and criteria.productTitle != ''">
+                and p.title like concat('%', #{criteria.productTitle}, '%')
+            </if>
             <if test="criteria.productId != null">
-                and product_id = #{criteria.productId}
+                and pa.product_id = #{criteria.productId}
             </if>
             <if test="criteria.type != null and criteria.type != ''">
-                and type = #{criteria.type}
+                and pa.type = #{criteria.type}
             </if>
             <if test="criteria.status != null">
-                and status = #{criteria.status}
+                and pa.status = #{criteria.status}
+            </if>
+            <if test="criteria.createBy != null and criteria.createBy != ''">
+                and pa.create_by = #{criteria.createBy}
             </if>
         </where>
-        order by audit_id desc
+        order by pa.audit_id desc
     </select>
 </mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml b/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
index 209639f..c9caf4c 100644
--- a/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
@@ -11,6 +11,7 @@
         <result column="category_id" property="categoryId"/>
         <result column="second_category_id" property="secondCategoryId"/>
         <result column="status" property="status"/>
+        <result column="shelf_status" property="shelfStatus"/>
         <result column="main_image_id" property="mainImageId"/>
         <result column="main_image_Url" property="mainImageUrl"/>
         <result column="description" property="description"/>
@@ -33,13 +34,13 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        product_id, store_id, code, barcode, name, title, category_id, second_category_id, status, main_image_id, main_image_url, description, price, stock_quantity, min_purchase_quantity, warn_stock, weight, width, length, height, returns, self_pickup, deleted_flag, create_by, create_time, update_by, update_time, version
+        product_id, store_id, code, barcode, name, title, category_id, second_category_id, status, shelf_status, main_image_id, main_image_url, description, price, stock_quantity, min_purchase_quantity, warn_stock, weight, width, length, height, returns, self_pickup, deleted_flag, create_by, create_time, update_by, update_time, version
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
-        select
+        SELECT
         <include refid="Base_Column_List"/>
-        from pc_product
+        FROM pc_product
         <where>
             <if test="criteria.storeId != null">
                 and store_id = #{criteria.storeId}
@@ -56,13 +57,27 @@
             <if test="criteria.status != null">
                 and status = #{criteria.status}
             </if>
+            <if test="criteria.shelfStatus != null">
+                and shelf_status = #{criteria.shelfStatus}
+            </if>
             <if test="criteria.active != null">
                 and active = #{criteria.active}
             </if>
         </where>
-        order by product_id desc
+        <!--<if test="criteria.sortColumn != null and criteria.sortColumn != ''">
+            order by ${criteria.sortColumn} ${criteria.sortDirection}
+        </if>-->
+        ORDER BY
+        <choose>
+            <!-- 价格升序 -->
+            <when test="criteria.sortColumn == 'price' and criteria.sortDirection == 'asc'">price ASC</when>
+            <!-- 价格降序 -->
+            <when test="criteria.sortColumn == 'price' and criteria.sortDirection == 'desc'">price DESC</when>
+            <!-- 创建时间降序(默认) -->
+            <otherwise>create_time DESC</otherwise>
+        </choose>
         <if test="criteria.limit != null">
-            limit #{criteria.limit}
+            LIMIT #{criteria.limit}
         </if>
     </select>
 
diff --git a/oying-system/src/main/resources/mapper/pc/store/StoreAuditMapper.xml b/oying-system/src/main/resources/mapper/pc/store/StoreAuditMapper.xml
index 45844e3..658d0fc 100644
--- a/oying-system/src/main/resources/mapper/pc/store/StoreAuditMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/store/StoreAuditMapper.xml
@@ -16,25 +16,55 @@
         <result column="update_time" property="updateTime"/>
     </resultMap>
 
+    <resultMap id="JoinResultMap" type="com.oying.modules.pc.store.view.StoreAuditView">
+        <result column="store_name" property="storeName"/>
+        <result column="audit_id" property="auditId"/>
+        <result column="store_id" property="storeId"/>
+        <result column="type" property="type"/>
+        <result column="status" property="status"/>
+        <result column="data" property="data"/>
+        <result column="reason" property="reason"/>
+        <result column="auditor" property="auditor"/>
+        <result column="audit_time" property="auditTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
     <sql id="Base_Column_List">
         audit_id, store_id, type, status, reason, auditor, audit_time, data, create_by, create_time, update_by, update_time
     </sql>
 
-    <select id="findAll" resultMap="BaseResultMap">
+    <sql id="Join_Column_List">
+        s.store_name,
+        sa.audit_id, sa.store_id, sa.type, sa.status, sa.reason, sa.auditor, sa.audit_time, sa.data, sa.create_by, sa.create_time, sa.update_by, sa.update_time
+    </sql>
+
+    <select id="findAll" resultMap="JoinResultMap">
         select
-        <include refid="Base_Column_List"/>
-        from pc_store_audit
+        <include refid="Join_Column_List"/>
+        from pc_store_audit as sa left join pc_store s on sa.store_id = s.store_id
         <where>
+            <if test="criteria.blurry != null and criteria.blurry != ''">
+                and s.store_name like concat('%', #{criteria.blurry}, '%')
+            </if>
+            <if test="criteria.storeName != null and criteria.storeName != ''">
+                and s.store_name like concat('%', #{criteria.storeName}, '%')
+            </if>
             <if test="criteria.storeId != null">
-                and store_id = #{criteria.storeId}
+                and sa.store_id = #{criteria.storeId}
             </if>
             <if test="criteria.type != null and criteria.type != ''">
-                and type = #{criteria.type}
+                and sa.type = #{criteria.type}
             </if>
             <if test="criteria.status != null">
-                and status = #{criteria.status}
+                and sa.status = #{criteria.status}
+            </if>
+            <if test="criteria.createBy != null and criteria.createBy != ''">
+                and sa.create_by = #{criteria.createBy}
             </if>
         </where>
-        order by audit_id desc
+        order by sa.audit_id desc
     </select>
 </mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml b/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
index ccbbecf..8182980 100644
--- a/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
@@ -23,6 +23,7 @@
         <result property="tags" column="tags"/>
         <result property="deliveryFee" column="delivery_fee"/>
         <result property="deliveryMinimum" column="delivery_minimum"/>
+        <result property="packagingFee" column="packaging_fee"/>
         <result property="contactPhone" column="contact_phone"/>
         <result property="openTime" column="open_time"/>
         <result property="closeTime" column="close_time"/>
@@ -43,14 +44,14 @@
 
     <sql id="store_column_list">
         store_id, merchant_id, platform_category_id, store_type, store_code, store_name, business_scope, status, business_status, audit_status, logo_image_id, logo_image_url,
-        cover_image_id, cover_image_url, description, tags, delivery_fee, delivery_minimum, contact_phone, open_time, close_time,
+        cover_image_id, cover_image_url, description, tags, delivery_fee, delivery_minimum, packaging_fee, contact_phone, open_time, close_time,
         address, longitude, latitude, geo_hash, geo_point, coordinate_system, radius, returns, self_pickup, create_by, create_time, update_by, update_time, version
     </sql>
 
     <sql id="selectStoreVo">
         select
         store_id, merchant_id, platform_category_id, store_type, store_code, store_name, business_scope, status, business_status, audit_status, logo_image_id, logo_image_url,
-        cover_image_id, cover_image_url, description, tags, delivery_fee, delivery_minimum, contact_phone, open_time, close_time,
+        cover_image_id, cover_image_url, description, tags, delivery_fee, delivery_minimum, packaging_fee, contact_phone, open_time, close_time,
         address, longitude, latitude, geo_hash, geo_point, coordinate_system, radius, returns, self_pickup, create_by, create_time, update_by, update_time, version from pc_store
     </sql>
 
@@ -126,7 +127,7 @@
 
             <!-- 店铺名称模糊查询 AND s.name LIKE CONCAT('%', #{criteria.blurry}, '%') -->
             <if test="criteria.blurry != null and criteria.blurry != ''">
-                AND MATCH(s.store_name) AGAINST(#{criteria.blurry} IN NATURAL LANGUAGE MODE)
+                AND s.store_name like concat('%', #{criteria.blurry}, '%')
             </if>
 
             <!-- 营业状态 -->
diff --git a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
index 4ec5aec..6417087 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
@@ -9,6 +9,8 @@
         <result column="order_status_describe" property="orderStatusDescribe"/>
         <result column="order_remark" property="orderRemark"/>
         <result column="order_time" property="orderTime"/>
+        <result column="order_finish_time" property="orderFinishTime"/>
+        <result column="packaging_price" property="packagingPrice"/>
         <result column="send_price" property="sendPrice"/>
         <result column="send_type" property="sendType"/>
         <result column="user_id" property="userId"/>
@@ -63,7 +65,7 @@
 
     <sql id="Base_Column_List">
         o.order_id, o.order_num, o.order_store_num, o.order_status, o.order_status_describe,
-        o.order_remark, o.order_time, o.send_price, o.send_type, o.user_id, o.username, o.store_id,
+        o.order_remark, o.order_time, o.order_finish_time, o.packaging_price, o.send_price, o.send_type, o.user_id, o.username, o.store_id,
         o.store_name, o.store_logo, o.store_address, o.store_longitude, o.store_latitude,
         o.order_describe, o.original_price order_original_price, o.paid_price order_paid_price,
         o.actually_pay_price order_actually_pay_price, o.pay_state order_pay_state, o.pay_message, o.pay_type, o.pay_time, o.expire_time,
diff --git a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
index 86f4724..21bb698 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
@@ -6,6 +6,7 @@
         <result column="username" property="username"/>
         <result column="user_type" property="userType"/>
         <result column="operation" property="operation"/>
+        <result column="operation_type" property="operationType"/>
         <result column="operation_describe" property="operationDescribe"/>
         <result column="remark" property="remark"/>
         <result column="snapshot_data" property="snapshotData"/>
@@ -14,7 +15,7 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        log_id, username, user_type, operation, operation_describe, remark, snapshot_data, operation_time, order_num
+        log_id, username, user_type, operation, operation_type, operation_describe, remark, snapshot_data, operation_time, order_num
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
@@ -41,6 +42,10 @@
         select
         <include refid="Base_Column_List"/>
         from sh_order_operation_log
-        where order_num = #{orderNum} order by log_id
+        where order_num = #{orderNum}
+        <if test="type!= null and type != ''">
+           and operation_type = #{type}
+        </if>
+        order by log_id
     </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
index 53e1556..2829091 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
@@ -9,6 +9,7 @@
         <result column="order_num" property="orderNum"/>
         <result column="order_store_num" property="orderStoreNum"/>
         <result column="order_time" property="orderTime"/>
+        <result column="packaging_price" property="packagingPrice"/>
         <result column="send_price" property="sendPrice"/>
         <result column="send_type" property="sendType"/>
         <result column="pay_type" property="payType"/>
@@ -58,7 +59,7 @@
 
     <sql id="Base_Column_List">
         o.return_id, o.return_num, o.return_status, o.return_status_describe, o.order_num, o.order_store_num,
-        o.order_time, o.send_price, o.send_type, o.pay_type, o.user_id, o.username, o.store_id, o.store_name, o.store_logo,
+        o.order_time, o.packaging_price, o.send_price, o.send_type, o.pay_type, o.user_id, o.username, o.store_id, o.store_name, o.store_logo,
         o.original_price order_original_price, o.paid_price order_paid_price, o.actually_pay_price order_actually_pay_price,
         o.refund_price, o.refund_status, o.success_time, o.channel, o.reason, o.remark, o.photos, o.audit_status,
         o.audit_user, o.audit_time, o.audit_message, o.rider_id, o.rider_phone, o.rider_name,
@@ -131,9 +132,16 @@
 
     <update id="updatePayStatus">
         update sh_order_return
-        set return_status = #{payState},
-            success_time  = #{payTime}
-        where order_num = #{orderNum}
+        set refund_status = #{refundStatus},
+            success_time  = #{successTime}
+        where return_num = #{returnNum}
+    </update>
+    <update id="updateStatus">
+        update sh_order_return
+        set return_status = #{returnStatus},
+            return_status_describe = #{value},
+            audit_status  = #{auditStatus}
+        where return_num = #{returnNum}
     </update>
 
     <select id="findAll" resultMap="BaseResultMap">
@@ -150,7 +158,7 @@
         ) o
         left join sh_order_return_product_snapshot as p on p.return_num = o.return_num
         <include refid="Where_Sql_Product"/>
-        order by o.order_id desc
+        order by o.return_id desc
     </select>
     <select id="getByReturnNum" resultMap="BaseResultMap">
         select o.* from ( select
@@ -172,4 +180,10 @@
         <include refid="Where_Sql_Product"/>
         ) t
     </select>
+    <select id="getByOrderNum" resultType="com.oying.modules.sh.domain.OrderReturn">
+        select
+        <include refid="Base_Column_List"/>
+        from sh_order_return as o
+        where o.order_num = #{orderNum} and o.audit_status = #{status}
+    </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
deleted file mode 100644
index 34006bf..0000000
--- a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.oying.modules.sh.mapper.OrderReturnOperationLogMapper">
-    <resultMap id="BaseResultMap" type="com.oying.modules.sh.domain.OrderReturnOperationLog">
-        <id column="log_id" property="logId"/>
-        <result column="return_num" property="returnNum"/>
-        <result column="username" property="username"/>
-        <result column="user_type" property="userType"/>
-        <result column="operation" property="operation"/>
-        <result column="operation_describe" property="operationDescribe"/>
-        <result column="remark" property="remark"/>
-        <result column="snapshot_data" property="snapshotData"/>
-        <result column="operation_time" property="operationTime"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        log_id, return_num, username, user_type, operation, operation_describe, remark, snapshot_data, operation_time
-    </sql>
-
-    <select id="findAll" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from sh_order_return_operation_log
-        <where>
-            <if test="criteria.returnNum != null">
-                and return_num = #{criteria.returnNum}
-            </if>
-            <if test="criteria.username != null">
-                and username like concat('%',#{criteria.username},'%')
-            </if>
-            <if test="criteria.userType != null">
-                and user_type = #{criteria.userType}
-            </if>
-            <if test="criteria.operationTime != null and criteria.operationTime.size() > 0">
-                AND operation_time BETWEEN #{criteria.operationTime[0]} AND #{criteria.operationTime[1]}
-            </if>
-        </where>
-        order by log_id desc
-    </select>
-    <select id="getByReturnNum" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from sh_order_return_operation_log
-        where return_num = #{returnNum}
-        order by log_id
-    </select>
-</mapper>

--
Gitblit v1.9.3