com.wtxy.weixin.service
CoreService.java
1 package com.wtxy.weixin.service; 2 3 import java.util.Date; 4 import java.util.Map; 5 6 import javax.servlet.http.HttpServletRequest; 7 8 import com.wtxy.util.MessageUtil; 9 import com.wtxy.weixin.message.TextMessage; 10 11 /** 12 * 核心服务类 13 * 14 * @author Ran 15 * @date 2016-04-21 16 */ 17 public class CoreService { 18 /** 19 * 处理微信发来的请求 20 * 21 * @param request 22 * @return xml 23 */ 24 public static String processRequest(HttpServletRequest request) { 25 // xml格式的消息数据 26 String respXML = null; 27 28 TextMessage textMessage = new TextMessage(); 29 // 默认返回的文本消息内容 30 String respContent = "未知的消息类型!"; 31 try { 32 // 调用parseXml方法解析请求消息 33 Map<String, String> requestMap = MessageUtil.parseXML(request); 34 // 发送方帐号 35 String fromUserName = requestMap.get("FromUserName"); 36 // 开发者微信号 37 String toUserName = requestMap.get("ToUserName"); 38 // 消息类型 39 String msgType = requestMap.get("MsgType"); 40 41 // 回复文本消息 42 textMessage.setToUserName(fromUserName); 43 textMessage.setFromUserName(toUserName); 44 textMessage.setCreateTime(new Date().getTime()); 45 textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); 46 47 // 文本消息 48 if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { 49 String content = requestMap.get("Content"); 50 if (content.equals("开灯")){ 51 respContent = "灯已开!"; 52 //respContent = "您发送的是文本消息!内容是:\n"+content; 53 }else if(content.equals("关灯")){ 54 respContent = "灯已关!"; 55 } 56 57 } 58 // 图片消息 59 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) { 60 respContent = "您发送的是图片消息!"; 61 } 62 // 语音消息 63 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) { 64 respContent = "您发送的是语音消息!"; 65 } 66 // 视频消息 67 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)) { 68 respContent = "您发送的是视频消息!"; 69 } 70 // 地理位置消息 71 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) { 72 respContent = "您发送的是地理位置消息!"; 73 } 74 // 链接消息 75 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) { 76 respContent = "您发送的是链接消息!"; 77 } 78 // 事件推送 79 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) { 80 // 事件类型 81 String eventType = requestMap.get("Event"); 82 // 关注 83 if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { 84 respContent = "欢迎关注 智能管家wtxy!"; 85 } 86 // 取消关注 87 else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) { 88 // TODO 取消订阅后用户不会再收到公众账号发送的消息,因此不需要回复 89 } 90 // 扫描带参数二维码 91 else if (eventType.equals(MessageUtil.EVENT_TYPE_SCAN)) { 92 // TODO 处理扫描带参数二维码事件 93 } 94 // 上报地理位置 95 else if (eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)) { 96 // TODO 处理上报地理位置事件 97 } 98 // 自定义菜单 99 else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) { 100 // TODO 处理菜单点击事件 101 } 102 } 103 // 设置文本消息的内容 104 textMessage.setContent(respContent); 105 // 将文本消息对象转换成xml 106 respXML = MessageUtil.messageToXML(textMessage); 107 } catch (Exception e) { 108 e.printStackTrace(); 109 } 110 return respXML; 111 } 112 }