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 128f2cb7..6592865d 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 @@ -66,4 +66,14 @@ public interface WxMpUserTagService { */ WxTagListUser tagListUser(Integer tagId, String nextOpenid) throws WxErrorException; + /** + *
+   * 批量为用户打标签
+   * 详情请见:用户标签管理
+   * 接口url格式: https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=ACCESS_TOKEN
+   * 
+ * + */ + boolean batchTagging(Integer tagId, String[] openids) 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 bb6daf63..d10c92dd 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,5 +1,6 @@ package me.chanjar.weixin.mp.api.impl; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.exception.WxErrorException; @@ -106,4 +107,27 @@ public class WxMpUserTagServiceImpl implements WxMpUserTagService { responseContent); return WxTagListUser.fromJson(responseContent); } + + @Override + public boolean batchTagging(Integer tagId, String[] openids) throws WxErrorException { + String url = "https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging"; + + JsonObject json = new JsonObject(); + json.addProperty("tagid", tagId); + JsonArray openidArrayJson = new JsonArray(); + for (String openid : openids) { + openidArrayJson.add(openid); + } + json.add("openid_list", openidArrayJson); + + String responseContent = this.wxMpService.post(url, json.toString()); + this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, json.toString(), + responseContent); + WxError wxError = WxError.fromJson(responseContent); + if (wxError.getErrorCode() == 0) { + return true; + } + + throw new WxErrorException(wxError); + } } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java index 60ab3780..7593ab13 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java @@ -60,4 +60,12 @@ public class WxMpUserTagServiceImplTest { System.out.println(res); Assert.assertNotNull(res); } + + @Test + public void testBatchTagging() throws Exception { + String[] openids = new String[]{((ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage()).getOpenid()}; + boolean res = this.wxService.getUserTagService().batchTagging(this.tagId, openids); + System.out.println(res); + Assert.assertTrue(res); + } }