package com.demo.weixin.clients.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.demo.weixin.clients.IQyWeixinClient;
import com.demo.weixin.entity.*;
import com.demo.weixin.entity.message.BasicMessage;
import com.demo.weixin.exception.WeixinException;
import com.demo.weixin.request.handlers.CreateMenuRequestHandler;
import com.demo.weixin.request.handlers.CreateUserRequestHandler;
import com.demo.weixin.request.handlers.UpdateUserRequestHandler;
import com.demo.weixin.response.handlers.BasicWeixinResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import static com.demo.weixin.constants.WeixinUrlConstants.*;
/**
* @author blueriver
* @description 企业微信客户端
* @date 2017/7/28
* @since 1.0
*/
@Component
public class QyWeixinClient implements IQyWeixinClient {
private HttpClient httpClient;
public QyWeixinClient() {
httpClient = HttpClientBuilder.create().build();
}
public QyWeixinClient(HttpClient httpClient) {
this.httpClient = httpClient == null ? HttpClientBuilder.create().build() : httpClient;
}
@Override
public QYAccessToken getQYAccessToken(String corpId, String corpSecret) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_ACCESS_TOKEN);
uriBuilder.addParameter("corpid", corpId);
uriBuilder.addParameter("corpsecret", corpSecret);
HttpGet httpGet = new HttpGet(uriBuilder.build());
return httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(QYAccessToken.class));
}
@Override
public WeixinJsApiTicket getWeixinQyJsApiTicket(String accessToken) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_JSAPI_TICKET);
uriBuilder.addParameter("access_token", accessToken);
HttpGet httpGet = new HttpGet(uriBuilder.build());
return httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(WeixinJsApiTicket.class));
}
@Override
public BaseWeixinResponse createDept(String accessToken, String name, String parentId) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_CREATE_DEPT);
uriBuilder.addParameter("access_token", accessToken);
uriBuilder.addParameter("name", name);
uriBuilder.addParameter("parentid", parentId);
HttpPost httpPost = new HttpPost(uriBuilder.build());
return httpClient.execute(httpPost, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
@Override
public QYDept getDeptList(String accessToken, Integer deptId) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_GET_DEPT);
uriBuilder.addParameter("access_token", accessToken);
if (deptId != null) {
uriBuilder.addParameter("id", deptId.toString());
}
HttpGet httpGet = new HttpGet(uriBuilder.build());
return httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(QYDept.class));
}
@Override
public BaseWeixinResponse createMenu(String accessToken, CreateMenuRequestHandler createMenuRequestHandler) throws URISyntaxException, IOException, WeixinException {
URIBuilder uriBuilder = new URIBuilder(QY_CREATE_MENU);
uriBuilder.addParameter("access_token", accessToken);
HttpPost httpPost = new HttpPost(uriBuilder.build());
String jsonString = JSON.toJSONString(createMenuRequestHandler.getParamMap());
httpPost.setEntity(new StringEntity(jsonString, "utf-8"));
return httpClient.execute(httpPost, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
@Override
public List<QYMenu> getMenu(String accessToken, Integer agentId) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_GET_MENU);
uriBuilder.addParameter("access_token", accessToken);
uriBuilder.addParameter("agentid", agentId.toString());
HttpGet httpGet = new HttpGet(uriBuilder.build());
JSONObject jsonObject = httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(JSONObject.class));
String menuString = JSON.toJSONString(jsonObject.get("button"));
List<QYMenu> qyMenuList = JSON.parseObject(menuString, new TypeReference<List<QYMenu>>() {
});
return qyMenuList;
}
@Override
public BaseWeixinResponse delMenu(String accessToken, Integer agentId) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_DEL_MENU);
uriBuilder.addParameter("access_token", accessToken);
uriBuilder.addParameter("agentid", agentId.toString());
HttpGet httpGet = new HttpGet(uriBuilder.build());
return httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
// ################################## 消息推送 ####################################
@Override
public <T extends BasicMessage> QYMessage sendMessage(String accessToken, T sendMessageHandler) throws URISyntaxException, IOException, WeixinException {
URIBuilder uriBuilder = new URIBuilder(QY_SEND_MESSAGE);
uriBuilder.addParameter("access_token", accessToken);
String jsonString = JSON.toJSONString(sendMessageHandler.getParamMap());
HttpPost httpPost = new HttpPost(uriBuilder.build());
httpPost.setEntity(new StringEntity(jsonString, "utf-8"));
return httpClient.execute(httpPost, new BasicWeixinResponseHandler<>(QYMessage.class));
}
// ################################# 通讯录管理 #####################################
@Override
public BaseWeixinResponse createUser(String accessToken, CreateUserRequestHandler createUserRequestHandler) throws IOException, URISyntaxException, WeixinException {
URIBuilder uriBuilder = new URIBuilder(QY_CREATE_USER);
uriBuilder.addParameter("access_token", accessToken);
String jsonString = JSON.toJSONString(createUserRequestHandler.getParamMap());
HttpPost httpPost = new HttpPost(uriBuilder.build());
httpPost.setEntity(new StringEntity(jsonString, "utf-8"));
return httpClient.execute(httpPost, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
@Override
public BaseWeixinResponse updateUser(String accessToken, UpdateUserRequestHandler updateUserRequestHandler) throws IOException, URISyntaxException, WeixinException {
URIBuilder uriBuilder = new URIBuilder(QY_UPDATE_USER);
uriBuilder.addParameter("access_token", accessToken);
HttpPost httpPost = new HttpPost(uriBuilder.build());
String jsonString = JSON.toJSONString(updateUserRequestHandler.getParamMap());
httpPost.setEntity(new StringEntity(jsonString, "utf-8"));
return httpClient.execute(httpPost, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
@Override
public BaseWeixinResponse deleteUser(String accessToken, String userId) throws URISyntaxException, IOException {
URIBuilder uriBuilder = new URIBuilder(QY_DELETE_USER);
uriBuilder.addParameter("access_token", accessToken);
uriBuilder.addParameter("userid", userId);
HttpGet httpGet = new HttpGet(uriBuilder.build());
return httpClient.execute(httpGet, new BasicWeixinResponseHandler<>(BaseWeixinResponse.class));
}
@Override
public BaseWeixinResponse batchDeleteUser(String accessToken, List<String> userIdList) throws IOExcep
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
weixin-dubbo-springboot-master.zip (84个子文件)
weixin-dubbo-springboot-master
weixin-parent
weixin-service
pom.xml 3KB
src
main
resources
dubbo-provider.xml 2KB
application.properties 2KB
context-weixin.xml 4KB
logback-dev.xml 925B
qqconnectconfig.properties 2KB
java
com
demo
weixin
WeixinServiceStart.java 683B
utils
WeixinUrlBuilder.java 3KB
VerifyParamsUtils.java 862B
clients
IWeixinClient.java 2KB
impl
WeixinClient.java 6KB
QQClient.java 1KB
QyWeixinClient.java 12KB
IQQClient.java 303B
IQyWeixinClient.java 6KB
service
impl
QQServiceImpl.java 3KB
QyServiceImpl.java 11KB
WeixinServiceImpl.java 6KB
CacheServiceImpl.java 4KB
response
handlers
ImageWeixinResponseHandler.java 1KB
BasicWeixinResponseHandler.java 926B
AbstractWeixinResponseHandler.java 1KB
request
handlers
UpdateUserRequestHandler.java 5KB
CreateMenuRequestHandler.java 3KB
AbstractRequestHandler.java 937B
CreateUserRequestHandler.java 5KB
constants
WeixinUrlConstants.java 4KB
WeixinPropConstants.java 443B
weixin-api
pom.xml 2KB
src
main
java
com
demo
weixin
api
ICacheService.java 1KB
IWeixinService.java 2KB
IQyService.java 4KB
IQQService.java 903B
enums
MenuType.java 803B
ProjectType.java 801B
MessageType.java 1KB
ClientType.java 1011B
WebchatAuthScope.java 1KB
entity
QYUserDetail.java 4KB
BaseWeixinResponse.java 1015B
message
FileMessage.java 1KB
TextMessage.java 1KB
TextCardMessage.java 2KB
ImageMessage.java 1KB
BasicMessage.java 3KB
VideoMessage.java 2KB
VoiceMessage.java 1KB
MPNewsMessage.java 4KB
NewsMessage.java 3KB
WeChatApplicationInfo.java 2KB
WeixinMenu.java 2KB
WeixinUser.java 3KB
UserAccessToken.java 2KB
QYMessage.java 1KB
QQUser.java 4KB
QYDept.java 1KB
QYUserList.java 492B
QYLoginUserInfo.java 2KB
WeixinAccessToken.java 2KB
WeixinJsApiTicket.java 2KB
QYAccessToken.java 599B
QYMenu.java 2KB
exception
WeixinException.java 2KB
pom.xml 3KB
weixin-web
pom.xml 5KB
src
test
java
com
demo
weixin
WeixinControllerTest.java 141B
QQControllerTest.java 2KB
QyControllerTest.java 2KB
main
resources
logback.xml 926B
application.properties 431B
dubbo-consumer.xml 1KB
java
com
demo
weixin
controller
WeixinController.java 3KB
QyController.java 6KB
QQController.java 2KB
WeixinWebStarter.java 571B
interceptor
WeixinWebInterceptor.java 1KB
webapp
WEB-INF
web.xml 240B
index.jsp 57B
deploy.sh 45B
.gitignore 315B
build.sh 93B
LICENSE 9KB
.gitignore 45B
dubbo-2.5.4+sdk4j.zip 2.97MB
共 84 条
- 1
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功