该类存放接口所用到的企业微信的接口地址

package com.common;public final class QyapiUrl {/*** 请求nginx转发服务器地址*/public static String RELAY_IP = "http://127.0.0.1:8081";/*** 获取access_token的url*/public static String GETTOKEN = RELAY_IP + "/cgi-bin/gettoken";/*** 获取应用信息*/public static String AGENT_GET = RELAY_IP + "/cgi-bin/agent/get";/*** 获取标签信息*/public static String TAG_GET = RELAY_IP + "/cgi-bin/tag/list";/*** 获取部门信息*/public static String DEPARTMENT_GET = RELAY_IP + "/cgi-bin/department/list";/*** 创建菜单*/public static String CREATEWECHAT_POST = RELAY_IP + "/cgi-bin/menu/create";/*** 删除菜单*/public static String DELETEWECHAT_GET=RELAY_IP+"/cgi-bin/menu/delete";/*** 发送信息*/public static String MESSAGE_SEND=RELAY_IP+"/cgi-bin/message/send";/*** 上传图片到企业微信*/public static String MEDIA_UPLOAD=RELAY_IP+"/cgi-bin/media/upload";}

企业微信消息推送接口

package com.platform.service.WxCp;import com.alibaba.fastjson.JSONObject;
import com.base.entity.sitepermissions.SitePermissionsEntity;
import com.base.entity.temp.ArticleEntity;
import com.base.entity.temp.ContentsEntity;
import com.base.entity.wxCp.WxCpEntity;
import com.base.entity.wxCp.WxCpMessage;
import com.core.service.CommonService;import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import java.util.Map;/*** 企业微信管理接口*/public interface WxCpServiceI extends CommonService {/*** 建立连接* @param corpid 公司id* @param corpsecret 企业应用私钥* return access_tocken*/public JSONObject getAccessToken(String corpid, String corpsecret) throws IOException;/*** 请求企业微信服务器* @param url 请求地址* return JsonObject*/public JSONObject wxCpUtil(String url) throws IOException;/*** 获取列表通过参数* @param enterprise_wechat_name 企业微信名称* @param enterprise_wechat_apply 企业应用名称* return map*/public Map getWxCpParam(String enterprise_wechat_name,String enterprise_wechat_apply,Integer pageSize,Integer pageNo,String siteId);/*** 获取企业应用名称* @param access_token 调用接口凭证* @param agentid 应用id* return jsonObject*/public JSONObject getWxCpAgent(String access_token,String agentid) throws IOException;/*** 获取企业应用对象* @param enterprise_wechat_id* @param enterprise_wechat_applyId* return List*/public List<Map<String, Object>> getWeEntity(String enterprise_wechat_id,String enterprise_wechat_applyId);/*** 截取汉字字符串* @param str* @param length* @return str*/public String getSubString(String str,int length);/*** 获取标签集合* @param access_token 调用接口凭证* return jsonObject*/public JSONObject getWxCpTagList(String access_token) throws IOException;/*** 获取部门集合* @param access_token 调用接口凭证* return jsonObject*/public JSONObject getWxCpDepartmentList(String access_token) throws IOException;/*** 接收发送消息返回结果* @param access_token 调用接口凭证* @param wxcpMessage 消息实体类* return JsonObject*/public JSONObject getSendResponse(String access_token, WxCpMessage wxcpMessage) throws IOException;/*** 上传临时图片到企业微信服务器* @param access_token 调用接口凭证* @param filePath 图片路径* return JsonObject*/public JSONObject uploadTemp(String access_token,String filePath) throws IOException;/*** 发送微信消息* @param access_token 调用接口凭证* @param wxcpMessage 消息实体类* return JsonObject*/public JSONObject sendMessageResponse(String access_token, WxCpMessage wxcpMessage) throws IOException;
}

企业微信消息推送接口实现类

package com.platform.service.impl.WxCp;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.base.entity.sitepermissions.SitePermissionsEntity;
import com.base.entity.temp.ArticleEntity;
import com.base.entity.temp.ContentsEntity;
import com.base.entity.wxCp.WxCpEntity;
import com.base.entity.wxCp.WxCpMessage;
import com.common.QyapiUrl;
import com.common.hibernate.qbc.CriteriaQuery;
import com.common.hibernate.qbc.PageList;
import com.core.service.CommonService;
import com.core.service.impl.CommonServiceImpl;
import com.core.util.StringUtils;
import com.platform.service.WxCp.WxCpServiceI;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;/*** @author*/@Service("wxCpService")
@Transactional
public class WxCpServiceImpI extends CommonServiceImpl implements WxCpServiceI{private static final Logger logger = Logger.getLogger(WxCpServiceImpI.class);@Autowiredprivate CommonService commonService;/*** 建立连接* @param corpid 公司id* @param corpsecret 企业应用私钥* return JsonObject*/@Overridepublic JSONObject getAccessToken(String corpid,String corpsecret) throws IOException {String url = QyapiUrl.GETTOKEN + "?corpid=" + corpid + "&corpsecret=" + corpsecret;JSONObject jsonObject = this.wxCpUtil(url);return jsonObject;}/*** 获取标签集合* @param access_token 调用接口凭证* return jsonObject*/@Overridepublic JSONObject getWxCpTagList(String access_token) throws IOException{String url = QyapiUrl.TAG_GET + "?access_token=" + access_token;JSONObject jsonObject = this.wxCpUtil(url);return jsonObject;}/*** 获取部门集合* @param access_token 调用接口凭证* return jsonObject*/@Overridepublic JSONObject getWxCpDepartmentList(String access_token) throws IOException{String url = QyapiUrl.DEPARTMENT_GET + "?access_token=" + access_token;JSONObject jsonObject = this.wxCpUtil(url);return jsonObject;}/*** 上传临时图片到企业微信服务器* @param access_token 调用接口凭证* @param filePath 图片路径* return JsonObject*/@Overridepublic JSONObject uploadTemp(String access_token,String filePath) throws IOException{String url = QyapiUrl.MEDIA_UPLOAD + "?access_token=" + access_token +"&type=image";JSONObject jsonObject = new JSONObject();HttpPost post = new HttpPost(url);File file = new File(filePath);CloseableHttpClient httpclient = HttpClients.createDefault();HttpEntity entity = null;HttpResponse response = null;String BoundaryStr = "------------7da2e536604c8";post.addHeader("Connection", "keep-alive");post.addHeader("Accept", "*/*");post.addHeader("Content-Type", "multipart/form-data;boundary=" + BoundaryStr);post.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");MultipartEntityBuilder meb = MultipartEntityBuilder.create();meb.setBoundary(BoundaryStr).setCharset(Charset.forName("utf-8")).setMode(HttpMultipartMode.BROWSER_COMPATIBLE);meb.addBinaryBody("media", file, ContentType.APPLICATION_OCTET_STREAM, file.getName());entity = meb.build();post.setEntity(entity);response = httpclient.execute(post);entity = response.getEntity();String result = EntityUtils.toString(entity, "utf-8");EntityUtils.consume(entity);// 关闭流System.out.println(result);jsonObject = JSONObject.parseObject(result);System.out.println(jsonObject.toString());return jsonObject;}/*** httpclient请求企业微信服务器* @param url 请求地址* return JsonObject*/@Overridepublic JSONObject wxCpUtil(String url){JSONObject jsonResult = null;try{url = URLDecoder.decode(url, "UTF-8");DefaultHttpClient client = new DefaultHttpClient();HttpGet request = new HttpGet(url);HttpResponse response = client.execute(request);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {String strResult = EntityUtils.toString(response.getEntity());jsonResult = JSONObject.parseObject(strResult);}else{logger.error("请求提交失败:"+url);}}catch(Exception e){logger.error("请求提交失败:"+url,e);}/*URL u = new URL(url);HttpsURLConnection huconn = (HttpsURLConnection) u.openConnection();BufferedReader in = null;StringBuilder result = new StringBuilder();huconn.connect();in = new BufferedReader(new InputStreamReader(huconn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {result.append(line);}if (in != null) {in.close();}JSONObject myJsonObject = new JSONObject();myJsonObject = JSONObject.parseObject(result.toString());return myJsonObject;*/return jsonResult;}/*** 获取参数* @param enterprise_wechat_name 企业微信名称* @param enterprise_wechat_apply 企业应用名称* return map*/@Overridepublic Map getWxCpParam(String enterprise_wechat_name, String enterprise_wechat_apply, Integer pageSize, Integer pageNo,String siteId){CriteriaQuery cq = new CriteriaQuery(WxCpEntity.class, pageSize, pageNo, "", "");if(StringUtils.isNotBlank(enterprise_wechat_name)){cq.like("enterprise_wechat_name", "%"+enterprise_wechat_name+"%");//微信名称查询}if(StringUtils.isNotBlank(enterprise_wechat_apply)){cq.like("enterprise_wechat_apply", "%"+enterprise_wechat_apply+"%");//微信应用名称查询}/*if(StringUtils.isNotBlank(wxcp_status)){cq.eq("wxcp_status",Integer.valueOf(wxcp_status));}*/if(StringUtils.isNotBlank(siteId)){//创建关联站点表引用cq.createAlias("siteEntity","se");cq.eq("se.id",siteId);}cq.add();PageList pageList = this.getPageList(cq, true);int pageCount = (int) Math.ceil((double) pageList.getCount() / (double) pageSize);if (pageCount <= 0) {pageCount = 1;}List<WxCpEntity> wxCpList = pageList.getResultList();Map map = new HashedMap();map.put("wxCpList",wxCpList);map.put("pageCount",pageCount);return map;}/*** 获取企业应用信息* @param access_token 调用接口凭证* @param agentid 应用id* return jsonObject*/@Overridepublic JSONObject getWxCpAgent(String access_token,String agentid) throws IOException{String url = QyapiUrl.AGENT_GET + "?access_token="+access_token+"&agentid="+agentid;JSONObject jsonObject = this.wxCpUtil(url);return jsonObject;}/*** 接收发送消息返回结果* @param access_token 调用接口凭证* @param message 消息实体类*/@Overridepublic JSONObject getSendResponse(String access_token, WxCpMessage message) throws IOException{String url = QyapiUrl.MESSAGE_SEND + "?access_token="+access_token;CloseableHttpClient httpclient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setHeader("Content-Type", "application/json");httpPost.setEntity(new StringEntity(message.toJson(), "UTF-8"));CloseableHttpResponse response = httpclient.execute(httpPost);String resp;JSONObject jsonObject = new JSONObject();try {HttpEntity entity = response.getEntity();resp = EntityUtils.toString(entity, "UTF-8");EntityUtils.consume(entity);} finally {response.close();}jsonObject = JSONObject.parseObject(resp);return jsonObject;}/*** 获取企业应用对象* @param enterprise_wechat_id* @param enterprise_wechat_applyId* return List*/@Overridepublic List<Map<String, Object>> getWeEntity(String enterprise_wechat_id,String enterprise_wechat_applyId){StringBuffer sb = new StringBuffer();sb.append("select * from cms_enterprise_wechat cew where 1=1");if(StringUtils.isNotBlank(enterprise_wechat_id)){sb.append(" and cew.enterprise_wechat_id = '"+enterprise_wechat_id+"'");}if(StringUtils.isNotBlank(enterprise_wechat_applyId)){sb.append(" and cew.enterprise_wechat_applyId = '"+enterprise_wechat_applyId+"'");}List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>();mapList = this.findForJdbc(sb.toString());return mapList;}/*** 截取汉字字符串* @param str* @param length* @return str*/@Overridepublic String getSubString(String str, int length) {int count = 0;int offset = 0;char[] c = str.toCharArray();int size = c.length;if(size >= length){for (int i = 0; i < c.length; i++) {if (c[i] > 256) {offset = 2;count += 2;} else {offset = 1;count++;}if (count == length) {return str.substring(0, i + 1);}if ((count == length + 1 && offset == 2)) {return str.substring(0, i);}}}else{return str;}return "";}/***通过站点id获取企业微信* @return list*/@Overridepublic List<Map<String,Object>> getListBySite(String siteId){StringBuffer sb = new StringBuffer();sb.append("SELECT cew.id,cew.enterprise_wechat_name,cew.enterprise_wechat_apply,cew.wxcp_push_weekcount,cew.wxcp_push_lasttime FROM cms_enterprise_wechat cew,cms_site cs WHERE cew.enterprise_wechat_site=cs.id");if(StringUtils.isNotBlank(siteId)){sb.append(" and cs.id = '"+ siteId +"'");}List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>();mapList = this.findForJdbc(sb.toString());return mapList;}/*** 发送微信消息* @param access_token 调用接口凭证* @param message 消息实体类*/@Overridepublic JSONObject sendMessageResponse(String access_token, WxCpMessage message) throws IOException{String url = QyapiUrl.MESSAGE_SEND + "?access_token="+access_token;CloseableHttpClient httpclient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setHeader("Content-Type", "application/json");httpPost.setEntity(new StringEntity(message.toJson(), "UTF-8"));CloseableHttpResponse response = httpclient.execute(httpPost);String resp;JSONObject jsonObject = new JSONObject();try {HttpEntity entity = response.getEntity();resp = EntityUtils.toString(entity, "UTF-8");EntityUtils.consume(entity);} finally {response.close();}jsonObject = JSONObject.parseObject(resp);return jsonObject;}}

企业微信消息推送接口大全相关推荐

  1. Node-Red 实践:企业微信消息推送

    一个偶然的机会,认识了node-red.这种拖拽控件编写代码的方式给了我很深刻的印象.能够通过简单的拖拽实现mqtt,http,websocket,tcp的服务,作为基于网络的业务流程demon非常方 ...

  2. Spring Boot 实现企业微信消息推送

    1 Maven依赖 <!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba</groupId><ar ...

  3. 企业微信消息推送卡片按钮互动的使用

    企业微信回调推送消息互动模板 前置条件 # 企业微信后台中设置了url 按以上设置 # 回调url: http://www.baidu.com# token: xxxxx# EncodingAESKe ...

  4. 【corpwechat-bot】一个好用的企业微信消息推送python接口库

    文章目录 前言 Requirements Result Features Usage 前言 本文同步发表在blog.gentlecp.com corpwechat-bot是一个python封装的企业机 ...

  5. (二)企业微信消息推送

    1.所需信息 CorpID:企业ID AgentID:应用ID Secret:应用密钥 2.功能实现 参考内容:企业微信-发送应用消息 public static class QYWXHelper{/ ...

  6. C# 企业微信消息推送对接,实现天气预报推送

    准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最下面企业id 获取应用secret 和  应用ID 发送微 ...

  7. 微信接收不到企业微信消息推送

    使用微信提供的接口,给公司微信企业号的相关人员推送消息时. 一般是微信端的企业号和企业微信都能接收到推送的消息,但有一次企业微信版本更新后发现微信端的推送消息没有接收到. 原因找了很久,最终发现在企业 ...

  8. 【Java开发】Java实现企业微信消息推送,通过应用发送

    企业微信机器人发送消息 一.可能需要的依赖 二.必须的信息 三.效果展示 四.具体代码 一.可能需要的依赖 之前导依赖的时候没有特别标记,现在分不清哪个是哪个了,应该就在这些里面 <depend ...

  9. 企业微信 消息推送使用(新建应用、发送消息)

    1 新建应用 第一步,登录企业微信管理端. https://work.weixin.qq.com/nl/sem/registe?s=c&from=1014309098&bd_vid=7 ...

最新文章

  1. centos6一键安装vsftpd脚本
  2. plt.rcParams
  3. 最详细的手机资料名词术语解释
  4. abb880/580驱动程序,zmu程序图纸571/592/792需要
  5. 推荐一款十分好用的本地查词软件——MDict
  6. 2014中国十大管理实践-世界经理人网站
  7. android半透明引导页
  8. 松柏先生:从《功守道》看电商品牌最后的机会!
  9. select添加提示语
  10. Unknown label type: ‘continuous
  11. 专访 | 刘嘉松:开源,互惠且共赢
  12. golang GC垃圾回收机制
  13. Hudi同步Hive表报“HoodieException : Got runtime exception when hive syncing”错误的解决方法
  14. codeforces1367D 思维模拟
  15. 疑难杂症:系统状态正常,LInux双机Pacemaker为什么还要切换?
  16. 《Serverless 与容器决战在即?有了弹性伸缩就不一样了》
  17. MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)...
  18. oracle基础|数据库模型|实体-关系图(E-R图)|什么是一对一、一对多、多对多
  19. 将毫秒数转换成小时数、分钟数和秒数。
  20. 2021芯片秋招总结

热门文章

  1. 最新iBATIS的代码发生器Ibator插件安装及使用
  2. 用中国高铁来谈谈AXI Outstanding能力
  3. 2020邮储实习经验说
  4. iOS 生成通用 OpenSSL 库
  5. 文献管理之 Citavi Latex
  6. [Python] Pandas批量处理身份证信息,判别男性和女性
  7. 解决排查 mongodb cpu使用率过高
  8. testlink mysql linux_Linux下搭建Testlink1.9.17
  9. webapi 接口返回生成中国式 复杂表格,字节数据
  10. swagger2maven依赖_swagger2技术