springboot框架开发微信公众号(三)之消息的使用以文本消息和图文消息为例

流程图

代码实现

封装各种消息的属性

响应消息基类

package com.gzc.weixin.message.response;
/**
 * 
 * @Description: 响应消息基类(公众账号→普通用户)
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class BaseMessage {
	//接收方账号(收到的OpenID)
	private String ToUserName;
	//开发者微信号
	private String FromUserName;
	//消息创建时间(整型)
	private long CreateTime;
	//消息类型(text/music/news)
	private String MsgType;
	//星标刚收到的消息
	private int FuncFlag;

	public String getToUserName() {
		return ToUserName;
	}
	public void setToUserName(String toUserName) {
		ToUserName = toUserName;
	}
	public String getFromUserName() {
		return FromUserName;
	}
	public void setFromUserName(String fromUserName) {
		FromUserName = fromUserName;
	}
	public long getCreateTime() {
		return CreateTime;
	}
	public void setCreateTime(long createTime) {
		CreateTime = createTime;
	}
	public String getMsgType() {
		return MsgType;
	}
	public void setMsgType(String msgType) {
		MsgType = msgType;
	}
	public int getFuncFlag() {
		return FuncFlag;
	}
	public void setFuncFlag(int funcFlag) {
		FuncFlag = funcFlag;
	}
}
图片消息
package com.gzc.weixin.message.response;

import com.gzc.weixin.message.Image;

/**
 * 
 * @Description: 图片消息
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class ImageMessage extends BaseMessage{
	private Image image;

	public Image getImage() {
		return image;
	}

	public void setImage(Image image) {
		this.image = image;
	}
	
}
package com.gzc.weixin.message;
/**
 * 
 * @Description: 图片model
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class Image {
	//媒体文件ID
	private String MediaId;


	public String getMediaId() {
		return MediaId;
	}


	public void setMediaId(String mediaId) {
		MediaId = mediaId;
	}


}

音乐消息

package com.gzc.weixin.message.response;

import com.gzc.weixin.message.Music;


/**
 * 
 * @Description: 音乐消息
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author:来日可期
 */
public class MusicMessage extends BaseMessage{
	//音乐
	private Music music;

	public Music getMusic() {
		return music;
	}

	public void setMusic(Music music) {
		this.music = music;
	}
	
}
package com.gzc.weixin.message;
/**
 * 
 * @Description: 音乐model
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author:来日可期
 */
public class Music {
	//音乐标题
	private String Title;
	//音乐描述
	private String Description;
	//音乐链接
	private String MusicUrl;
	//高品质音乐链接,Wi-Fi环境优先使用该链接播放音乐
	private String HQMusicUrl;
	//缩略图的媒体ID,通过上传多媒体文件得到的ID
	private String ThumbMediaId;
	
	public String getTitle() {
		return Title;
	}
	public void setTitle(String title) {
		Title = title;
	}
	public String getDescription() {
		return Description;
	}
	public void setDescription(String description) {
		Description = description;
	}
	public String getMusicUrl() {
		return MusicUrl;
	}
	public void setMusicUrl(String musicUrl) {
		MusicUrl = musicUrl;
	}
	public String getHQMusicUrl() {
		return HQMusicUrl;
	}
	public void setHQMusicUrl(String hQMusicUrl) {
		HQMusicUrl = hQMusicUrl;
	}
	public String getThumbMediaId() {
		return ThumbMediaId;
	}
	public void setThumbMediaId(String thumbMediaId) {
		ThumbMediaId = thumbMediaId;
	}
}
图文消息
package com.gzc.weixin.message.response;
import java.util.List;

import com.gzc.weixin.message.Article;

/**
 * 
 * @Description: 图文消息
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class NewsMessage extends BaseMessage{
	//图文消息个数,限制为10条以内
	private int ArticleCount;
	//多条图文消息信息,默认第一个item为大图
	private List<Article> Articles;
	
	public int getArticleCount() {
		return ArticleCount;
	}
	public void setArticleCount(int articleCount) {
		ArticleCount = articleCount;
	}
	public List<Article> getArticles() {
		return Articles;
	}
	public void setArticles(List<Article> articles) {
		Articles = articles;
	}

}
package com.gzc.weixin.message;
/**
 * 
 * @Description: 图文model
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class Article {
	//图文消息名称
	private String Title;
	//图文消息描述
	private String Description;
	//图片链接,支持JPG、PNG格式,较好的效果为大图640像素*320像素,小图80像素*80像素
	private String PicUrl;
	//点击图文消息跳转链接
	private String Url;
	
	public String getTitle() {
		return Title;
	}
	public void setTitle(String title) {
		Title = title;
	}
	public String getDescription() {
		return Description;
	}
	public void setDescription(String description) {
		Description = description;
	}
	public String getPicUrl() {
		return PicUrl;
	}
	public void setPicUrl(String picUrl) {
		PicUrl = picUrl;
	}
	public String getUrl() {
		return Url;
	}
	public void setUrl(String url) {
		Url = url;
	}
}

文本消息

package com.gzc.weixin.message.response;
/**
 * 
 * @Description: 文本消息
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class TextMessage extends BaseMessage{
	//回复的消息内容
	private String Content;

	public String getContent() {
		return Content;
	}

	public void setContent(String content) {
		Content = content;
	}
	
}
视频
package com.gzc.weixin.message.response;

import com.gzc.weixin.message.Video;

/**
 * 
 * @Description:视频 
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class VideoMessage extends BaseMessage{
	private Video video;

	public Video getVideo() {
		return video;
	}

	public void setVideo(Video video) {
		this.video = video;
	}
	
}
package com.gzc.weixin.message;
/**
 * 
 * @Description: 视频model
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class Video {
	//媒体文件ID
	private String MediaId;
	//视频消息缩略图的媒体ID
	private String ThumbMediaId;
	
	public String getMediaId() {
		return MediaId;
	}
	public void setMediaId(String mediaId) {
		MediaId = mediaId;
	}
	public String getThumbMediaId() {
		return ThumbMediaId;
	}
	public void setThumbMediaId(String thumbMediaId) {
		ThumbMediaId = thumbMediaId;
	}
}
语音消息
package com.gzc.weixin.message.response;

import com.gzc.weixin.message.Voice;

/**
 * 
 * @Description: 语音消息
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class VoiceMessage extends BaseMessage{
	private Voice voice;

	public Voice getVoice() {
		return voice;
	}

	public void setVoice(Voice voice) {
		this.voice = voice;
	}
	
}
package com.gzc.weixin.message;
/**
 * 
 * @Description: 语音model
 * @Parameters: 
 * @Return: 
 * @Create Date: 
 * @Version: V1.00
 * @author: 来日可期
 */
public class Voice {
	//语音消息媒体ID
	private String mediaId;


	public String getMediaId() {
		return mediaId;
	}


	public void setMediaId(String mediaId) {
		this.mediaId = mediaId;
	}


}
将关注回复消息等写成方法
/**
 * 微信消息处理,将关注回复消息等写成方法
 */
package com.b505.weixin.util;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.b505.Message.model.Article;
import com.b505.config.WebConfigBean;
import com.b505.service.UserService;
import com.b505.tool.EncodeUTF8;
import com.b505.weixin.message.resp.NewsMessage;
import com.b505.weixin.message.resp.TextMessage;
import com.b505.weixin.pojo.WeixinMessageInfo;
/**
 * <p>Company: B505信息技术研究所 </p> 
 * @Description: 封装微信回复消息,各种回复消息对应不同的方法
 * @Create Date: 2017年10月23日上午11:33:36
 * @Version: V1.00 
 * @Author:来日可期
 */
@Component
public class WeixinMessageModelUtil {
	
	@Autowired
	private WeixinMessageUtil weixinMessageUtil;
	@Autowired
	private WebConfigBean webConfigBean;
	@Autowired 
	private UserService userService;
	@Autowired
	private EncodeUTF8 encodeUT8;
	
	/**
	  * @Description: 当系统出错时,默认回复的文本消息
	  * @Parameters: WeixinMessageModelUtil
	  * @Return: 系统出错回复的消息
	  * @Create Date: 2017年10月23日上午11:55:17
	  * @Version: V1.00 
	  * @author:来日可期
	  */
	public String systemErrorResponseMessageModel(WeixinMessageInfo weixinMessageInfo ){
		
		// 回复文本消息
		TextMessage textMessage = new TextMessage();
		textMessage.setToUserName(weixinMessageInfo.getFromUserName());
		textMessage.setFromUserName(weixinMessageInfo.getToUserName());
		textMessage.setCreateTime(new Date().getTime());
		textMessage.setMsgType(weixinMessageUtil.RESP_MESSAGE_TYPE_TEXT);
		textMessage.setFuncFlag(0);
		textMessage.setContent("系统出错啦,请稍后再试");	
		return weixinMessageUtil.textMessageToXml(textMessage);	
	}
	
	/**
	  * @Description: 用户关注时发送的图文消息
	  * @Parameters: WeixinMessageModelUtil
	  * @Return: 用户关注后发送的提示绑定用户的图文消息
	  * @Create Date: 2017年10月23日下午2:01:34
	  * @Version: V1.00 
	  * @author:来日可期
	  */
	public String followResponseMessageModel(WeixinMessageInfo weixinMessageInfo){
	
		// 关注时发送图文消息
		NewsMessage newsMessage = new NewsMessage();
		newsMessage.setToUserName(weixinMessageInfo.getFromUserName());
		newsMessage.setFromUserName(weixinMessageInfo.getToUserName());
		newsMessage.setCreateTime(new Date().getTime());
		newsMessage.setMsgType(weixinMessageUtil.RESP_MESSAGE_TYPE_NEWS);
		newsMessage.setFuncFlag(0);
	     
		// 图文消息
		List<Article> articleList=new ArrayList<Article>();
		Article article = new Article();
		// 设置图文消息的标题
		String string = "尊敬的用户,欢迎关注国家纤维局会议系统,点击查看会议。";
		article.setTitle(string);
		article.setPicUrl(webConfigBean.getWeixinPicture()+"meetingLogo2.png");
		article.setUrl(webConfigBean.getDoMainNameurl()+"/WeixinParticipantFouce");
		articleList.add(article);
		newsMessage.setArticleCount(articleList.size());
		newsMessage.setArticles(articleList);
		return weixinMessageUtil.newsMessageToXml(newsMessage);
	}
	
	/**
	  * @Description: 用户取消关注,先判断用户是否绑定,如果已经绑定则解除绑定
	  * @Parameters: WeixinMessageModelUtil
	  * @Return: void
	  * @Create Date: 2017年11月20日上午10:54:26
	  * @Version: V1.00 
	  * @author:来日可期
	  */
	public void cancelAttention(String fromUserName){
		
		if (userService.isAlreadyBinding(fromUserName)) {
			userService.userUnbinding(fromUserName);
		}else {
			System.out.println("取消关注用户{}"+fromUserName+"还未绑定");
		}	
	}
}



猜你喜欢

转载自blog.csdn.net/qq_40715775/article/details/79912600