Commit ab41c966419ac7e6d0161f61a2764004edc17fae

Authored by YunaiV
1 parent 26ca97d2

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

Showing 23 changed files with 296 additions and 24 deletions
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 {
63 63  
64 64 // ========== 消息内容 ==========
65 65  
66   - @ApiModelProperty(value = "消息类型", example = "text",
  66 + @ApiModelProperty(value = "回复的消息类型", example = "text",
67 67 notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
68   - @NotEmpty(message = "消息类型不能为空", groups = {ClickButtonGroup.class, ScanCodeWaitMsgButtonGroup.class})
  68 + @NotEmpty(message = "回复的消息类型不能为空", groups = {ClickButtonGroup.class, ScanCodeWaitMsgButtonGroup.class})
69 69 private String replyMessageType;
70 70  
71 71 @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
... ... @@ -104,7 +104,7 @@ public class MpMenuBaseVO {
104 104 @Valid
105 105 private List<MpMessageDO.Article> replyArticles;
106 106  
107   - @ApiModelProperty(value = "音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  107 + @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
108 108 @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
109 109 @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
110 110 private String replyMusicUrl;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.http 0 → 100644
  1 +### 请求 /mp/message/page 接口 => 成功
  2 +GET {{baseUrl}}/mp/auto-reply/page?accountId=1&pageNo=1&pageSize=10
  3 +Content-Type: application/json
  4 +Authorization: Bearer {{token}}
  5 +tenant-id: {{adminTenentId}}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply.MpAutoReplyRespVO;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
  7 +import cn.iocoder.yudao.module.mp.convert.message.MpAutoReplyConvert;
  8 +import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
  9 +import cn.iocoder.yudao.module.mp.service.message.MpAutoReplyService;
  10 +import io.swagger.annotations.Api;
  11 +import io.swagger.annotations.ApiOperation;
  12 +import org.springframework.security.access.prepost.PreAuthorize;
  13 +import org.springframework.validation.annotation.Validated;
  14 +import org.springframework.web.bind.annotation.GetMapping;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RestController;
  17 +
  18 +import javax.annotation.Resource;
  19 +import javax.validation.Valid;
  20 +
  21 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  22 +
  23 +@Api(tags = "管理后台 - 公众号自动回复")
  24 +@RestController
  25 +@RequestMapping("/mp/auto-reply")
  26 +@Validated
  27 +public class MpAutoReplyController {
  28 +
  29 + @Resource
  30 + private MpAutoReplyService mpAutoReplyService;
  31 +
  32 + @GetMapping("/page")
  33 + @ApiOperation("获得公众号自动回复分页")
  34 + @PreAuthorize("@ss.hasPermission('mp:auto-reply:query')")
  35 + public CommonResult<PageResult<MpAutoReplyRespVO>> getAutoReplyPage(@Valid MpMessagePageReqVO pageVO) {
  36 + PageResult<MpAutoReplyDO> pageResult = mpAutoReplyService.getAutoReplyPage(pageVO);
  37 + return success(MpAutoReplyConvert.INSTANCE.convertPage(pageResult));
  38 + }
  39 +
  40 +}
... ...
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;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
6   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageRespVO;
7   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
  5 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageRespVO;
  7 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
8 8 import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
10 10 import cn.iocoder.yudao.module.mp.service.message.MpMessageService;
... ... @@ -19,7 +19,7 @@ import javax.validation.Valid;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 粉丝消息")
  22 +@Api(tags = "管理后台 - 公众号消息")
23 23 @RestController
24 24 @RequestMapping("/mp/message")
25 25 @Validated
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyBaseVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
  2 +
  3 +import cn.hutool.core.util.ObjectUtil;
  4 +import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
  5 +import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyTypeEnum;
  6 +import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +import me.chanjar.weixin.common.api.WxConsts;
  10 +import org.hibernate.validator.constraints.URL;
  11 +
  12 +import javax.validation.Valid;
  13 +import javax.validation.constraints.AssertTrue;
  14 +import javax.validation.constraints.NotEmpty;
  15 +import javax.validation.constraints.NotNull;
  16 +import java.util.List;
  17 +
  18 +/**
  19 + * 公众号自动回复 Base VO,提供给添加、修改、详细的子 VO 使用
  20 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  21 + */
  22 +@Data
  23 +public class MpAutoReplyBaseVO {
  24 +
  25 + @ApiModelProperty(value = "回复类型", example = "1", notes = "参见 MpAutoReplyTypeEnum 枚举")
  26 + @NotNull(message = "回复类型不能为空")
  27 + private Integer type;
  28 +
  29 + // ==================== 请求消息 ====================
  30 +
  31 + @ApiModelProperty(value = "请求的关键字", example = "关键字", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
  32 + private String requestKeyword;
  33 + @ApiModelProperty(value = "请求的关键字", example = "关键字", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
  34 + private Integer requestMatch;
  35 +
  36 + @ApiModelProperty(value = "请求的消息类型", example = "text", notes = "当 type 为 MpAutoReplyTypeEnum#MESSAGE 时,必填")
  37 + private String requestMessageType;
  38 +
  39 + // ==================== 响应消息 ====================
  40 +
  41 + @ApiModelProperty(value = "回复的消息类型", example = "text",
  42 + notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
  43 + @NotEmpty(message = "回复的消息类型不能为空")
  44 + private String responseMessageType;
  45 +
  46 + @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
  47 + @NotEmpty(message = "回复的消息内容不能为空", groups = TextMessageGroup.class)
  48 + private String responseContent;
  49 +
  50 + @ApiModelProperty(value = "回复的媒体 id", example = "123456")
  51 + @NotEmpty(message = "回复的消息 mediaId 不能为空",
  52 + groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
  53 + private String responseMediaId;
  54 + @ApiModelProperty(value = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
  55 + @NotEmpty(message = "回复的消息 mediaId 不能为空",
  56 + groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
  57 + private String responseMediaUrl;
  58 +
  59 + @ApiModelProperty(value = "缩略图的媒体 id", example = "123456")
  60 + @NotEmpty(message = "回复的消息 thumbMediaId 不能为空", groups = {MusicMessageGroup.class})
  61 + private String responseThumbMediaId;
  62 + @ApiModelProperty(value = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
  63 + @NotEmpty(message = "回复的消息 thumbMedia 地址不能为空", groups = {MusicMessageGroup.class})
  64 + private String responseThumbMediaUrl;
  65 +
  66 + @ApiModelProperty(value = "回复的标题", example = "视频标题")
  67 + @NotEmpty(message = "回复的消息标题不能为空", groups = VideoMessageGroup.class)
  68 + private String responseTitle;
  69 + @ApiModelProperty(value = "回复的描述", example = "视频描述")
  70 + @NotEmpty(message = "消息描述不能为空", groups = VideoMessageGroup.class)
  71 + private String responseDescription;
  72 +
  73 + /**
  74 + * 回复的图文消息
  75 + *
  76 + * 消息类型为 {@link WxConsts.XmlMsgType} 的 NEWS
  77 + */
  78 + @NotNull(message = "回复的图文消息不能为空", groups = {NewsMessageGroup.class, ViewLimitedButtonGroup.class})
  79 + @Valid
  80 + private List<MpMessageDO.Article> responseArticles;
  81 +
  82 + @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  83 + @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
  84 + @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
  85 + private String responseMusicUrl;
  86 + @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  87 + @NotEmpty(message = "回复的高质量音乐链接不能为空", groups = MusicMessageGroup.class)
  88 + @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
  89 + private String responseHqMusicUrl;
  90 +
  91 + @AssertTrue(message = "请求的关键字不能为空")
  92 + public boolean isRequestKeywordValid() {
  93 + return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.KEYWORD)
  94 + || requestKeyword != null;
  95 + }
  96 +
  97 + @AssertTrue(message = "请求的关键字的匹配不能为空")
  98 + public boolean isRequestMatchValid() {
  99 + return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.KEYWORD)
  100 + || requestMatch != null;
  101 + }
  102 +
  103 + @AssertTrue(message = "请求的消息类型不能为空")
  104 + public boolean isRequestMessageTypeValid() {
  105 + return ObjectUtil.notEqual(type, MpAutoReplyTypeEnum.MESSAGE)
  106 + || requestMessageType != null;
  107 + }
  108 +
  109 +
  110 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyCreateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +@ApiModel("管理后台 - 公众号自动回复的创建 Request VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +public class MpAutoReplyCreateReqVO extends MpAutoReplyBaseVO {
  16 +
  17 + @ApiModelProperty(value = "微信公众号 ID", required = true, example = "1024")
  18 + @NotNull(message = "微信公众号 ID不能为空")
  19 + private Long accountId;
  20 +
  21 + @ApiModelProperty(value = "回复类型", required = true, example = "1", notes = "参见 MpAutoReplyTypeEnum 枚举")
  22 + @NotNull(message = "回复类型不能为空")
  23 + private Integer type;
  24 +
  25 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import lombok.ToString;
  9 +
  10 +import javax.validation.constraints.NotNull;
  11 +
  12 +@ApiModel("管理后台 - 公众号自动回复的分页 Request VO")
  13 +@Data
  14 +@EqualsAndHashCode(callSuper = true)
  15 +@ToString(callSuper = true)
  16 +public class MpAutoReplyPageReqVO extends PageParam {
  17 +
  18 + @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
  19 + @NotNull(message = "公众号账号的编号不能为空")
  20 + private Long accountId;
  21 +
  22 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +@ApiModel("管理后台 - 公众号自动回复 Response VO")
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +@ToString(callSuper = true)
  13 +public class MpAutoReplyRespVO extends MpAutoReplyBaseVO {
  14 +
  15 + @ApiModelProperty(value = "主键", required = true, example = "1024")
  16 + private Long id;
  17 +
  18 + @ApiModelProperty(value = "微信公众号 ID", required = true, example = "1024")
  19 + private Long accountId;
  20 + @ApiModelProperty(value = "微信公众号 appid", required = true, example = "wx1234567890")
  21 + private String appId;
  22 +
  23 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyUpdateReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +@ApiModel("管理后台 - 公众号自动回复的更新 Request VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +public class MpAutoReplyUpdateReqVO extends MpAutoReplyBaseVO {
  16 +
  17 + @ApiModelProperty(value = "主键", required = true, example = "1024")
  18 + @NotNull(message = "主键不能为空")
  19 + private Long id;
  20 +
  21 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageBaseVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessageBaseVO.java
1   -package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
4 4 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessagePageReqVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java
1   -package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import lombok.*;
4 4  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageRespVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessageRespVO.java
1   -package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageSendReqVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessageSendReqVO.java
1   -package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
  1 +package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
4 4 import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpAutoReplyConvert.java
1 1 package cn.iocoder.yudao.module.mp.convert.message;
2 2  
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply.MpAutoReplyRespVO;
3 5 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
4 6 import cn.iocoder.yudao.module.mp.service.message.bo.MpMessageSendOutReqBO;
5 7 import org.mapstruct.Mapper;
... ... @@ -23,4 +25,6 @@ public interface MpAutoReplyConvert {
23 25 })
24 26 MpMessageSendOutReqBO convert(String openid, MpAutoReplyDO reply);
25 27  
  28 + PageResult<MpAutoReplyRespVO> convertPage(PageResult<MpAutoReplyDO> page);
  29 +
26 30 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/message/MpMessageConvert.java
1 1 package cn.iocoder.yudao.module.mp.convert.message;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageRespVO;
5   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
  4 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageRespVO;
  5 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
6 6 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
8 8 import cn.iocoder.yudao.module.mp.dal.dataobject.user.MpUserDO;
... ...
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;
9 9 import com.baomidou.mybatisplus.annotation.TableField;
10 10 import com.baomidou.mybatisplus.annotation.TableId;
11 11 import com.baomidou.mybatisplus.annotation.TableName;
12   -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
13 12 import lombok.Data;
14 13 import lombok.EqualsAndHashCode;
15 14 import lombok.ToString;
... ... @@ -133,4 +132,5 @@ public class MpAutoReplyDO extends BaseDO {
133 132 */
134 133 @TableField(typeHandler = MpMessageDO.ArticleTypeHandler.class)
135 134 private List<MpMessageDO.Article> responseArticles;
  135 +
136 136 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpAutoReplyMapper.java
1 1 package cn.iocoder.yudao.module.mp.dal.mysql.message;
2 2  
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
3 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
4 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
5 7 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
6 8 import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyMatchEnum;
7 9 import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyTypeEnum;
... ... @@ -12,6 +14,12 @@ import java.util.List;
12 14 @Mapper
13 15 public interface MpAutoReplyMapper extends BaseMapperX<MpAutoReplyDO> {
14 16  
  17 + default PageResult<MpAutoReplyDO> selectPage(MpMessagePageReqVO pageVO) {
  18 + return selectPage(pageVO, new LambdaQueryWrapperX<MpAutoReplyDO>()
  19 + .eq(MpAutoReplyDO::getAccountId, pageVO.getAccountId())
  20 + .eqIfPresent(MpAutoReplyDO::getType, pageVO.getType()));
  21 + }
  22 +
15 23 default List<MpAutoReplyDO> selectListByAppIdAndKeywordAll(String appId, String requestKeyword) {
16 24 return selectList(new LambdaQueryWrapperX<MpAutoReplyDO>()
17 25 .eq(MpAutoReplyDO::getAppId, appId)
... ...
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;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpAutoReplyService.java
1 1 package cn.iocoder.yudao.module.mp.service.message;
2 2  
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
  5 +import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
3 6 import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
4 7 import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
5 8  
... ... @@ -11,6 +14,14 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
11 14 public interface MpAutoReplyService {
12 15  
13 16 /**
  17 + * 获得公众号自动回复分页
  18 + *
  19 + * @param pageVO 分页请求
  20 + * @return 自动回复分页结果
  21 + */
  22 + PageResult<MpAutoReplyDO> getAutoReplyPage(MpMessagePageReqVO pageVO);
  23 +
  24 + /**
14 25 * 当收到消息时,自动回复
15 26 *
16 27 * @param appId 微信公众号 appId
... ... @@ -27,5 +38,4 @@ public interface MpAutoReplyService {
27 38 * @return 回复的消息
28 39 */
29 40 WxMpXmlOutMessage replyForSubscribe(String appId, WxMpXmlMessage wxMessage);
30   -
31 41 }
... ...
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;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.lang.Assert;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
5 7 import cn.iocoder.yudao.module.mp.convert.message.MpAutoReplyConvert;
6 8 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
7 9 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
... ... @@ -38,6 +40,11 @@ public class MpAutoReplyServiceImpl implements MpAutoReplyService {
38 40 private MpAutoReplyMapper mpAutoReplyMapper;
39 41  
40 42 @Override
  43 + public PageResult<MpAutoReplyDO> getAutoReplyPage(MpMessagePageReqVO pageVO) {
  44 + return mpAutoReplyMapper.selectPage(pageVO);
  45 + }
  46 +
  47 + @Override
41 48 public WxMpXmlOutMessage replyForMessage(String appId, WxMpXmlMessage wxMessage) {
42 49 // 第一步,匹配自动回复
43 50 List<MpAutoReplyDO> replies = null;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/message/MpMessageService.java
1 1 package cn.iocoder.yudao.module.mp.service.message;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
5   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
  4 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
  5 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
6 6 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
7 7 import cn.iocoder.yudao.module.mp.service.message.bo.MpMessageSendOutReqBO;
8 8 import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
... ...
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;
3 3 import cn.hutool.core.lang.Assert;
4 4 import cn.hutool.core.util.StrUtil;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessagePageReqVO;
7   -import cn.iocoder.yudao.module.mp.controller.admin.message.vo.MpMessageSendReqVO;
  6 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessagePageReqVO;
  7 +import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageSendReqVO;
8 8 import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
10 10 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
... ...
yudao-ui-admin/src/views/mp/autoReply/index.vue
... ... @@ -53,7 +53,6 @@ SOFTWARE.
53 53 <el-tab-pane name="1">
54 54 <span slot="label"><i class="el-icon-star-off"></i> 关注时回复</span>
55 55 <el-table v-loading="loading" :data="list">
56   - <el-table-column label="编号" align="center" prop="id"/>
57 56 <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
58 57 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
59 58 <template slot-scope="scope">
... ... @@ -75,7 +74,6 @@ SOFTWARE.
75 74 <el-tab-pane name="2">
76 75 <span slot="label"><i class="el-icon-chat-line-round"></i> 消息回复</span>
77 76 <el-table v-loading="loading" :data="list">
78   - <el-table-column label="编号" align="center" prop="id"/>
79 77 <el-table-column label="请求消息类型" align="center" prop="requestMessageType"/>
80 78 <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
81 79 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
... ... @@ -98,7 +96,6 @@ SOFTWARE.
98 96 <el-tab-pane name="3">
99 97 <span slot="label"><i class="el-icon-news"></i> 关键词回复</span>
100 98 <el-table v-loading="loading" :data="list">
101   - <el-table-column label="编号" align="center" prop="id"/>
102 99 <el-table-column label="关键词" align="center" prop="requestKeyword"/>
103 100 <el-table-column label="匹配类型" align="center" prop="requestMatch"/>
104 101 <el-table-column label="回复消息类型" align="center" prop="responseMessageType"/>
... ... @@ -175,7 +172,7 @@ export default {
175 172 data() {
176 173 return {
177 174 // tab 类型(1、关注时回复;2、消息回复;3、关键词回复)
178   - type:'1',
  175 + type: '3',
179 176 // 遮罩层
180 177 loading: true,
181 178 // 显示搜索条件
... ...