Przeglądaj źródła

获取 应用权限接口

yurk 2 lat temu
rodzic
commit
b55f7155f0

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -197,6 +197,63 @@ public class WeiXinCorpController {
     }
 
 
+    //"获取企业微信jssdk初始化配置参数"
+    @RequestMapping("/getCorpWXAgentConfig")
+    public HttpRespMsg getCorpWXAgentConfig(String url, String token) {
+        HttpRespMsg msg = new HttpRespMsg();
+        try {
+            User user = userMapper.selectById(token);
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+
+            Item item = corpTicketMap.get(wxCorpInfo.getCorpid());
+            if (item == null || item.expireTime.isBefore(LocalDateTime.now())) {
+                //重新获取
+                String getTicketUrl = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=ACCESS_TOKEN&type=agent_config";
+                String corpToken = getCorpAccessToken(wxCorpInfo);
+                getTicketUrl = getTicketUrl.replace("ACCESS_TOKEN", corpToken);
+                String forObject = this.restTemplate.getForObject(getTicketUrl, String.class);
+                JSONObject json = JSONObject.parseObject(forObject);
+                log.info("返回:"+json.toJSONString());
+                if (json.getIntValue("errcode") == 0) {
+                    String ticket = json.getString("ticket");
+                    Item it = new Item();
+                    it.expireTime = LocalDateTime.now().plusSeconds(7200);
+                    it.jsTicket = ticket;
+                    corpTicketMap.put(wxCorpInfo.getCorpid(), it);
+                    item = it;
+                }
+            }
+            if (item == null) {
+                //msg.setError("jsapiTicket获取失败");
+                msg.setError(MessageUtils.message("wx.TicketError"));
+                return msg;
+            }
+            log.info("jsTicket = " + item.jsTicket);
+            // 随机数
+            String nonce_str = Sha1Util.getNonceStr();
+            String timestamp = Sha1Util.getTimeStamp();
+            // 对以下字段进行签名
+            SortedMap<String, String> packageParams = new TreeMap<String, String>();
+            SortedMap<String, String> packageParam = new TreeMap<String, String>();
+            packageParam.put("jsapi_ticket", item.jsTicket);
+            packageParam.put("noncestr", nonce_str);
+            packageParam.put("timestamp", ""+timestamp);
+            packageParam.put("url", url);
+            String sign = Sha1Util.createSHA1Sign(packageParam);
+            packageParams.put("corpid", wxCorpInfo.getCorpid());//这里使用企业微信corpId
+            packageParams.put("agentid",String.valueOf(wxCorpInfo.getAgentid()));
+            packageParams.put("timestamp",""+timestamp);
+            packageParams.put("nonceStr",nonce_str);
+            packageParams.put("signature", sign);
+            msg.data = packageParams;
+        } catch (Exception e) {
+            e.printStackTrace();
+            msg.setError(e.getMessage());
+        }
+        return msg;
+    }
+
+
     //获取企业AccessToken
     private String getCorpAccessToken(WxCorpInfo corpInfo) throws Exception {
         if (corpInfo.getExpireTime().isBefore(LocalDateTime.now())) {