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.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; @Component @Slf4j @Data public class QywxUtil { private static JSONObject json = new JSONObject(); private static QywxUtil qyUtil; @Value("${qiwei.serviceurl}") private String qiweiUrl; @PostConstruct private void init() { qyUtil = this; System.out.println(qyUtil.qiweiUrl); System.out.println(qyUtil.getQiweiUrl()); // QywxUtil.qiweiUrl = serviceurl; } 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 = sendHttpGetRequest(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) { try{ String[] interfaceUrl = QywxConstant.SEND_MSG; String url = interfaceUrl[0].replace("${accesstoken}",token); QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param) ,new TypeReference(){},true); log.error("推送消息结果{}",JSONObject.toJSONString(response)); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response; } }catch (Exception e){ } 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 InputStream getMediaInputstream(String token, String media) { try { String[] interfaceUrl = QywxConstant.GET_MEDIA; String url = qyUtil.qiweiUrl+interfaceUrl[0].replace("${accesstoken}",token).replace("${media_id}",media); log.info("企业微信临时素材获取url=========="+url); return HttpsUtil.connectionInputsteam(url,"GET",null,null); }catch (Exception e){ e.printStackTrace(); log.error("企业微信临时素材获取error=========="+e.getMessage()); } return null; } public static Map getMediaInputstreamMap(String token, String media) { try { String[] interfaceUrl = QywxConstant.GET_MEDIA; String url = qyUtil.qiweiUrl+interfaceUrl[0].replace("${accesstoken}",token).replace("${media_id}",media); log.info("企业微信临时素材获取url=========="+url); Map map = HttpsUtil.connInputsteamReturnMap(url,"GET",null,null); return map; }catch (Exception e){ e.printStackTrace(); log.error("企业微信临时素材获取error=========="+e.getMessage()); } 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(){},false); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response; } return null; } /** * * @param token * @param type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) * @return */ public static QywxUploadMediaResponse uploadMedia(String token,String type,String imgurl) { String[] interfaceUrl = QywxConstant.UPLOAD_TEMP_MEDIA; String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${type}",type); QywxUploadMediaResponse response = sendHttpRequestMultifile(url,interfaceUrl[1],imgurl ,new TypeReference(){}); if(response !=null && response.getErrcode()!=null && response.getErrcode() ==0){ return response; } return null; } public static QywxBaseResponse getUserInfoByCode(String token,String code) { String[] interfaceUrl = QywxConstant.GET_USER_BY_AUTH_CODE; String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${code}",code); QywxBaseResponse response = sendHttpRequest(url,interfaceUrl[1],"" ,new TypeReference>(){}); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response; } return null; } public static String getJsApiTicket(String token) { String[] interfaceUrl = QywxConstant.GET_JSAPI_TICKET; String url = interfaceUrl[0].replace("${accesstoken}",token); QywxBaseResponse response = sendHttpRequest(url,interfaceUrl[1],"" ,new TypeReference>(){}); if(response.getErrcode()!=null && response.getErrcode() ==0){ return response.getTicket(); } 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+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; try { Map headers = new HashMap<>(); res = HttpsUtil.get(qyUtil.qiweiUrl+url,true); 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 QywxBaseResponse sendHttpGetRequest(String url, String name, TypeReference> typeReference){ log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(url)); if ( StringUtils.isNotBlank(url)) { String res = null; try { Map headers = new HashMap<>(); res = HttpsUtil.get(qyUtil.qiweiUrl+url,true); QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType()); logResult(result,name); return result; }catch (Exception e){ e.printStackTrace(); log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(url)); } } return null; } public static T sendHttpRequestMultifile(String url, String name, String imgUrl , TypeReference typeReference){ log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ imgUrl); if ( StringUtils.isNotBlank(url)) { String res = null; try { res = HttpsUtil.uploadTempMedia (qyUtil.qiweiUrl+url,imgUrl); log.info("从企微接口:{}----上传临时素材结果:{}",url,res); JSONObject jsonObject = JSONObject.parseObject(res); T result = JSONObject.parseObject(res, typeReference.getType()); return result; }catch (Exception e){ e.printStackTrace(); log.error("【"+name+"】================失败===="+ imgUrl); } } return null; } public static T sendHttpRequestSingle(String url, String name, String param, TypeReference typeReference,boolean isPost){ log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; try { Map headers = new HashMap<>(); if(isPost){ res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param); }else{ res = HttpsUtil.get(qyUtil.qiweiUrl+url,true); } 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)); } } }