diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java index bcf657fa..128f2cb7 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java @@ -1,10 +1,11 @@ package me.chanjar.weixin.mp.api; -import java.util.List; - import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.mp.bean.tag.WxTagListUser; import me.chanjar.weixin.mp.bean.tag.WxUserTag; +import java.util.List; + /** * 用户标签管理相关接口 * Created by Binary Wang on 2016/9/2. @@ -55,4 +56,14 @@ public interface WxMpUserTagService { */ Boolean tagDelete(Integer id) throws WxErrorException; + /** + *
+ * 获取标签下粉丝列表 + * 详情请见:用户标签管理 + * 接口url格式: https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN + *+ * + */ + WxTagListUser tagListUser(Integer tagId, String nextOpenid) throws WxErrorException; + } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java index c2167556..bb6daf63 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java @@ -1,17 +1,17 @@ package me.chanjar.weixin.mp.api.impl; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.gson.JsonObject; - import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpUserTagService; +import me.chanjar.weixin.mp.bean.tag.WxTagListUser; import me.chanjar.weixin.mp.bean.tag.WxUserTag; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * @@ -92,4 +92,18 @@ public class WxMpUserTagServiceImpl implements WxMpUserTagService { throw new WxErrorException(wxError); } + + @Override + public WxTagListUser tagListUser(Integer tagId, String nextOpenid) throws WxErrorException { + String url = "https://api.weixin.qq.com/cgi-bin/user/tag/get"; + + JsonObject json = new JsonObject(); + json.addProperty("tagid", tagId); + json.addProperty("next_openid", StringUtils.trimToEmpty(nextOpenid)); + + String responseContent = this.wxMpService.post(url, json.toString()); + this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, json.toString(), + responseContent); + return WxTagListUser.fromJson(responseContent); + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java new file mode 100644 index 00000000..0ba48edc --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java @@ -0,0 +1,92 @@ +package me.chanjar.weixin.mp.bean.tag; + +import com.google.gson.annotations.SerializedName; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.List; + +/** + * 获取标签下粉丝列表的结果对象 + * @author binarywang(https://github.com/binarywang) + * Created by Binary Wang on 2016-09-19. + */ +public class WxTagListUser { + + public static WxTagListUser fromJson(String json) { + return WxMpGsonBuilder.create().fromJson(json,WxTagListUser.class); + } + + public String toJson() { + return WxMpGsonBuilder.create().toJson(this); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + } + + /** + *"count":2,这次获取的粉丝数量 + */ + @SerializedName("count") + private Integer count; + + /** + *"data" 粉丝列表 + */ + @SerializedName("data") + private WxTagListUserData data; + + /** + *"next_openid" 拉取列表最后一个用户的openid + */ + @SerializedName("next_openid") + private String nextOpenid; + + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + public WxTagListUserData getData() { + return data; + } + + public void setData(WxTagListUserData data) { + this.data = data; + } + + public String getNextOpenid() { + return nextOpenid; + } + + public void setNextOpenid(String nextOpenid) { + this.nextOpenid = nextOpenid; + } + + public static class WxTagListUserData { + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + } + + /** + * openid 列表 + */ + @SerializedName("openid") + private List