Browse Source

企業微信

master
zhizhi wu 5 years ago
parent
commit
c107474a7b
  1. 13
      health/src/main/java/com/ccsens/health/api/WeixinController.java
  2. 11
      health/src/main/java/com/ccsens/health/service/ConstantService.java
  3. 5
      health/src/main/java/com/ccsens/health/service/IWeiXinService.java
  4. 20
      health/src/main/java/com/ccsens/health/service/WeiXinService.java
  5. 4
      health/src/main/resources/application.yml
  6. 5
      util/src/main/java/com/ccsens/util/enterprisewx/WeiXinConstant.java

13
health/src/main/java/com/ccsens/health/api/WeixinController.java

@ -1,5 +1,6 @@
package com.ccsens.health.api;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -12,6 +13,7 @@ import com.ccsens.util.enterprisewx.AesException;
import com.ccsens.util.enterprisewx.WXBizMsgCrypt;
import com.ccsens.util.enterprisewx.WeiXinConstant;
import com.ccsens.util.enterprisewx.dto.MessageDto;
import io.swagger.annotations.ApiModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@ -26,6 +28,7 @@ import java.util.Map;
/**
* @author wu
*/
@ApiModel("微信授权相关接口")
@Slf4j
@RestController
public class WeixinController {
@ -50,7 +53,7 @@ public class WeixinController {
/**
* 数据回调URL
*/
@PostMapping("userChangeNotice")
@GetMapping("userChangeNotice")
public String userChangeNotice(MessageDto dto) throws Exception{
log.info("数据回调请求参数:{}", dto);
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID);
@ -61,13 +64,15 @@ public class WeixinController {
/**
* 指令回调URL
*/
@PostMapping("authorizationChangeNotice")
@GetMapping("authorizationChangeNotice")
public String authorizationChangeNotice(MessageDto dto) throws Exception{
log.info("请求参数:{}", dto);
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID);
String verifyURL = wxcpt.VerifyURL(dto.getMsg_signature(), dto.getTimestamp(), dto.getNonce(), dto.getEchostr());
log.info("解析结果:{}", verifyURL);
if (StrUtil.isBlank(verifyURL) || !(verifyURL.startsWith("<xml") || verifyURL.startsWith("<XML"))){
return verifyURL;
}
String jsonStr = JacksonUtil.xmlToJson(verifyURL);
JSONObject json = JSONObject.parseObject(jsonStr);
switch (json.getString("InfoType")){
@ -89,7 +94,7 @@ public class WeixinController {
break;
//TODO 成员变更和部门变更通知
}
return "success";
return verifyURL;
}
/**

11
health/src/main/java/com/ccsens/health/service/ConstantService.java

@ -7,14 +7,21 @@ import com.ccsens.health.bean.po.Constant;
import com.ccsens.health.bean.po.ConstantExample;
import com.ccsens.health.persist.mapper.ConstantMapper;
import com.ccsens.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ConstantService implements IConstantService {
@Autowired
private Snowflake snowflake;
@Autowired
@Resource
private ConstantMapper constantMapper;
@Autowired
private RedisUtil redisUtil;

5
health/src/main/java/com/ccsens/health/service/IWeiXinService.java

@ -27,4 +27,9 @@ public interface IWeiXinService {
*/
String getAccessToken(String suiteId, String corpId, String permanent_code);
/**
* 初始化部门和成员信息
* @param accessToken
*/
void initDepartment(String accessToken);
}

20
health/src/main/java/com/ccsens/health/service/WeiXinService.java

@ -5,12 +5,14 @@ import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.health.bean.po.Department;
import com.ccsens.health.bean.po.HealthAuth;
import com.ccsens.health.bean.po.HealthAuthAgent;
import com.ccsens.health.persist.mapper.HealthAuthAgentMapper;
import com.ccsens.health.persist.mapper.HealthAuthMapper;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.RestTemplateUtil;
import com.ccsens.util.WebConstant;
import com.ccsens.util.enterprisewx.WeiXinConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -20,7 +22,9 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@ -77,7 +81,7 @@ public class WeiXinService implements IWeiXinService {
Map<String, String> param = new HashMap<>();
param.put("suite_id", suiteId);
param.put("suite_secret", WeiXinConstant.suiteSecret);
param.put("suite_secret", WeiXinConstant.secret);
param.put("suite_ticket", suiteTicket);
String resultStr = RestTemplateUtil.postBody(WeiXinConstant.GET_SUITE_TOKEN, param);
log.info("获取suite_ticket返回:{}", resultStr);
@ -112,6 +116,20 @@ public class WeiXinService implements IWeiXinService {
}
}
@Override
public void initDepartment(String accessToken) {
Map<String, Object> param = new HashMap<>();
param.put("access_token", accessToken);
List departmentList = (List) RestTemplateUtil.getForEntity(WeiXinConstant.DEPARTMENT_LIST, param, List.class);
log.info("部門信息:{}", departmentList);
if (CollectionUtil.isEmpty(departmentList)) {
return;
}
List<Department> departments = new ArrayList<>();
}
/**
* 初始化永久授权信息
* @param json

4
health/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

5
util/src/main/java/com/ccsens/util/enterprisewx/WeiXinConstant.java

@ -11,7 +11,9 @@ public class WeiXinConstant {
public static final String corpID = "ww86f65c2e95cd8b4c";
public static final String encodingAESKey = "NInifq246LLoF5wyCq4fRJNJOvKI7XIkgdUqOpWoP3G";
public static final String providerSecret = "fr8OXt4iMqIxe3QMUVkHCK_j9oj0qllZciOgw5CdGldDksv5yMoxFduPbZGmIlfj";
public static final String suiteSecret = "suite_secret";
// public static final String suiteSecret = "suite_secret";
public static final String suiteID= "wwb9ce2061d1cce110";
public static final String secret= "HyhFPrD_7gObsQdX1RTTH6nDeJNduVKGuaF62zqmgYs";
public static final String ERR_CODE = "errcode";
@ -24,6 +26,7 @@ public class WeiXinConstant {
public static final String GET_PERMANENT_CODE = "https://qyapi.weixin.qq.com/cgi-bin/service/get_permanent_code";
public static final String GET_SUITE_TOKEN = "https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token";
public static final String GET_CORP_TOKEN = "https://qyapi.weixin.qq.com/cgi-bin/service/get_corp_token";
public static final String DEPARTMENT_LIST = "https://qyapi.weixin.qq.com/cgi-bin/department/list";
/**

Loading…
Cancel
Save