From e6d1cb162a7688030983d27375570ce2d52f69ff Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 15 六月 2020 15:35:14 +0800
Subject: [PATCH] 上传代码

---
 service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java |  189 +++++++++++++++++-----------------------------
 1 files changed, 70 insertions(+), 119 deletions(-)

diff --git a/service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java b/service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java
index 4a2d6f2..5433ed5 100644
--- a/service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java
+++ b/service-front/src/main/java/com/java110/front/controller/WechatGatewayController.java
@@ -1,25 +1,29 @@
 package com.java110.front.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.base.controller.BaseController;
+import com.java110.core.context.IPageData;
+import com.java110.core.context.PageData;
 import com.java110.core.factory.AuthenticationFactory;
-import com.java110.core.factory.WechatFactory;
+import com.java110.front.smo.wechatGateway.IWechatGatewaySMO;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.WechatConstant;
+import com.java110.utils.util.StringUtil;
 import org.dom4j.Document;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.Arrays;
 
 /**
@@ -36,16 +40,19 @@
 
     private final static Logger logger = LoggerFactory.getLogger(WechatGatewayController.class);
 
+    @Autowired
+    private IWechatGatewaySMO wechatGatewaySMOImpl;
+
 
     /**
      * 寰俊鐧诲綍鎺ュ彛
      *
      * @param request
      */
-    @RequestMapping(path = "/gateway")
+    @RequestMapping(path = "/gateway", method = RequestMethod.GET)
     public ResponseEntity<String> gateway(HttpServletRequest request) {
 
-        String token = WechatConstant.TOKEN;
+        String token = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.TOKEN);
         String signature = request.getParameter("signature");
         String timestamp = request.getParameter("timestamp");
         String nonce = request.getParameter("nonce");
@@ -63,47 +70,7 @@
         logger.debug("sourceString = " + sourceString + "||||" + "signature1 = " + signature1);
         try {
             if (signature1.equals(signature)) {
-                if (echostr == null) {
-                    String postStr = this.readStreamParameter(request.getInputStream());
-                    if (postStr == null || postStr.length() == 0) {
-                        responseStr = "鏈緭鍏ヤ换浣曞唴瀹�";
-                    } else {
-                    /*if (postStr.equals(new String(postStr.getBytes("ISO-8859-1"), "ISO-8859-1"))) {
-                        logger.debug(" This type is  iso-8859-1");
-                        postStr = new String(postStr.getBytes("ISO-8859-1"), "UTF-8");
-
-                    }
-                    if (postStr.equals(new String(postStr.getBytes("GB2312"), "GB2312"))) {
-                        logger.debug(" This type is  GB2312" + postStr);
-                        postStr = new String(postStr.getBytes("GB2312"), "UTF-8");
-                        logger.debug(" change postStr to utf-8 " + postStr);
-                    }
-                    if (postStr.equals(new String(postStr.getBytes("GBK"), "GBK"))) {
-                        logger.debug(" This type is  GBK");
-                        postStr = new String(postStr.getBytes("GBK"), "UTF-8");
-
-                    }
-                    postStr = new String(postStr.getBytes("GB2312"), "UTF-8");*/
-                        Document document = DocumentHelper.parseText(postStr);
-                        Element root = document.getRootElement();
-                        String fromUserName = root.elementText("FromUserName");
-                        String toUserName = root.elementText("ToUserName");
-                        String keyword = root.elementTextTrim("Content");
-                        String msgType = root.elementTextTrim("MsgType");
-                        String event = root.elementText("Event");
-                        String eventKey = root.elementText("EventKey");
-                        if (WechatConstant.MSG_TYPE_TEXT.equals(msgType)) {
-                            responseStr = textResponseHandler(fromUserName, toUserName, keyword);
-                        } else if (WechatConstant.MSG_TYPE_EVENT.equals(msgType)) {
-                            responseStr = eventResponseHandler(fromUserName, toUserName, keyword, event, eventKey);
-                        } else {
-                            responseStr = eventResponseHandler(fromUserName, toUserName, keyword, event, eventKey);
-                        }
-
-                    }
-                } else {
-                    responseStr = echostr;
-                }
+                responseStr = echostr;
                 logger.debug(">>>>>>>>>>>>>..responseStr>>>>>>>>>>>>>>>" + responseStr);
             } else {
                 responseStr = "浜诧紝闈炴硶璁块棶锛岀鍚嶅け璐�";
@@ -118,84 +85,68 @@
     }
 
     /**
-     * 閺傚洦婀版穱鈩冧紖閸ョ偛顦�
+     * 寰俊鐧诲綍鎺ュ彛
      *
-     * @param fromUserName
-     * @param toUserName
-     * @param keyword
-     * @return
+     * @param request
      */
-    private String textResponseHandler(String fromUserName, String toUserName,
-                                       String keyword) {
-        if (keyword == null || keyword.length() == 0) {
-            return WechatFactory
-                    .formatText(toUserName, fromUserName, "鏈寘鍚换浣曚俊鎭�");
-        } else {
-            String responseStr = keyWordHandler(fromUserName, toUserName,
-                    keyword);
-            return WechatFactory
-                    .formatText(toUserName, fromUserName, responseStr);
+    @RequestMapping(path = "/gateway", method = RequestMethod.POST)
+    public ResponseEntity<String> gateway(@RequestBody String param, HttpServletRequest request) {
+
+        String token = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.TOKEN);
+        String signature = request.getParameter("signature");
+        String timestamp = request.getParameter("timestamp");
+        String nonce = request.getParameter("nonce");
+        String openId = request.getParameter("openid");
+        String java110AppId = request.getParameter("java110AppId");
+        String responseStr = "";
+        ResponseEntity<String> responseEntity = null;
+        logger.debug("token = " + token + "||||" + "signature = " + signature + "|||" + "timestamp = "
+                + timestamp + "|||" + "nonce = " + nonce + "|||| param = " + param + "|||| openId= " + openId);
+        String sourceString = "";
+        String[] ss = new String[]{token, timestamp, nonce};
+        Arrays.sort(ss);
+        for (String s : ss) {
+            sourceString += s;
         }
-    }
-
-    private String keyWordHandler(String fromUserName, String toUserName,
-                                  String keyword) {
-        // TODO Auto-generated method stub
-        String domain = WechatConstant.TOKEN;
-        //String url = domain + "/IMSS/indexPage.do";
-        return "HC灏忓尯鐗╀笟绠$悊绯荤粺鏄敱java110鍥㈤槦浜�2017骞�4鏈堜唤鍙戣捣鐨勫墠鍚庣鍒嗙銆佸垎甯冨紡鏋舵瀯寮�婧愰」鐩紝鐩墠鎴戜滑鐨勪唬鐮佸紑婧愬湪github 鍜実itee涓婏紝寮�婧愰」鐩敱HC灏忓尯绠$悊绯荤粺鍚庣锛孒C灏忓尯绠$悊绯荤粺鍓嶇锛孒C灏忓尯绠$悊绯荤粺涓氫富鎵嬫満鐗堝拰HC灏忓尯绠$悊绯荤粺鐗╀笟鎵嬫満鐗堬紝涓氬姟鎶�鏈氦娴佺兢锛�827669685";
-    }
-
-    /**
-     * 浜嬩欢澶勭悊
-     *
-     * @param fromUserName
-     * @param toUserName
-     * @param event
-     * @param eventKey
-     * @return
-     * @throws Exception
-     */
-    @SuppressWarnings({"unchecked"})
-    public String eventResponseHandler(String fromUserName, String toUserName, String keyWords, String event,
-                                       String eventKey) throws Exception {
-        String resultStr = "";
-        // 鐠併垽妲�
-        if (event.equals("subscribe")) {
-            resultStr = "HC灏忓尯鐗╀笟绠$悊绯荤粺鏄敱java110鍥㈤槦浜�2017骞�4鏈堜唤鍙戣捣鐨勫墠鍚庣鍒嗙銆佸垎甯冨紡鏋舵瀯寮�婧愰」鐩紝鐩墠鎴戜滑鐨勪唬鐮佸紑婧愬湪github 鍜実itee涓婏紝寮�婧愰」鐩敱HC灏忓尯绠$悊绯荤粺鍚庣锛孒C灏忓尯绠$悊绯荤粺鍓嶇锛孒C灏忓尯绠$悊绯荤粺涓氫富鎵嬫満鐗堝拰HC灏忓尯绠$悊绯荤粺鐗╀笟鎵嬫満鐗堬紝涓氬姟鎶�鏈氦娴佺兢锛�827669685";
-        } else if (event.equals("unsubscribe")) {
-
-        } else if (event.equalsIgnoreCase("CLICK")) {
-            resultStr = textResponseHandler(fromUserName, toUserName,
-                    eventKey);
-        } else {
-
-        }
-        return WechatFactory.formatText(toUserName, fromUserName, resultStr);
-    }
-
-    public String readStreamParameter(ServletInputStream in) {
-        StringBuilder buffer = new StringBuilder();
-        BufferedReader reader = null;
+        String signature1 = AuthenticationFactory.SHA1Encode(sourceString).toLowerCase();
+        logger.debug("sourceString = " + sourceString + "||||" + "signature1 = " + signature1);
         try {
-            reader = new BufferedReader(new InputStreamReader(in));
-            String line = null;
-            while ((line = reader.readLine()) != null) {
-                buffer.append(line);
+            if (!signature1.equals(signature)) {
+                responseStr = "浜诧紝闈炴硶璁块棶锛岀鍚嶅け璐�";
+                return new ResponseEntity<String>(responseStr, HttpStatus.OK);
             }
+            String postStr = param;
+            if (StringUtil.isEmpty(postStr)) {
+                responseStr = "鏈緭鍏ヤ换浣曞唴瀹�";
+                return new ResponseEntity<String>(responseStr, HttpStatus.OK);
+            }
+            Document document = DocumentHelper.parseText(postStr);
+            Element root = document.getRootElement();
+            String fromUserName = root.elementText("FromUserName");
+            String toUserName = root.elementText("ToUserName");
+            String keyword = root.elementTextTrim("Content");
+            String msgType = root.elementTextTrim("MsgType");
+            String event = root.elementText("Event");
+            String eventKey = root.elementText("EventKey");
+            JSONObject paramIn = new JSONObject();
+            paramIn.put("fromUserName", fromUserName);
+            paramIn.put("toUserName", toUserName);
+            paramIn.put("keyword", keyword);
+            paramIn.put("msgType", msgType);
+            paramIn.put("event", event);
+            paramIn.put("eventKey", eventKey);
+            IPageData pd = PageData.newInstance().builder("-1", "", "", paramIn.toJSONString(),
+                    "", "", "", "",
+                    java110AppId);
+            responseEntity = wechatGatewaySMOImpl.gateway(pd);
+
         } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (null != reader) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
+            // TODO Auto-generated catch block
+            logger.error("澶勭悊澶辫触", e);
+            responseStr = "浜诧紝缃戠粶瓒呮椂锛岃绋嶅悗閲嶈瘯";
+            responseEntity = new ResponseEntity<String>(responseStr, HttpStatus.OK);
         }
 
-        logger.debug("");
-        return buffer.toString();
+        return responseEntity;
     }
 }

--
Gitblit v1.8.0