You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							106 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
	
	
							106 lines
						
					
					
						
							4.3 KiB
						
					
					
				| package com.ynxbd.wx.servlet;
 | |
| 
 | |
| import com.ynxbd.common.result.Result;
 | |
| import com.ynxbd.wx.config.WeChatConfig;
 | |
| import com.ynxbd.wx.wxfactory.bean.event.WxEvent;
 | |
| import com.ynxbd.wx.wxfactory.utils.WxEventHelper;
 | |
| import com.ynxbd.wx.wxfactory.utils.WxPassiveReplyHelper;
 | |
| import com.ynxbd.wx.wxfactory.utils.WxSignHelper;
 | |
| import lombok.extern.slf4j.Slf4j;
 | |
| 
 | |
| import javax.servlet.annotation.WebServlet;
 | |
| import javax.servlet.http.HttpServlet;
 | |
| import javax.servlet.http.HttpServletRequest;
 | |
| import javax.servlet.http.HttpServletResponse;
 | |
| import java.io.IOException;
 | |
| 
 | |
| @Slf4j
 | |
| @WebServlet("/wx")
 | |
| public class WxServlet extends HttpServlet {
 | |
| 
 | |
|     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
 | |
|         doPost(request, response);
 | |
|     }
 | |
| 
 | |
|     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
 | |
|         request.setCharacterEncoding("UTF-8");
 | |
|         response.setCharacterEncoding("UTF-8");
 | |
| 
 | |
|         WxEvent wxEvent = WxSignHelper.getReqXmlToBean(request, WxEvent.class);
 | |
|         if (wxEvent == null) {
 | |
|             String echoStr = request.getParameter("echostr");
 | |
|             if (echoStr != null) {
 | |
|                 Result.respStr(response, echoStr); // 首次请求申请验证,返回echoStr
 | |
|                 return;
 | |
|             }
 | |
|             log.warn("[消息]event is null");
 | |
|             Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         if (WxEventHelper.filter(wxEvent)) {
 | |
|             Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         if (!WxEventHelper.verifyEventSign(request, WeChatConfig.TOKEN)) {
 | |
|             log.warn("[消息]验签失败");
 | |
|             Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|             return;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         String msgId = wxEvent.getMsgId();
 | |
|         //点击菜单不需要往下操作,直接返回
 | |
|         if (msgId == null&&wxEvent.getEvent()==WxPassiveReplyHelper.EVENT_VIEW) {
 | |
|             Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|             return;
 | |
|         }
 | |
|         String toUserName = wxEvent.getToUserName();
 | |
|         String fromUserName = wxEvent.getFromUserName();
 | |
| 
 | |
|         String key = fromUserName + "_" + toUserName + "_" + msgId + "_" + wxEvent.getCreateTime();
 | |
|         if (WxPassiveReplyHelper.isRepeat(key)) {
 | |
|             Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         String eventKey = wxEvent.getEventKey();
 | |
|         String event = wxEvent.getEvent();
 | |
|         String msgType = wxEvent.getMsgType();
 | |
|         String content = wxEvent.getContent();
 | |
|         content = content == null ? null : content.trim().toUpperCase();
 | |
| 
 | |
|         WxPassiveReplyHelper.textCommon(response, content, msgType, fromUserName, toUserName);
 | |
|         switch (WeChatConfig.APP_ID) {
 | |
|             case "wx18b15dc67fc96f89":
 | |
|                 WxPassiveReplyHelper.华坪县人民医院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
| 
 | |
|             case "wx1e30610a28d189a8":
 | |
|                 WxPassiveReplyHelper.巍山县人民医院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
| 
 | |
|             case "wxca97aaeb3c40c0d0":
 | |
|                 WxPassiveReplyHelper.芒市人民医院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
| 
 | |
|             case "wxd503671f502bd89d":
 | |
|                 WxPassiveReplyHelper.红河州第一人民医院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
|             case "wx1f1e9d29f9b44c36":
 | |
|                 WxPassiveReplyHelper.玉龙县人民医院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
|             case "wx8e7ce6f6e83eb156":
 | |
|                 WxPassiveReplyHelper.德宏州妇幼保健院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
|             case "wx90e7fe556d089e66":
 | |
|                 WxPassiveReplyHelper.蒙自市妇幼保健院(response, content, msgType, fromUserName, toUserName, eventKey, event);
 | |
|                 break;
 | |
|             default:
 | |
|                 break;
 | |
|         }
 | |
|         Result.respStr(response, WxPassiveReplyHelper.SUCCESS);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 |