Explorar el Código

增加新主体

xueyiming hace 2 días
padre
commit
756e2fe669

+ 92 - 0
api-module/src/main/java/com/tzld/piaoquan/api/controller/TencentWeComController.java

@@ -23,6 +23,7 @@ import java.io.PrintWriter;
 import java.util.Map;
 
 import static com.tzld.piaoquan.growth.common.common.enums.CorpEnum.HNWQ;
+import static com.tzld.piaoquan.growth.common.common.enums.CorpEnum.YLQ;
 
 @Slf4j
 @RestController
@@ -127,4 +128,95 @@ public class TencentWeComController {
         String success = "success";
         return success;
     }
+
+
+    //优量圈验证接口
+    @GetMapping("/ylq/verify")
+    public void ylqVerifyGet(HttpServletRequest request, HttpServletResponse response) {
+        try {
+            // 微信加密签名
+            String msgSignature = request.getParameter("msg_signature");
+            // 时间戳
+            String timestamp = request.getParameter("timestamp");
+            // 随机数
+            String nonce = request.getParameter("nonce");
+            // 随机字符串
+            // 如果是刷新,需返回原echostr
+            String echoStr = request.getParameter("echostr");
+            // 微信加密签名
+            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeComServerConstant.TOKEN,
+                    WeComServerConstant.ENCODING_AES_KEY,
+                    WeComServerConstant.CORP_ID);
+
+            String sEchoStr = ""; //需要返回的明文
+            PrintWriter out;
+
+            sEchoStr = wxcpt.VerifyURL(msgSignature, timestamp,
+                    nonce, echoStr);
+            log.info("verifyurl echostr: " + sEchoStr);
+
+            // 验证URL成功,将sEchoStr返回
+            out = response.getWriter();
+            out.print(sEchoStr);
+        } catch (Exception e) {
+            //验证URL失败,错误原因请查看异常
+            log.error("verifyGet error", e);
+        }
+
+    }
+
+    //优量圈回调消息接口
+    @PostMapping(value = "/ylq/verify")
+    public String ylqVerifyPost(HttpServletRequest request) {
+        try {
+            // 微信加密签名
+            String msg_signature = request.getParameter("msg_signature");
+            // 时间戳
+            String timestamp = request.getParameter("timestamp");
+            // 随机数
+            String nonce = request.getParameter("nonce");
+
+            String id = WeComServerConstant.CORP_ID;
+
+            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeComServerConstant.TOKEN, WeComServerConstant.ENCODING_AES_KEY, id);
+
+            StringBuilder postData = new StringBuilder();   // 密文,对应POST请求的数据
+            //1.获取加密的请求消息:使用输入流获得加密请求消息postData
+            ServletInputStream in = request.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+
+            String tempStr = "";   //作为输出字符串的临时串,用于判断是否读取完毕
+            while (null != (tempStr = reader.readLine())) {
+                postData.append(tempStr);
+            }
+
+            String suiteXml = wxcpt.DecryptMsg(msg_signature, timestamp, nonce, postData.toString());
+            log.info("suiteXml: " + suiteXml);
+
+            Map suiteMap = WxUtil.transferXmlToMap(suiteXml);
+            log.info("suiteMap = {}", JSONObject.toJSONString(suiteMap));
+            if (suiteMap != null) {
+                String changeType = (String) suiteMap.get("ChangeType");
+                if (StringUtils.isNotEmpty(changeType) && changeType.equals("add_external_contact")) {
+                    String userId = (String) suiteMap.get("UserID");
+                    String externalUserId = (String) suiteMap.get("ExternalUserID");
+                    String welcomeCode = (String) suiteMap.get("WelcomeCode");
+                    log.info("addStaffWithUser userId={} externalUserId={}", userId, externalUserId);
+                    weComUserService.addStaffWithUser(externalUserId, userId, YLQ.getId());
+                    weComAutoReply.AutoReplyMessage(welcomeCode, externalUserId, userId, YLQ.getId());
+                }
+
+                if (StringUtils.isNotEmpty(changeType) && changeType.equals("del_follow_user")) {
+                    String userId = (String) suiteMap.get("UserID");
+                    String externalUserId = (String) suiteMap.get("ExternalUserID");
+                    log.info("delStaffWithUser userId={} externalUserId={}", userId, externalUserId);
+                    weComUserService.delStaffWithUser(externalUserId, userId, YLQ.getId(), System.currentTimeMillis());
+                }
+            }
+        } catch (Exception e) {
+            log.error("verifyPost error", e);
+        }
+        String success = "success";
+        return success;
+    }
 }

+ 6 - 0
common-module/src/main/java/com/tzld/piaoquan/growth/common/common/constant/WeComServerConstant.java

@@ -7,4 +7,10 @@ public interface WeComServerConstant {
     String ENCODING_AES_KEY = "i2DhQ6AjBGpacrSA8NNXIW1MWRzCAwowbrEd30GWEeR";
 
     String CORP_ID = "wwa4015dc7d652a21f";
+
+    String YLQ_TOKEN = "Sk4rwob1vD9bjZDINuYVBU";
+
+    String YLQ_ENCODING_AES_KEY = "i2DhQ6AjBGpacrSA8NNXIW1MWRzCAwowbrEd30GWEeR";
+
+    String YLQ_CORP_ID = "wwa4015dc7d652a21f";
 }

+ 2 - 1
common-module/src/main/java/com/tzld/piaoquan/growth/common/common/enums/CorpEnum.java

@@ -5,7 +5,8 @@ import lombok.Getter;
 @Getter
 public enum CorpEnum {
 
-    HNWQ(1L, "湖南为趣时代");
+    HNWQ(1L, "湖南为趣时代"),
+    YLQ(2L, "优量圈");
 
     final Long id;
     final String desc;