From 6017102b1d6affc7255e9f2df6f9e45e0b1a75fb Mon Sep 17 00:00:00 2001
From: leomon <2233021400@qq.com>
Date: Wed, 30 Jul 2025 06:15:51 +0800
Subject: [PATCH] 订单评价 数据库添加字段

---
 oying-system/src/main/java/com/oying/modules/message/service/MesOrderEvaluationService.java              |   63 
 oying-system/src/main/resources/mapper/message/MesRiderEvaluationMapper.xml                              |   86 +
 oying-system/src/main/java/com/oying/modules/message/mapper/MesCustomerCommentMsgMapper.java             |   26 
 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/message/domain/myDto/MesMsgRecordQueryPollDto.java          |   76 +
 oying-system/src/main/java/com/oying/modules/message/mapper/MesAdvertisementMapper.java                  |   22 
 oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java              |   90 +
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesMsgRecordQuerySystemDto.java        |   76 +
 oying-system/src/main/java/com/oying/modules/message/domain/MesShopReply.java                            |   60 
 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     |   89 +
 oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml                                    |  113 +
 oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderItemEvaluationMapper.java            |   25 
 oying-system/src/main/java/com/oying/modules/message/rest/MesMsgTemplateController.java                  |   73 +
 oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java                    |   78 +
 oying-system/src/main/java/com/oying/modules/message/domain/MesAdvertisement.java                        |  109 +
 oying-system/src/main/java/com/oying/modules/message/service/MesMsgTemplateService.java                  |   60 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgTemplateServiceImpl.java         |   83 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java  |   18 
 oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java                    |  172 ++
 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/message/service/MesCustomerCommentMsgService.java           |   63 
 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-system/src/main/java/com/oying/modules/message/domain/MesOrderEvaluation.java                      |  102 +
 oying-system/src/main/java/com/oying/modules/message/domain/MesMsgTemplate.java                          |   72 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java     |   97 +
 oying-system/src/main/resources/mapper/message/MesAdvertisementMapper.xml                                |   41 
 oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java                            |  118 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java     |   18 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java     |   18 
 oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java                      |   39 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java       |   18 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesCustomerCommentMsgDTO.java          |   81 +
 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          |   90 +
 oying-system/src/main/resources/mapper/message/MesCustomerCommentMsgMapper.xml                           |   50 
 oying-system/src/main/java/com/oying/modules/message/domain/MesCustomerCommentMsg.java                   |   95 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java           |   18 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java  |   89 +
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesAdvertisementServiceImpl.java       |   93 +
 oying-system/src/main/java/com/oying/modules/message/mapper/MesOrderEvaluationMapper.java                |   26 
 oying-system/src/main/java/com/oying/modules/message/common/BizTypeEnum.java                             |   58 
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java           |   18 
 oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java                         |    1 
 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/message/rest/MesCustomerCommentMsgController.java           |   90 +
 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/message/rest/MesShopReplyController.java                    |   73 +
 oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java                             |   59 
 oying-system/src/main/java/com/oying/modules/message/service/MesShopReplyService.java                    |   60 
 oying-system/src/main/java/com/oying/modules/message/service/MesRiderEvaluationService.java              |   63 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesRiderEvaluationDto.java             |   50 
 oying-system/src/main/resources/mapper/message/MesOrderEvaluationMapper.xml                              |   71 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java           |  132 +
 oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml                                    |   27 
 oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java |   90 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java |   18 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderEvaluationDto.java             |   54 
 oying-system/src/main/java/com/oying/modules/message/domain/MesRiderEvaluation.java                      |   80 +
 oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java         |   18 
 oying-system/src/main/java/com/oying/modules/message/domain/myDto/MesOrderItemEvaluationDto.java         |   78 +
 oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java              |   90 +
 oying-system/src/main/java/com/oying/modules/message/common/PlatFormEnum.java                            |   59 
 69 files changed, 4,351 insertions(+), 0 deletions(-)

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..fcf6782
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
@@ -0,0 +1,59 @@
+package com.oying.modules.message.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MesTypeEnum {
+    //1=系统 2=订单 3=评价/留言
+    SYSTEM(1, "系统"),
+    ORDER(2, "订单"),
+    COMMENT(3, "评价/留言");
+
+    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/OrderStatusEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
index ea390f5..ac02a02 100644
--- a/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
+++ b/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
@@ -17,6 +17,7 @@
 @Getter
 @AllArgsConstructor
 public enum OrderStatusEnum {
+    //订单消息  通知状态   用于插入
 
     ZERO(0, "订单已提交"),
     ONE(1, "支付成功"),
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..31436bf
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
@@ -0,0 +1,118 @@
+package com.oying.modules.message.domain;
+
+import com.oying.base.BaseEntity;
+import com.oying.modules.message.common.MesTypeEnum;
+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_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;
+
+    @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;
+
+    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/dto/MesAdvertisementQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java
new file mode 100644
index 0000000..0c6c906
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesAdvertisementQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesAdvertisementQueryCriteria{
+
+    @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/MesCustomerCommentMsgQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java
new file mode 100644
index 0000000..3bb1cab
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesCustomerCommentMsgQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesCustomerCommentMsgQueryCriteria{
+
+    @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/MesMsgRecordQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java
new file mode 100644
index 0000000..0846a71
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgRecordQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesMsgRecordQueryCriteria{
+
+    @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/MesMsgTemplateQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java
new file mode 100644
index 0000000..e4f2a77
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesMsgTemplateQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesMsgTemplateQueryCriteria{
+
+    @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/MesOrderEvaluationQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java
new file mode 100644
index 0000000..81b4dd3
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderEvaluationQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesOrderEvaluationQueryCriteria{
+
+    @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/MesOrderItemEvaluationQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java
new file mode 100644
index 0000000..877cf66
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesOrderItemEvaluationQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesOrderItemEvaluationQueryCriteria{
+
+    @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/MesRiderEvaluationQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java
new file mode 100644
index 0000000..7017726
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesRiderEvaluationQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesRiderEvaluationQueryCriteria{
+
+    @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/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/MesShopReplyQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java
new file mode 100644
index 0000000..15795db
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MesShopReplyQueryCriteria.java
@@ -0,0 +1,18 @@
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author 李萌
+* @date 2025-07-25
+**/
+@Data
+public class MesShopReplyQueryCriteria{
+
+    @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..c466fcf
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
@@ -0,0 +1,39 @@
+package com.oying.modules.message.mapper;
+
+import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.domain.MesMsgRecord;
+import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
+import java.util.List;
+
+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.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 MesMsgRecordMapper extends BaseMapper<MesMsgRecord> {
+
+    IPage<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+    List<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria);
+
+    List<MesMsgRecordQueryPollDto> PollMes(Long platform);
+
+    void batchMarkRead(Long platform,List<Long> msgIds);
+
+    IPage<MesMsgRecordQuerySystemDto> queryAllSysNotice(@Param("criteria")MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+    List<MesMsgRecordQueryOrderDto> queryorder(Long shopId);
+
+
+
+//    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/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..ec4a9f7
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesCustomerCommentMsgController.java
@@ -0,0 +1,90 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.dto.MesShopMsgRespDTO;
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+import com.oying.modules.message.service.MesCustomerCommentMsgService;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+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-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@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..6d08391
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
@@ -0,0 +1,172 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.common.PlatFormEnum;
+import com.oying.modules.message.domain.MesMsgRecord;
+import com.oying.modules.message.domain.dto.MesShopMsgRespDTO;
+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.modules.message.domain.dto.MesMsgRecordQueryCriteria;
+import com.oying.utils.R;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+
+import lombok.extern.slf4j.Slf4j;
+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
+**/
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@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=骑手"
+    @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 {
+            List<MesMsgRecordQueryPollDto> mes=mesMsgRecordService.PollMes(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("批量确认收到消息")
+    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(@PathVariable 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 获取订单消息失败");
+
+        }
+
+    }
+
+
+
+
+
+
+}
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..2a8d088
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderEvaluationController.java
@@ -0,0 +1,90 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesOrderEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+import com.oying.modules.message.service.MesOrderEvaluationService;
+import com.oying.modules.message.domain.dto.MesOrderEvaluationQueryCriteria;
+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-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@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..77a120f
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesOrderItemEvaluationController.java
@@ -0,0 +1,90 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesOrderItemEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.service.MesOrderItemEvaluationService;
+import com.oying.modules.message.domain.dto.MesOrderItemEvaluationQueryCriteria;
+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-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@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..390e5c8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesRiderEvaluationController.java
@@ -0,0 +1,90 @@
+package com.oying.modules.message.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+import com.oying.modules.message.domain.MesRiderEvaluation;
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+import com.oying.modules.message.service.MesRiderEvaluationService;
+import com.oying.modules.message.domain.dto.MesRiderEvaluationQueryCriteria;
+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-07-25
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "消息")
+@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/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..ea76e69
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesCustomerCommentMsgService.java
@@ -0,0 +1,63 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+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.MesCustomerCommentMsgDTO;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @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);
+}
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..eecc38e
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
@@ -0,0 +1,78 @@
+package com.oying.modules.message.service;
+
+import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.domain.MesMsgRecord;
+import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
+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.MesMsgRecordQueryOrderDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author 李萌
+* @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);
+
+    void batchMarkRead(Long platform,List<Long> msgIds);
+
+    PageResult<MesMsgRecordQuerySystemDto> queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page<Object> page);
+
+
+    List<MesMsgRecordQueryOrderDto> queryorder(Long shopId);
+
+    //插入订单消息
+//    入参     订单编号 订单状态(内容)  店铺id
+    void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId);
+
+}
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/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..3683651
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesCustomerCommentMsgServiceImpl.java
@@ -0,0 +1,89 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesCustomerCommentMsg;
+import com.oying.modules.message.domain.myDto.MesCustomerCommentMsgDTO;
+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.MesCustomerCommentMsgService;
+import com.oying.modules.message.domain.dto.MesCustomerCommentMsgQueryCriteria;
+import com.oying.modules.message.mapper.MesCustomerCommentMsgMapper;
+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-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);
+    }
+}
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..95d4514
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
@@ -0,0 +1,132 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.common.MesReadEnum;
+import com.oying.modules.message.common.MesTypeEnum;
+import com.oying.modules.message.common.OrderStatusEnum;
+import com.oying.modules.message.domain.MesMsgRecord;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
+import com.oying.utils.FileUtil;
+import com.oying.utils.SecurityUtils;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.message.service.MesMsgRecordService;
+import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
+import com.oying.modules.message.mapper.MesMsgRecordMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+
+import java.sql.Timestamp;
+import java.util.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import com.oying.utils.PageResult;
+
+/**
+ * @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) {
+        return mesMsgRecordMapper.PollMes(platform);
+    }
+
+    @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 void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) {
+        MesMsgRecord record = new MesMsgRecord();
+        record.setOrderNo(orderNo);
+        record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+        record.setShopId(shopId);
+        record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+        record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+        record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+        try {
+            mesMsgRecordMapper.insert(record);
+        } catch (Exception e) {
+          log.error("插入订单消息失败:{}", e);
+        }
+
+    }
+}
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..e5792cc
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderEvaluationServiceImpl.java
@@ -0,0 +1,97 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesOrderEvaluation;
+import com.oying.modules.message.domain.myDto.MesOrderEvaluationDto;
+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.MesOrderEvaluationService;
+import com.oying.modules.message.domain.dto.MesOrderEvaluationQueryCriteria;
+import com.oying.modules.message.mapper.MesOrderEvaluationMapper;
+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 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);
+    }
+
+    @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..59e9e77
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesOrderItemEvaluationServiceImpl.java
@@ -0,0 +1,90 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesOrderItemEvaluation;
+import com.oying.modules.message.domain.MesOrderItemEvaluationDto;
+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.MesOrderItemEvaluationService;
+import com.oying.modules.message.domain.dto.MesOrderItemEvaluationQueryCriteria;
+import com.oying.modules.message.mapper.MesOrderItemEvaluationMapper;
+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 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
+    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..2f5ffc6
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesRiderEvaluationServiceImpl.java
@@ -0,0 +1,89 @@
+package com.oying.modules.message.service.impl;
+
+import com.oying.modules.message.domain.MesRiderEvaluation;
+import com.oying.modules.message.domain.myDto.MesRiderEvaluationDto;
+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.MesRiderEvaluationService;
+import com.oying.modules.message.domain.dto.MesRiderEvaluationQueryCriteria;
+import com.oying.modules.message.mapper.MesRiderEvaluationMapper;
+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 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
+    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/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..e204aaf
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
@@ -0,0 +1,113 @@
+<?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>
+    <!-- 使用专门的 resultMap 进行映射 -->
+    <select id="PollMes" parameterType="java.lang.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="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>
+</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/MesShopReplyMapper.xml b/oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml
new file mode 100644
index 0000000..f2ec744
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/message/MesShopReplyMapper.xml
@@ -0,0 +1,27 @@
+<?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.MesShopReplyMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MesShopReply">
+        <id column="id" property="id"/>
+        <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, 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 mes_shop_reply
+        <where>
+        </where>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3