mp:梳理 message 的前端和后端代码

This commit is contained in:
YunaiV
2023-01-08 18:57:36 +08:00
parent 2ac2af64d4
commit 9ec2f8b60f
14 changed files with 457 additions and 1983 deletions

View File

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

View File

@ -1,25 +1,25 @@
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.convert.message.MpMessageConvert;
import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
import org.springframework.web.bind.annotation.*;
import cn.iocoder.yudao.module.mp.service.message.MpMessageService;
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 org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.module.mp.controller.admin.message.vo.*;
import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
import cn.iocoder.yudao.module.mp.service.message.MpMessageService;
@Api(tags = "管理后台 - 粉丝消息表")
@RestController
@RequestMapping("/mp/message")
@ -31,7 +31,7 @@ public class MpMessageController {
@GetMapping("/page")
@ApiOperation("获得粉丝消息表分页")
@PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-msg:query')")
@PreAuthorize("@ss.hasPermission('mp:message:query')")
public CommonResult<PageResult<MpMessageRespVO>> getWxFansMsgPage(@Valid MpMessagePageReqVO pageVO) {
PageResult<MpMessageDO> pageResult = mpMessageService.getWxFansMsgPage(pageVO);
return success(MpMessageConvert.INSTANCE.convertPage(pageResult));

View File

@ -1,7 +1,14 @@
package cn.iocoder.yudao.module.mp.controller.admin.message.vo;
import lombok.*;
import io.swagger.annotations.*;
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;
import cn.iocoder.yudao.module.mp.enums.message.MpMessageSendFromEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import me.chanjar.weixin.common.api.WxConsts;
import java.util.List;
/**
* 粉丝消息表 Base VO提供给添加、修改、详细的子 VO 使用
@ -10,37 +17,161 @@ import io.swagger.annotations.*;
@Data
public class MpMessageBaseVO {
@ApiModelProperty(value = "用户标识")
/**
* 微信公众号消息 id
*/
private Long msgId;
/**
* 微信公众号 ID
*
* 关联 {@link MpAccountDO#getId()}
*/
private Long accountId;
/**
* 微信公众号 appid
*
* 冗余 {@link MpAccountDO#getAppId()}
*/
private String appId;
/**
* 微信用户编号
*
* 关联 {@link MpUserDO#getId()}
*/
private Long userId;
/**
* 用户标识
*
* 冗余 {@link MpUserDO#getOpenid()}
*/
private String openid;
@ApiModelProperty(value = "昵称")
private byte[] nickname;
/**
* 消息类型
*
* 枚举 {@link WxConsts.XmlMsgType}
*/
private String type;
/**
* 消息来源
*
* 枚举 {@link MpMessageSendFromEnum}
*/
private Integer sendFrom;
@ApiModelProperty(value = "头像地址")
private String headimgUrl;
// ========= 普通消息内容 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html
@ApiModelProperty(value = "微信账号ID")
private String wxAccountId;
@ApiModelProperty(value = "消息类型")
private String msgType;
@ApiModelProperty(value = "内容")
/**
* 消息内容
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 TEXT
*/
private String content;
@ApiModelProperty(value = "最近一条回复内容")
private String resContent;
@ApiModelProperty(value = "是否已回复")
private String isRes;
@ApiModelProperty(value = "微信素材ID")
/**
* 通过素材管理中的接口上传多媒体文件,得到的 id
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 IMAGE、VOICE、VIDEO
*/
private String mediaId;
/**
* 媒体文件的 URL
*/
private String mediaUrl;
/**
* 语音识别后文本
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VOICE
*/
private String recognition;
/**
* 语音格式,如 amrspeex 等
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VOICE
*/
private String format;
/**
* 标题
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VIDEO、MUSIC、LINK
*/
private String title;
/**
* 描述
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VIDEO、MUSIC
*/
private String description;
@ApiModelProperty(value = "微信图片URL")
private String picUrl;
/**
* 缩略图的媒体 id通过素材管理中的接口上传多媒体文件得到的 id
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VIDEO
*/
private String thumbMediaId;
/**
* 缩略图的媒体 URL
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 VIDEO
*/
private String thumbMediaUrl;
@ApiModelProperty(value = "本地图片路径")
private String picPath;
/**
* 点击图文消息跳转链接
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 LINK
*/
private String url;
/**
* 地理位置维度
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 LOCATION
*/
private Double locationX;
/**
* 地理位置经度
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 LOCATION
*/
private Double locationY;
/**
* 地图缩放大小
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 LOCATION
*/
private Double scale;
/**
* 详细地址
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 LOCATION
*
* 例如说杨浦区黄兴路 221-4 号临
*/
private String label;
/**
* 图文消息数组
*
* 消息类型为 {@link WxConsts.XmlMsgType} 的 NEWS
*/
@TableField(typeHandler = MpMessageDO.ArticleTypeHandler.class)
private List<MpMessageDO.Article> articles;
// ========= 事件推送 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
/**
* 事件类型
*
* 枚举 {@link WxConsts.EventType}
*/
private String event;
/**
* 事件 Key
*
* 1. {@link WxConsts.EventType} 的 SCANqrscene_ 为前缀,后面为二维码的参数值
* 2. {@link WxConsts.EventType} 的 CLICK与自定义菜单接口中 KEY 值对应
*/
private String eventKey;
}