|
@@ -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
|
|
//获取企业AccessToken
|
|
private String getCorpAccessToken(WxCorpInfo corpInfo) throws Exception {
|
|
private String getCorpAccessToken(WxCorpInfo corpInfo) throws Exception {
|
|
if (corpInfo.getExpireTime().isBefore(LocalDateTime.now())) {
|
|
if (corpInfo.getExpireTime().isBefore(LocalDateTime.now())) {
|