package util;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.thoughtworks.xstream.XStream;
import po.Image;
import po.ImageMessage;
import po.Music;
import po.MusicMessage;
import po.News;
import po.NewsMessage;
import po.TextMessage;
/**
* 文本信息处理
*
* @author 昊
*
*/
public class MessageUtil {
public static final String MESSAGE_NEWS = "news";
public static final String MESSAGE_TEXT = "text";
public static final String MESSAGE_IMAGE = "image";
public static final String MESSAGE_VOICE = "voice";
public static final String MESSAGE_VIDEO = "video";
public static final String MESSAGE_MUSIC = "music";
public static final String MESSAGE_LINK = "link";
public static final String MESSAGE_LOCATION = "location";
public static final String MESSAGE_EVENT = "event";
public static final String MESSAGE_SUBSCRIBE = "subscribe";
public static final String MESSAGE_UNSUBSCRIBE = "unsubscribe";
public static final String MESSAGE_CLICK = "CLICK";
public static final String MESSAGE_VIEW = "VIEW";
public static final String MESSAGE_SCANCODE = "scancode";
/**
* 文本消息Xml转Map集合
*
* @param request
* @return
* @throws IOException
* @throws DocumentException
*/
public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException {
Map<String, String> map = new HashMap<String, String>();
SAXReader reader = new SAXReader();
InputStream in = request.getInputStream();
Document document = reader.read(in);
Element root = document.getRootElement();
List<Element> list = root.elements();
for (Element e : list) {
map.put(e.getName(), e.getText());
}
in.close();
return map;
}
/**
* 将文本消息对象转为xml
*
* @param textMessage
* @return
*/
public static String textMessageToXml(TextMessage textMessage) {
XStream xstream = new XStream();
xstream.alias("xml", textMessage.getClass());
return xstream.toXML(textMessage);
}
/**
* 图文消息转xml
*
* @param newsMessage
* @return
*/
public static String newsMessageToXml(NewsMessage newsMessage) {
XStream xstream = new XStream();
xstream.alias("xml", newsMessage.getClass());
xstream.alias("item", new News().getClass());
return xstream.toXML(newsMessage);
}
/**
* 图片消息转xml
* @param imageMessage
* @return
*/
public static String imageMessageToXml(ImageMessage imageMessage){
XStream xstream = new XStream();
xstream.alias("xml", imageMessage.getClass());
return xstream.toXML(imageMessage);
}
/**
* 音乐消息转xml
* @param musicMessage
* @return
*/
public static String musicMessageToXml(MusicMessage musicMessage){
XStream xstream = new XStream();
xstream.alias("xml", musicMessage.getClass());
return xstream.toXML(musicMessage);
}
/**
* 拼接文本信息
*
* @param toUserName
* @param fromUserName
* @param content
* @return
*/
public static String initText(String toUserName, String fromUserName, String content) {
TextMessage text = new TextMessage();
text.setFromUserName(toUserName);
text.setToUserName(fromUserName);
text.setMsgType(MessageUtil.MESSAGE_TEXT);
text.setCreateTime(new Date().getTime());
text.setContent(content);
return textMessageToXml(text);
}
/**
* 主菜单
*
* @return
*/
public static String menuText() {
StringBuffer menu = new StringBuffer();
menu.append("欢迎关注,室友介绍女朋友\n\n");
menu.append("1.室友介绍\n");
menu.append("2.联系方式\n\n");
menu.append("回复 ? 调出此菜单");
return menu.toString();
}
public static String firstMenu() {
StringBuffer menu = new StringBuffer();
menu.append("余");
return menu.toString();
}
public static String secondMenu() {
StringBuffer menu = new StringBuffer();
menu.append("657");
return menu.toString();
}
/**
* 图文消息组装
* @param toUserName
* @param fromUserName
* @return
*/
public static String initNewsMessage(String toUserName, String fromUserName) {
String message = null;
List<News> newsList = new ArrayList<News>();
NewsMessage newsMessage = new NewsMessage();
News news = new News();
news.setTitle("室友脱单计划");
news.setDescription("帮助室友脱单脱贫");
news.setPicUrl("http://xxx.cn/wechat/1.jpg");
news.setUrl("http://xxx.cn");
News news2 = new News();
news2.setTitle("室友脱单计划");
news2.setDescription("帮助室友脱单脱贫");
news2.setPicUrl("http://xxx.cn/wechat/1.jpg");
news2.setUrl("http://xxx.cn");
newsList.add(news);
newsList.add(news2);
newsMessage.setToUserName(fromUserName);
newsMessage.setFromUserName(toUserName);
newsMessage.setCreateTime(new Date().getTime());
newsMessage.setMsgType(MESSAGE_NEWS);
newsMessage.setArticles(newsList);
newsMessage.setArticleCount(newsList.size());
message = MessageUtil.newsMessageToXml(newsMessage);
return message;
}
/**
* 组装图片消息
* @param toUserName
* @param fromUserName
* @return
*/
public static String initImageMessage(String toUserName, String fromUserName){
String message=null;
Image image = new Image();
image.setMediaId("desmnM_GW2dleIWqbLuwhVrp4aJyjNjVsBG7M42XPtNuImpcw5x4bQ2bSufgb4DX");
ImageMessage imageMessage = new ImageMessage();
imageMessage.setFromUserName(toUserName);
imageMessage.setToUserName(fromUserName);
imageMessage.setMsgType(MESSAGE_IMAGE);
imageMessage.setCreateTime(new Date().getTime());
imageMessage.setImage(image);
message = MessageUtil.imageMessageToXml(imageMessage);
return message;
}
/**
* 组装音乐消息
* @param toUserName
* @param fromUserName
* @return
*/
public static String initMusicMessage(String toUserName, String fromUserName){
String message=null;
Music music = new Music();
music.setThumbMediaId("9xcqer09cTDhyGS1zcGklHWB9hKVPuoWa-jJB7lFMcC5gOvM8QRu4QMCnVD8otku");
music.setTitle("凉城");
music.setDescription("a song");
music.setMusicUrl("http://xxx.cn/wechat/liangcheng.mp3");
music.setHQMusicUrl("http://xxx.cn/wechat/liangcheng.mp3");
MusicMessage musicMessage = new MusicMessage();
musicMessage.setFromUserName(toUserName);
musicMessage.setToUserName(fromUserName);
musicMessage.setMsgType(MESSAGE_MUSIC);
musicMessage.setCreateTime(new Date().getTime());
musicMessage.setMusic(music);
message = MessageUtil.musicMessageToXml(musicMessage);
return message;
}
public static String initMusicMessage2(String toUserName, String fromUserName){
String message=null;
Music music = new Music();
music.setThumbMediaId("9xcqer09cTDhyGS1zcGklHWB9hKVPuoWa-jJB7lFMcC5gOvM8QRu4QMCnVD8otku");
music.setTitle("凉凉");
music.setDescription("a song");
music.setMusicUrl("http://xxx.cn/wechat/liangliang.mp3");
music.setHQMusicUrl("http://xxx.cn/wechat/liangliang.mp3");
MusicMessage musicMessage = new MusicMessage();
musicMessage.setFromUserName(toUserName);
musicMessage.setToUserName(fromUserName);
musicMessage.setMsgType(MESSAGE_MUSIC);
musicMessage.setCreateTime(new Date().getTime());
musicMessage.setMusic(music);
message = MessageUtil.musicMessageToXml(musicMessage);
return message;
}
}
微信消息的封装
最新推荐文章于 2023-06-03 19:51:15 发布