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 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 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>(){}); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response.getAccess_token(); } return null; } public static List getDepartmentAll(String token) { String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_LIST; String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",""); QywxBaseResponse> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference>>(){}); 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 response = sendHttpRequest(url,interfaceUrl[1],"" ,new TypeReference< QywxBaseResponse>(){}); 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(){}); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response; } return null; } public static List getUserList(String token,String depatId) { try { String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_USER_LIST; String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${departmentId}",depatId); QywxBaseResponse> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference>>(){}); 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(){}); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response; } return null; } /** * 发起wms接口请求 * @param url * @param name * @param param * @param typeReference * @return * @param */ public static QywxBaseResponse sendHttpRequest(String url, String name, String param, TypeReference> typeReference){ log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; try { Map 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 sendHttpRequestSingle(String url, String name, String param, TypeReference typeReference){ log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; try { Map 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)); } } }