Browse Source

企業微信

master
zhizhi wu 6 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; package com.ccsens.health.api;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; 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.WXBizMsgCrypt;
import com.ccsens.util.enterprisewx.WeiXinConstant; import com.ccsens.util.enterprisewx.WeiXinConstant;
import com.ccsens.util.enterprisewx.dto.MessageDto; import com.ccsens.util.enterprisewx.dto.MessageDto;
import io.swagger.annotations.ApiModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -26,6 +28,7 @@ import java.util.Map;
/** /**
* @author wu * @author wu
*/ */
@ApiModel("微信授权相关接口")
@Slf4j @Slf4j
@RestController @RestController
public class WeixinController { public class WeixinController {
@ -50,7 +53,7 @@ public class WeixinController {
/** /**
* 数据回调URL * 数据回调URL
*/ */
@PostMapping("userChangeNotice") @GetMapping("userChangeNotice")
public String userChangeNotice(MessageDto dto) throws Exception{ public String userChangeNotice(MessageDto dto) throws Exception{
log.info("数据回调请求参数:{}", dto); log.info("数据回调请求参数:{}", dto);
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID); WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID);
@ -61,13 +64,15 @@ public class WeixinController {
/** /**
* 指令回调URL * 指令回调URL
*/ */
@PostMapping("authorizationChangeNotice") @GetMapping("authorizationChangeNotice")
public String authorizationChangeNotice(MessageDto dto) throws Exception{ public String authorizationChangeNotice(MessageDto dto) throws Exception{
log.info("请求参数:{}", dto); log.info("请求参数:{}", dto);
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID); WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WeiXinConstant.token, WeiXinConstant.encodingAESKey, WeiXinConstant.corpID);
String verifyURL = wxcpt.VerifyURL(dto.getMsg_signature(), dto.getTimestamp(), dto.getNonce(), dto.getEchostr()); String verifyURL = wxcpt.VerifyURL(dto.getMsg_signature(), dto.getTimestamp(), dto.getNonce(), dto.getEchostr());
log.info("解析结果:{}", verifyURL); log.info("解析结果:{}", verifyURL);
if (StrUtil.isBlank(verifyURL) || !(verifyURL.startsWith("<xml") || verifyURL.startsWith("<XML"))){
return verifyURL;
}
String jsonStr = JacksonUtil.xmlToJson(verifyURL); String jsonStr = JacksonUtil.xmlToJson(verifyURL);
JSONObject json = JSONObject.parseObject(jsonStr); JSONObject json = JSONObject.parseObject(jsonStr);
switch (json.getString("InfoType")){ switch (json.getString("InfoType")){
@ -89,7 +94,7 @@ public class WeixinController {
break; break;
//TODO 成员变更和部门变更通知 //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.bean.po.ConstantExample;
import com.ccsens.health.persist.mapper.ConstantMapper; import com.ccsens.health.persist.mapper.ConstantMapper;
import com.ccsens.util.RedisUtil; import com.ccsens.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; 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; import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ConstantService implements IConstantService { public class ConstantService implements IConstantService {
@Autowired @Autowired
private Snowflake snowflake; private Snowflake snowflake;
@Autowired @Resource
private ConstantMapper constantMapper; private ConstantMapper constantMapper;
@Autowired @Autowired
private RedisUtil redisUtil; 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); 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 cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; 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.HealthAuth;
import com.ccsens.health.bean.po.HealthAuthAgent; import com.ccsens.health.bean.po.HealthAuthAgent;
import com.ccsens.health.persist.mapper.HealthAuthAgentMapper; import com.ccsens.health.persist.mapper.HealthAuthAgentMapper;
import com.ccsens.health.persist.mapper.HealthAuthMapper; import com.ccsens.health.persist.mapper.HealthAuthMapper;
import com.ccsens.util.RedisUtil; import com.ccsens.util.RedisUtil;
import com.ccsens.util.RestTemplateUtil; import com.ccsens.util.RestTemplateUtil;
import com.ccsens.util.WebConstant;
import com.ccsens.util.enterprisewx.WeiXinConstant; import com.ccsens.util.enterprisewx.WeiXinConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -20,7 +22,9 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
@ -77,7 +81,7 @@ public class WeiXinService implements IWeiXinService {
Map<String, String> param = new HashMap<>(); Map<String, String> param = new HashMap<>();
param.put("suite_id", suiteId); param.put("suite_id", suiteId);
param.put("suite_secret", WeiXinConstant.suiteSecret); param.put("suite_secret", WeiXinConstant.secret);
param.put("suite_ticket", suiteTicket); param.put("suite_ticket", suiteTicket);
String resultStr = RestTemplateUtil.postBody(WeiXinConstant.GET_SUITE_TOKEN, param); String resultStr = RestTemplateUtil.postBody(WeiXinConstant.GET_SUITE_TOKEN, param);
log.info("获取suite_ticket返回:{}", resultStr); 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 * @param json

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

@ -1,4 +1,4 @@
spring: spring:
profiles: profiles:
active: dev active: test
include: common, util-dev 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 corpID = "ww86f65c2e95cd8b4c";
public static final String encodingAESKey = "NInifq246LLoF5wyCq4fRJNJOvKI7XIkgdUqOpWoP3G"; public static final String encodingAESKey = "NInifq246LLoF5wyCq4fRJNJOvKI7XIkgdUqOpWoP3G";
public static final String providerSecret = "fr8OXt4iMqIxe3QMUVkHCK_j9oj0qllZciOgw5CdGldDksv5yMoxFduPbZGmIlfj"; 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"; 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_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_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 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