package com.doumee.core.utils.qiyeweixin;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.TypeReference;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.utils.HttpsUtil;
|
import com.doumee.core.utils.qiyeweixin.model.request.QywxSendMsgRequest;
|
import com.doumee.core.utils.qiyeweixin.model.response.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.PostConstruct;
|
import java.io.IOException;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
|
@Component
|
@Slf4j
|
public class QywxUtil {
|
private static JSONObject json = new JSONObject();
|
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
private static QywxUtil qyUtil;
|
|
@PostConstruct
|
private void init() {
|
qyUtil = this;
|
systemDictDataBiz = qyUtil.systemDictDataBiz;
|
}
|
|
|
public static String create(Map<String, Object> map, String url, String token) throws IOException {
|
// String token = getToken(QY_Constant.CORPID, QY_Constant.SCHEDULESECRET);
|
String postData = createPostData(map);
|
String response = HttpsUtil.post(url + token, postData, "application/json", false);
|
System.out.println("获取到的token======>" + token);
|
System.out.println("请求数据======>" + postData);
|
System.out.println("发送微信的响应数据======>" + response);
|
return response;
|
}
|
|
private static String createPostData(Map<String, Object> map) {
|
System.out.println("进入createPostData方法-------------------------");
|
return JSONObject.toJSONString(map);
|
}
|
|
|
public static String getAccessToken(String corpId, String corpSecret) {
|
String[] interfaceUrl = QywxConstant.GET_ACCESS_TOKEN;
|
String url = interfaceUrl[0].replace("${corpid}",corpId).replace("${secret}",corpSecret);
|
QywxBaseResponse response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<String>>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response.getAccess_token();
|
}
|
return null;
|
}
|
public static List<QywxDepartInfoResponse> getDepartmentAll(String token) {
|
String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_LIST;
|
String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}","");
|
QywxBaseResponse<List<QywxDepartInfoResponse>> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<List<QywxDepartInfoResponse>>>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response.getData();
|
}
|
return null;
|
}
|
public static QywxDepartInfoResponse getDepartmentInfo(String token,String departid) {
|
String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_INFO;
|
String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",departid);
|
QywxBaseResponse<QywxDepartInfoResponse> response = sendHttpRequest(url,interfaceUrl[1],""
|
,new TypeReference< QywxBaseResponse<QywxDepartInfoResponse>>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response.getData();
|
}
|
return null;
|
}
|
public static QywxSendMsgResponse sendMsg(String token, QywxSendMsgRequest param) {
|
String[] interfaceUrl = QywxConstant.SEND_MSG;
|
String url = interfaceUrl[0].replace("${accesstoken}",token);
|
QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param)
|
,new TypeReference<QywxSendMsgResponse>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response;
|
}
|
return null;
|
}
|
public static List<QywxUserListResponse> getUserList(String token,String depatId) {
|
try {
|
String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_USER_LIST;
|
String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${departmentId}",depatId);
|
QywxBaseResponse<List<QywxUserListResponse>> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<List<QywxUserListResponse>>>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response.getData();
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
public static QywxUserInfoResponse getUserInfo(String token,String id) {
|
String[] interfaceUrl = QywxConstant.GET_USER_DETAIL;
|
String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",id);
|
QywxUserInfoResponse response = sendHttpRequestSingle(url,interfaceUrl[1],""
|
,new TypeReference<QywxUserInfoResponse>(){});
|
if(response.getErrcode()!=null && response.getErrcode() ==0){
|
return response;
|
}
|
return null;
|
}
|
|
/**
|
* 发起wms接口请求
|
* @param url
|
* @param name
|
* @param param
|
* @param typeReference
|
* @return
|
* @param <T>
|
*/
|
public static <T> QywxBaseResponse<T> sendHttpRequest(String url, String name, String param, TypeReference<QywxBaseResponse<T>> typeReference){
|
log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param));
|
if ( StringUtils.isNotBlank(url)) {
|
String res = null;
|
try {
|
Map<String,String> headers = new HashMap<>();
|
res = HttpsUtil.postJson(url,param);
|
QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType());
|
logResult(result,name);
|
return result;
|
}catch (Exception e){
|
e.printStackTrace();
|
log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param));
|
}
|
}
|
return null;
|
}
|
public static <T extends QywxBaseSingleResponse> T sendHttpRequestSingle(String url, String name, String param, TypeReference<T> typeReference){
|
log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param));
|
if ( StringUtils.isNotBlank(url)) {
|
String res = null;
|
try {
|
Map<String,String> headers = new HashMap<>();
|
res = HttpsUtil.postJson(url,param);
|
T result = JSONObject.parseObject(res, typeReference.getType());
|
// logResult(result,name);
|
return result;
|
}catch (Exception e){
|
e.printStackTrace();
|
log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param));
|
}
|
}
|
return null;
|
}
|
private static void logResult(QywxBaseResponse res,String name) {
|
if( res.getErrcode() !=null && res.getErrcode().equals(0)){
|
log.info("【企业微信接口:"+name+"】================成功====\n"+ JSONObject.toJSONString(res));
|
}else{
|
log.error("【企业微信接口:"+name+"】================失败====:\n"+ JSONObject.toJSONString(res));
|
}
|
}
|
}
|