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);
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 |