Просмотр исходного кода

mp:增加【自动回复】的分页接口

YunaiV 2 лет назад
Родитель
Сommit
ab41c96641
23 измененных файлов с 296 добавлено и 24 удалено
  1. 3 3
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuBaseVO.java
  2. 5 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.http
  3. 40 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.java
  4. 4 4
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpMessageController.java
  5. 110 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyBaseVO.java
  6. 25 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyCreateReqVO.java
  7. 22 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyPageReqVO.java
  8. 23 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyRespVO.java
  9. 21 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyUpdateReqVO.java
  10. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageBaseVO.java
  11. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessagePageReqVO.java
  12. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageRespVO.java
  13. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageSendReqVO.java
  14. 4 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpAutoReplyConvert.java
  15. 2 2
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpMessageConvert.java
  16. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/message/MpAutoReplyDO.java
  17. 8 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpAutoReplyMapper.java
  18. 1 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java
  19. 11 1
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpAutoReplyService.java
  20. 7 0
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpAutoReplyServiceImpl.java
  21. 2 2
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageService.java
  22. 2 2
      yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageServiceImpl.java
  23. 1 4
      yudao-ui-admin/src/views/mp/autoReply/index.vue

+ 3 - 3
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuBaseVO.java

@@ -63,9 +63,9 @@ public class MpMenuBaseVO {
 
     // ========== 消息内容 ==========
 
-    @ApiModelProperty(value = "消息类型", example = "text",
+    @ApiModelProperty(value = "回复的消息类型", example = "text",
             notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
-    @NotEmpty(message = "消息类型不能为空", groups = {ClickButtonGroup.class, ScanCodeWaitMsgButtonGroup.class})
+    @NotEmpty(message = "回复的消息类型不能为空", groups = {ClickButtonGroup.class, ScanCodeWaitMsgButtonGroup.class})
     private String replyMessageType;
 
     @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
@@ -104,7 +104,7 @@ public class MpMenuBaseVO {
     @Valid
     private List<MpMessageDO.Article> replyArticles;
 
-    @ApiModelProperty(value = "音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
+    @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
     @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
     @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
     private String replyMusicUrl;

+ 5 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.http

@@ -0,0 +1,5 @@
+### 请求 /mp/message/page 接口 => 成功
+GET {{baseUrl}}/mp/auto-reply/page?accountId=1&pageNo=1&pageSize=10
+Content-Type: application/json
+Authorization: Bearer {{token}}
+tenant-id: {{adminTenentId}}

+ 40 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply.MpAutoReplyRespVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.convert.message.MpAutoReplyConvert;
+import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
+import cn.iocoder.yudao.module.mp.service.message.MpAutoReplyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Api(tags = "管理后台 - 公众号自动回复")
+@RestController
+@RequestMapping("/mp/auto-reply")
+@Validated
+public class MpAutoReplyController {
+
+    @Resource
+    private MpAutoReplyService mpAutoReplyService;
+
+    @GetMapping("/page")
+    @ApiOperation("获得公众号自动回复分页")
+    @PreAuthorize("@ss.hasPermission('mp:auto-reply:query')")
+    public CommonResult<PageResult<MpAutoReplyRespVO>> getAutoReplyPage(@Valid MpMessagePageReqVO pageVO) {
+        PageResult<MpAutoReplyDO> pageResult = mpAutoReplyService.getAutoReplyPage(pageVO);
+        return success(MpAutoReplyConvert.INSTANCE.convertPage(pageResult));
+    }
+
+}

+ 4 - 4
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpMessageController.java

@@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.mp.controller.admin.message;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageRespVO;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageRespVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
 import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
 import cn.iocoder.yudao.module.mp.service.message.MpMessageService;
@@ -19,7 +19,7 @@ import javax.validation.Valid;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
-@Api(tags = "管理后台 - 粉丝消息")
+@Api(tags = "管理后台 - 公众号消息")
 @RestController
 @RequestMapping("/mp/message")
 @Validated

+ 110 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyBaseVO.java

@@ -0,0 +1,110 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
+import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyTypeEnum;
+import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import me.chanjar.weixin.common.api.WxConsts;
+import org.hibernate.validator.constraints.URL;
+
+import javax.validation.Valid;
+import javax.validation.constraints.AssertTrue;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 公众号自动回复  Base VO,提供给添加、修改、详细的子 VO 使用
+ * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
+ */
+@Data
+public class MpAutoReplyBaseVO {
+
+    @ApiModelProperty(value = "回复类型", example = "1", notes = "参见 MpAutoReplyTypeEnum 枚举")
+    @NotNull(message = "回复类型不能为空")
+    private Integer type;
+
+    // ==================== 请求消息 ====================
+
+    @ApiModelProperty(value = "请求的关键字", example = "关键字", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
+    private String requestKeyword;
+    @ApiModelProperty(value = "请求的关键字", example = "关键字", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
+    private Integer requestMatch;
+
+    @ApiModelProperty(value = "请求的消息类型", example = "text", notes = "当 type 为 MpAutoReplyTypeEnum#MESSAGE 时,必填")
+    private String requestMessageType;
+
+    // ==================== 响应消息 ====================
+
+    @ApiModelProperty(value = "回复的消息类型", example = "text",
+            notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
+    @NotEmpty(message = "回复的消息类型不能为空")
+    private String responseMessageType;
+
+    @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
+    @NotEmpty(message = "回复的消息内容不能为空", groups = TextMessageGroup.class)
+    private String responseContent;
+
+    @ApiModelProperty(value = "回复的媒体 id", example = "123456")
+    @NotEmpty(message = "回复的消息 mediaId 不能为空",
+            groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
+    private String responseMediaId;
+    @ApiModelProperty(value = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
+    @NotEmpty(message = "回复的消息 mediaId 不能为空",
+            groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
+    private String responseMediaUrl;
+
+    @ApiModelProperty(value = "缩略图的媒体 id", example = "123456")
+    @NotEmpty(message = "回复的消息 thumbMediaId 不能为空", groups = {MusicMessageGroup.class})
+    private String responseThumbMediaId;
+    @ApiModelProperty(value = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
+    @NotEmpty(message = "回复的消息 thumbMedia 地址不能为空", groups = {MusicMessageGroup.class})
+    private String responseThumbMediaUrl;
+
+    @ApiModelProperty(value = "回复的标题", example = "视频标题")
+    @NotEmpty(message = "回复的消息标题不能为空", groups = VideoMessageGroup.class)
+    private String responseTitle;
+    @ApiModelProperty(value = "回复的描述", example = "视频描述")
+    @NotEmpty(message = "消息描述不能为空", groups = VideoMessageGroup.class)
+    private String responseDescription;
+
+    /**
+     * 回复的图文消息
+     *
+     * 消息类型为 {@link WxConsts.XmlMsgType} 的 NEWS
+     */
+    @NotNull(message = "回复的图文消息不能为空", groups = {NewsMessageGroup.class, ViewLimitedButtonGroup.class})
+    @Valid
+    private List<MpMessageDO.Article> responseArticles;
+
+    @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
+    @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
+    @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
+    private String responseMusicUrl;
+    @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
+    @NotEmpty(message = "回复的高质量音乐链接不能为空", groups = MusicMessageGroup.class)
+    @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
+    private String responseHqMusicUrl;
+
+    @AssertTrue(message = "请求的关键字不能为空")
+    public boolean isRequestKeywordValid() {
+        return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.KEYWORD)
+                || requestKeyword != null;
+    }
+
+    @AssertTrue(message = "请求的关键字的匹配不能为空")
+    public boolean isRequestMatchValid() {
+        return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.KEYWORD)
+                || requestMatch != null;
+    }
+
+    @AssertTrue(message = "请求的消息类型不能为空")
+    public boolean isRequestMessageTypeValid() {
+        return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.MESSAGE)
+                || requestMessageType != null;
+    }
+
+
+}

+ 25 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyCreateReqVO.java

@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@ApiModel("管理后台 - 公众号自动回复的创建 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MpAutoReplyCreateReqVO extends MpAutoReplyBaseVO {
+
+    @ApiModelProperty(value = "微信公众号 ID", required = true, example = "1024")
+    @NotNull(message = "微信公众号 ID不能为空")
+    private Long accountId;
+
+    @ApiModelProperty(value = "回复类型", required = true, example = "1", notes = "参见 MpAutoReplyTypeEnum 枚举")
+    @NotNull(message = "回复类型不能为空")
+    private Integer type;
+
+}

+ 22 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyPageReqVO.java

@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@ApiModel("管理后台 - 公众号自动回复的分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MpAutoReplyPageReqVO extends PageParam {
+
+    @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
+    @NotNull(message = "公众号账号的编号不能为空")
+    private Long accountId;
+
+}

+ 23 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyRespVO.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@ApiModel("管理后台 - 公众号自动回复 Response VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MpAutoReplyRespVO extends MpAutoReplyBaseVO {
+
+    @ApiModelProperty(value = "主键", required = true, example = "1024")
+    private Long id;
+
+    @ApiModelProperty(value = "微信公众号 ID", required = true, example = "1024")
+    private Long accountId;
+    @ApiModelProperty(value = "微信公众号 appid", required = true, example = "wx1234567890")
+    private String appId;
+
+}

+ 21 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyUpdateReqVO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@ApiModel("管理后台 - 公众号自动回复的更新 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MpAutoReplyUpdateReqVO extends MpAutoReplyBaseVO {
+
+    @ApiModelProperty(value = "主键", required = true, example = "1024")
+    @NotNull(message = "主键不能为空")
+    private Long id;
+
+}

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageBaseVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
 
 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessagePageReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
 
 import lombok.*;
 

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageSendReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
+package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
 
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
 import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;

+ 4 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpAutoReplyConvert.java

@@ -1,5 +1,7 @@
 package cn.iocoder.yudao.module.mp.convert.message;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply.MpAutoReplyRespVO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
 import cn.iocoder.yudao.module.mp.service.message.bo.MpMessageSendOutReqBO;
 import org.mapstruct.Mapper;
@@ -23,4 +25,6 @@ public interface MpAutoReplyConvert {
     })
     MpMessageSendOutReqBO convert(String openid, MpAutoReplyDO reply);
 
+    PageResult<MpAutoReplyRespVO> convertPage(PageResult<MpAutoReplyDO> page);
+
 }

+ 2 - 2
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpMessageConvert.java

@@ -1,8 +1,8 @@
 package cn.iocoder.yudao.module.mp.convert.message;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageRespVO;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageRespVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.user.MpUserDO;

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/message/MpAutoReplyDO.java

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
@@ -133,4 +132,5 @@ public class MpAutoReplyDO extends BaseDO {
      */
     @TableField(typeHandler = MpMessageDO.ArticleTypeHandler.class)
     private List<MpMessageDO.Article> responseArticles;
+
 }

+ 8 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpAutoReplyMapper.java

@@ -1,7 +1,9 @@
 package cn.iocoder.yudao.module.mp.dal.mysql.message;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
 import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyMatchEnum;
 import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyTypeEnum;
@@ -12,6 +14,12 @@ import java.util.List;
 @Mapper
 public interface MpAutoReplyMapper extends BaseMapperX<MpAutoReplyDO> {
 
+    default PageResult<MpAutoReplyDO> selectPage(MpMessagePageReqVO pageVO) {
+        return selectPage(pageVO, new LambdaQueryWrapperX<MpAutoReplyDO>()
+                .eq(MpAutoReplyDO::getAccountId, pageVO.getAccountId())
+                .eqIfPresent(MpAutoReplyDO::getType, pageVO.getType()));
+    }
+
     default List<MpAutoReplyDO> selectListByAppIdAndKeywordAll(String appId, String requestKeyword) {
         return selectList(new LambdaQueryWrapperX<MpAutoReplyDO>()
                 .eq(MpAutoReplyDO::getAppId, appId)

+ 1 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java

@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.mp.dal.mysql.message;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
 import org.apache.ibatis.annotations.Mapper;
 

+ 11 - 1
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpAutoReplyService.java

@@ -1,5 +1,8 @@
 package cn.iocoder.yudao.module.mp.service.message;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
 import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
 import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
 
@@ -11,6 +14,14 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
 public interface MpAutoReplyService {
 
     /**
+     * 获得公众号自动回复分页
+     *
+     * @param pageVO 分页请求
+     * @return 自动回复分页结果
+     */
+    PageResult<MpAutoReplyDO> getAutoReplyPage(MpMessagePageReqVO pageVO);
+
+    /**
      * 当收到消息时,自动回复
      *
      * @param appId 微信公众号 appId
@@ -27,5 +38,4 @@ public interface MpAutoReplyService {
      * @return 回复的消息
      */
     WxMpXmlOutMessage replyForSubscribe(String appId, WxMpXmlMessage wxMessage);
-
 }

+ 7 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpAutoReplyServiceImpl.java

@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.mp.service.message;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
 import cn.iocoder.yudao.module.mp.convert.message.MpAutoReplyConvert;
 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
@@ -38,6 +40,11 @@ public class MpAutoReplyServiceImpl implements MpAutoReplyService {
     private MpAutoReplyMapper mpAutoReplyMapper;
 
     @Override
+    public PageResult<MpAutoReplyDO> getAutoReplyPage(MpMessagePageReqVO pageVO) {
+        return mpAutoReplyMapper.selectPage(pageVO);
+    }
+
+    @Override
     public WxMpXmlOutMessage replyForMessage(String appId, WxMpXmlMessage wxMessage) {
         // 第一步,匹配自动回复
         List<MpAutoReplyDO> replies = null;

+ 2 - 2
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageService.java

@@ -1,8 +1,8 @@
 package cn.iocoder.yudao.module.mp.service.message;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
 import cn.iocoder.yudao.module.mp.service.message.bo.MpMessageSendOutReqBO;
 import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

+ 2 - 2
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageServiceImpl.java

@@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.mp.service.message;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
-import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
+import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
 import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;

+ 1 - 4
yudao-ui-admin/src/views/mp/autoReply/index.vue

@@ -53,7 +53,6 @@ SOFTWARE.
       <el-tab-pane name="1">
         <span slot="label"><i class="el-icon-star-off"></i> 关注时回复</span>
         <el-table v-loading="loading" :data="list">
-          <el-table-column label="编号" align="center" prop="id"/>
           <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
           <el-table-column label="创建时间" align="center" prop="createTime" width="180">
             <template slot-scope="scope">
@@ -75,7 +74,6 @@ SOFTWARE.
       <el-tab-pane name="2">
         <span slot="label"><i class="el-icon-chat-line-round"></i> 消息回复</span>
         <el-table v-loading="loading" :data="list">
-          <el-table-column label="编号" align="center" prop="id"/>
           <el-table-column label="请求消息类型" align="center" prop="requestMessageType"/>
           <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
           <el-table-column label="创建时间" align="center" prop="createTime" width="180">
@@ -98,7 +96,6 @@ SOFTWARE.
       <el-tab-pane name="3">
         <span slot="label"><i class="el-icon-news"></i> 关键词回复</span>
         <el-table v-loading="loading" :data="list">
-          <el-table-column label="编号" align="center" prop="id"/>
           <el-table-column label="关键词" align="center" prop="requestKeyword"/>
           <el-table-column label="匹配类型" align="center" prop="requestMatch"/>
           <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
@@ -175,7 +172,7 @@ export default {
   data() {
     return {
       // tab 类型(1、关注时回复;2、消息回复;3、关键词回复)
-      type:'1',
+      type: '3',
       // 遮罩层
       loading: true,
       // 显示搜索条件