mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-08-23 22:11:40 +08:00
add user black list api and impl
This commit is contained in:
parent
b17041ea96
commit
b941a57ccd
@ -364,4 +364,11 @@ public interface WxMpService {
|
||||
* @return WxMpDataCubeService
|
||||
*/
|
||||
WxMpDataCubeService getDataCubeService();
|
||||
|
||||
/**
|
||||
* 返回用户黑名单管理相关接口的方法实现类,以方便调用其各种借口
|
||||
*
|
||||
* @return WxMpUserBlackListService
|
||||
*/
|
||||
WxMpUserBlackListService getBlackListService();
|
||||
}
|
||||
|
@ -0,0 +1,35 @@
|
||||
package me.chanjar.weixin.mp.api;
|
||||
|
||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpUserBlackListGetResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
public interface WxMpUserBlackListService {
|
||||
/**
|
||||
* <pre>
|
||||
* 获取公众号的黑名单列表
|
||||
* 详情请见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=&lang=zh_CN
|
||||
* </pre>
|
||||
*/
|
||||
WxMpUserBlackListGetResult blackList(String nextOpenid) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 拉黑用户
|
||||
* 详情请见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=&lang=zh_CN
|
||||
* </pre>
|
||||
*/
|
||||
void pushToBlackList(List<String> openIdList) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 取消拉黑用户
|
||||
* 详情请见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=&lang=zh_CN
|
||||
* </pre>
|
||||
*/
|
||||
void pullFromBlackList(List<String> openIdList) throws WxErrorException;
|
||||
}
|
@ -1,23 +1,9 @@
|
||||
package me.chanjar.weixin.mp.api.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.http.HttpHost;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
|
||||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||
import org.apache.http.impl.client.BasicResponseHandler;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import me.chanjar.weixin.common.bean.WxAccessToken;
|
||||
import me.chanjar.weixin.common.bean.WxJsapiSignature;
|
||||
import me.chanjar.weixin.common.bean.result.WxError;
|
||||
@ -42,6 +28,7 @@ import me.chanjar.weixin.mp.api.WxMpMenuService;
|
||||
import me.chanjar.weixin.mp.api.WxMpPayService;
|
||||
import me.chanjar.weixin.mp.api.WxMpQrcodeService;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserBlackListService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserTagService;
|
||||
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
||||
@ -57,6 +44,18 @@ import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpUser;
|
||||
import org.apache.http.HttpHost;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
|
||||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||
import org.apache.http.impl.client.BasicResponseHandler;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class WxMpServiceImpl implements WxMpService {
|
||||
|
||||
@ -96,6 +95,8 @@ public class WxMpServiceImpl implements WxMpService {
|
||||
|
||||
private WxMpDataCubeService dataCubeService = new WxMpDataCubeServiceImpl(this);
|
||||
|
||||
private WxMpUserBlackListService blackListService = new WxMpUserBlackListServiceImpl(this);
|
||||
|
||||
private CloseableHttpClient httpClient;
|
||||
|
||||
private HttpHost httpProxy;
|
||||
@ -580,4 +581,9 @@ public class WxMpServiceImpl implements WxMpService {
|
||||
return this.dataCubeService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxMpUserBlackListService getBlackListService() {
|
||||
return this.blackListService;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,50 @@
|
||||
package me.chanjar.weixin.mp.api.impl;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserBlackListService;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpUserBlackListGetResult;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
public class WxMpUserBlackListServiceImpl implements WxMpUserBlackListService {
|
||||
private static final String API_BLACK_LIST_PREFIX = "https://api.weixin.qq.com/cgi-bin/tags/members";
|
||||
private WxMpService wxMpService;
|
||||
|
||||
public WxMpUserBlackListServiceImpl(WxMpService wxMpService) {
|
||||
this.wxMpService = wxMpService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxMpUserBlackListGetResult blackList(String nextOpenid) throws WxErrorException {
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
jsonObject.addProperty("begin_openid", nextOpenid);
|
||||
String url = API_BLACK_LIST_PREFIX + "/getblacklist";
|
||||
String responseContent = this.wxMpService.execute(new SimplePostRequestExecutor(), url, jsonObject.toString());
|
||||
return WxMpUserBlackListGetResult.fromJson(responseContent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushToBlackList(List<String> openIdList) throws WxErrorException {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("openid_list", openIdList);
|
||||
String url = API_BLACK_LIST_PREFIX + "/batchblacklist";
|
||||
this.wxMpService.execute(new SimplePostRequestExecutor(), url, new Gson().toJson(map));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pullFromBlackList(List<String> openIdList) throws WxErrorException {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("openid_list", openIdList);
|
||||
String url = API_BLACK_LIST_PREFIX + "/batchunblacklist";
|
||||
this.wxMpService.execute(new SimplePostRequestExecutor(), url, new Gson().toJson(map));
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package me.chanjar.weixin.mp.bean.result;
|
||||
|
||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
public class WxMpUserBlackListGetResult {
|
||||
protected int total = -1;
|
||||
protected int count = -1;
|
||||
protected List<String> openIds = new ArrayList<>();
|
||||
protected String nextOpenId;
|
||||
|
||||
public static WxMpUserBlackListGetResult fromJson(String json) {
|
||||
return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpUserBlackListGetResult.class);
|
||||
}
|
||||
|
||||
public int getTotal() {
|
||||
return this.total;
|
||||
}
|
||||
|
||||
public void setTotal(int total) {
|
||||
this.total = total;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return this.count;
|
||||
}
|
||||
|
||||
public void setCount(int count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
public List<String> getOpenIds() {
|
||||
return this.openIds;
|
||||
}
|
||||
|
||||
public void setOpenIds(List<String> openIds) {
|
||||
this.openIds = openIds;
|
||||
}
|
||||
|
||||
public String getNextOpenId() {
|
||||
return this.nextOpenId;
|
||||
}
|
||||
|
||||
public void setNextOpenId(String nextOpenId) {
|
||||
this.nextOpenId = nextOpenId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
|
||||
}
|
||||
}
|
@ -45,6 +45,7 @@ public class WxMpGsonBuilder {
|
||||
INSTANCE.registerTypeAdapter(WxMpMassPreviewMessage.class, new WxMpMassPreviewMessageGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMediaImgUploadResult.class, new WxMediaImgUploadResultGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMpIndustry.class, new WxMpIndustryGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMpUserBlackListGetResult.class, new WxUserBlackListGetResultGsonAdapter());
|
||||
}
|
||||
|
||||
public static Gson create() {
|
||||
|
@ -0,0 +1,28 @@
|
||||
package me.chanjar.weixin.mp.util.json;
|
||||
|
||||
import com.google.gson.*;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpUserBlackListGetResult;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
public class WxUserBlackListGetResultGsonAdapter implements JsonDeserializer<WxMpUserBlackListGetResult> {
|
||||
@Override
|
||||
public WxMpUserBlackListGetResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
JsonObject o = json.getAsJsonObject();
|
||||
WxMpUserBlackListGetResult wxMpUserBlackListGetResult = new WxMpUserBlackListGetResult();
|
||||
wxMpUserBlackListGetResult.setTotal(GsonHelper.getInteger(o, "total"));
|
||||
wxMpUserBlackListGetResult.setCount(GsonHelper.getInteger(o, "count"));
|
||||
wxMpUserBlackListGetResult.setNextOpenId(GsonHelper.getString(o, "next_openid"));
|
||||
if (o.get("data") != null && !o.get("data").isJsonNull() && !o.get("data").getAsJsonObject().get("openid").isJsonNull()) {
|
||||
JsonArray data = o.get("data").getAsJsonObject().get("openid").getAsJsonArray();
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
wxMpUserBlackListGetResult.getOpenIds().add(GsonHelper.getAsString(data.get(i)));
|
||||
}
|
||||
}
|
||||
return wxMpUserBlackListGetResult;
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package me.chanjar.weixin.mp.api.impl;
|
||||
|
||||
import me.chanjar.weixin.mp.api.ApiTestModule;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpUserBlackListGetResult;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Guice;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
@Test(groups = "userAPI")
|
||||
@Guice(modules = ApiTestModule.class)
|
||||
public class WxMpUserBlackListServiceImplTest {
|
||||
//此处openid只是开发的时候测试用 使用者测试的时候请替换自己公众号的openid
|
||||
private final String TEST_OPENID = "o9VAswOI0KSXFUtFHgk9Kb9Rtkys";
|
||||
@Inject
|
||||
protected WxMpServiceImpl wxService;
|
||||
|
||||
@Test
|
||||
public void testBlackList() throws Exception {
|
||||
WxMpUserBlackListGetResult wxMpUserBlackListGetResult = this.wxService.getBlackListService().blackList(TEST_OPENID);
|
||||
Assert.assertNotNull(wxMpUserBlackListGetResult);
|
||||
Assert.assertFalse(wxMpUserBlackListGetResult.getCount() == -1);
|
||||
Assert.assertFalse(wxMpUserBlackListGetResult.getTotal() == -1);
|
||||
Assert.assertFalse(wxMpUserBlackListGetResult.getOpenIds().size() == -1);
|
||||
System.out.println(wxMpUserBlackListGetResult);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPushToBlackList() throws Exception {
|
||||
List<String> openIdList = new ArrayList<>();
|
||||
openIdList.add(TEST_OPENID);
|
||||
this.wxService.getBlackListService().pushToBlackList(openIdList);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPullFromBlackList() throws Exception {
|
||||
List<String> openIdList = new ArrayList<>();
|
||||
openIdList.add(TEST_OPENID);
|
||||
this.wxService.getBlackListService().pullFromBlackList(openIdList);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user