一、前言
闲来有空,正好把这两年开发微信的东西拿出来抖抖。从零基础搭建一个微信开发基础框架。闲来搭建微信消息实体,包括接收的用户消息和回复用户消息两个基本实体。
二、参考/说明
主要需要参看微信公众平台开发者文档
网页地址:微信开发者文档
实体类中使用了lombok,所以省略了set ,get ,equal,hash以及ToString方法。
三、消息实体类
参看微信开发者文档消息管理中的第一栏,接收用户消息中分为文本消息、图片消息、语音消息,视频消息、链接消息等等吧,有一些共同属性,进行提取。包结构如下:
1)BaseEntity
package com.zlc.wechat.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:34
**/
@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 媒体Id,用于从微信素材接口调用
*/
private long mediaId;
}
2)ArticleEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* 微信图文
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 15:22
**/
@Data
public class ArticleEntity extends BaseEntity{
/**
* 图文消息标题
*/
private String title;
/**
* 图文消息描述
*/
private String description;
/**
* 图片的链接
* 支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
*/
private String pictureUrl;
/**
* 点击图文消息后要跳转的url
*/
private String url;
}
3)ImageEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* 微信图片
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 15:22
**/
@Data
public class ImageEntity extends BaseEntity{
/**
* 图片链接(由系统生成)
*/
private String picUrl;
}
4)LinkEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 9:47
**/
@Data
public class LinkEntity extends BaseEntity{
/**
* 消息标题
*/
private String title;
/**
* 消息描述
*/
private String description;
/**
* 消息链接
*/
private String url;
}
5)LocationEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 17:06
**/
@Data
public class LocationEntity extends BaseEntity{
/**
* 地理位置维度
*/
private String locationX;
/**
* 地理位置经度
*/
private String locationY;
/**
* 地图缩放大小
*/
private String scale;
/**
* 地理位置信息
*/
private String label;
}
6)MusicEntity
package com.zlc.wechat.entity;
import lombok.Data;
import java.io.Serializable;
/**
* 微信音乐
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 15:22
**/
@Data
public class MusicEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 音乐名称
*/
private String title;
/**
* 音乐描述
*/
private String description;
/**
* 音乐链接
*/
private String musicUrl;
/**
* 质量音乐链接,WIFI环境优先使用该链接播放音乐
*/
private String HQMusicUrl;
/**
* 缩略图的媒体id,通过上传多媒体文件得到的id
*/
private String thumbMediaId;
}
7)TextEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:40
**/
@Data
public class TextEntity extends BaseEntity{
/**
* 文本消息内容
*/
private String content;
}
8)VideoEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* 微信视频
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 15:22
**/
@Data
public class VideoEntity extends BaseEntity {
/**
* 视频缩略图的媒体Id,(缩略图就是微信中的那个小窗口视频,图片和视频都会缩略)
*/
private String thumbMediaId;
}
9)VoiceEntity
package com.zlc.wechat.entity;
import lombok.Data;
/**
* 微信语音
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 15:22
**/
@Data
public class VoiceEntity extends BaseEntity {
/**
* 语音格式,如amr,speex等
*/
private String format;
/**
* 开通语音识别后,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加
* 语音格式:amr
* 语音识别结果,UTF8编码()
*/
private String recognition;
}
三、用户发送消息类
1)BaseWeChatMsg
package com.zlc.wechat.message;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:08
**/
@Data
public class BaseWeChatMsg implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 消息Id,64位整形
*/
private long msgId;
/**
* 开发者微信号
*/
private String toUserName;
/**
* 发送方帐号(一个OpenID)
*/
private String fromUserName;
/**
* 消息创建时间 (整型)
*/
private Date createTime;
/**
* 消息类型
*/
private String msgType;
/**
* 位0x0001被标志时,星标刚收到的消息
*/
private int funcFlag;
}
2)ReceiveImageMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.ImageEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 图片消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:31
**/
@Data
public class ReceiveImageMsg extends BaseWeChatMsg {
/**
* 图片
*/
private ImageEntity imageEntity;
}
3)ReceiveLinkMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.LinkEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 9:46
**/
@Data
public class ReceiveLinkMsg extends BaseWeChatMsg {
/**
* 链接
*/
private LinkEntity linkEntity;
}
4)ReceiveLocationMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.LocationEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 地理位置信息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 17:05
**/
@Data
public class ReceiveLocationMsg extends BaseWeChatMsg {
/**
* 位置
*/
private LocationEntity locationEntity;
}
5)ReceiveTextMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.TextEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 文本消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:06
**/
@Data
public class ReceiveTextMsg extends BaseWeChatMsg {
/**
* 文本
*/
private TextEntity textEntity;
}
6)ReceiveVideoMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.VideoEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 视频类消息(包括小视频)
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 17:00
**/
@Data
public class ReceiveVideoMsg extends BaseWeChatMsg {
/**
* 视频
*/
private VideoEntity videoEntity;
}
7)ReceiveVoiceMsg
package com.zlc.wechat.message.receive;
import com.zlc.wechat.entity.BaseEntity;
import com.zlc.wechat.entity.VoiceEntity;
import lombok.Data;
/**
* 语音消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/23 16:47
**/
@Data
public class ReceiveVoiceMsg extends BaseEntity {
/**
* 语音
*/
private VoiceEntity voiceEntity;
}
四、被动回复用户消息类
1)ReplyArticleMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.ArticleEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
import java.util.List;
/**
* 被动回复用户图文消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 10:05
**/
@Data
public class ReplyArticleMsg extends BaseWeChatMsg {
/**
* 图文消息总条数
*/
private int articleCount;
/**
* 图文消息集合
*/
private List<ArticleEntity> articles;
}
2)ReplyImageMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.ImageEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 被动回复图片信息,可以是多图
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 9:56
**/
@Data
public class ReplyImageMsg extends BaseWeChatMsg {
/**
* 图片
*/
private ImageEntity imageEntity;
}
3)ReplyMusicMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.MusicEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 被动回复用户乐音消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 10:02
**/
@Data
public class ReplyMusicMsg extends BaseWeChatMsg {
/**
* 音乐
*/
private MusicEntity musicEntity;
}
4)ReplyTextMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.TextEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 被动回复用户文本消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 9:53
**/
@Data
public class ReplyTextMsg extends BaseWeChatMsg {
/**
* 文本
*/
private TextEntity textEntity;
}
5)ReplyVideoMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.VideoEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 被动回复用户视频消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 10:00
**/
@Data
public class ReplyVideoMsg extends BaseWeChatMsg {
/**
* 视频
*/
private VideoEntity videoEntity;
}
6)ReplyVoiceMsg
package com.zlc.wechat.message.reply;
import com.zlc.wechat.entity.VoiceEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;
/**
* 被动回复用户语音消息
* @author : 追到乌云的尽头找太阳-(Jacob)
* @date : 2019/10/24 9:58
**/
@Data
public class ReplyVoiceMsg extends BaseWeChatMsg {
/**
* 语音
*/
private VoiceEntity voiceEntity;
}