diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java index 57caef22..64f7d38c 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java @@ -35,6 +35,7 @@ import com.foxinmy.weixin4j.qy.model.BatchResult; import com.foxinmy.weixin4j.qy.model.Callback; import com.foxinmy.weixin4j.qy.model.ChatInfo; import com.foxinmy.weixin4j.qy.model.ChatMute; +import com.foxinmy.weixin4j.qy.model.Contacts; import com.foxinmy.weixin4j.qy.model.IdParameter; import com.foxinmy.weixin4j.qy.model.Party; import com.foxinmy.weixin4j.qy.model.Tag; @@ -908,10 +909,11 @@ public class WeixinProxy { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E8.8E.B7.E5.8F.96.E6.A0.87.E7.AD.BE.E6.88.90.E5.91.98"> * 获取标签成员说明 * @see com.foxinmy.weixin4j.qy.api.TagApi - * @return 成员列表 + * @return 成员列表Contacts#getUsers和部门列表Contacts#getPartyIds * @throws WeixinException */ - public List getTagUsers(int tagId) throws WeixinException { + public Contacts getTagUsers(int tagId) throws WeixinException { return tagApi.getTagUsers(tagId); } @@ -929,10 +931,11 @@ public class WeixinProxy { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.A2.9E.E5.8A.A0.E6.A0.87.E7.AD.BE.E6.88.90.E5.91.98"> * 新增标签成员说明 * @see com.foxinmy.weixin4j.qy.api.TagApi + * @see com.foxinmy.weixin4j.qy.model.IdParameter * @return 处理结果 * @throws WeixinException */ - public JsonResult addTagUsers(int tagId, List userIds, + public IdParameter addTagUsers(int tagId, List userIds, List partyIds) throws WeixinException { return tagApi.addTagUsers(tagId, userIds, partyIds); } @@ -951,10 +954,11 @@ public class WeixinProxy { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.A0.E9.99.A4.E6.A0.87.E7.AD.BE.E6.88.90.E5.91.98"> * 删除标签成员说明 * @see com.foxinmy.weixin4j.qy.api.TagApi + * @see com.foxinmy.weixin4j.qy.model.IdParameter * @return 处理结果 * @throws WeixinException */ - public JsonResult deleteTagUsers(int tagId, List userIds, + public IdParameter deleteTagUsers(int tagId, List userIds, List partyIds) throws WeixinException { return tagApi.deleteTagUsers(tagId, userIds, partyIds); } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/TagApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/TagApi.java index 659ab569..76b324c1 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/TagApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/TagApi.java @@ -1,5 +1,6 @@ package com.foxinmy.weixin4j.qy.api; +import java.util.Arrays; import java.util.List; import com.alibaba.fastjson.JSON; @@ -8,6 +9,8 @@ import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.qy.model.Contacts; +import com.foxinmy.weixin4j.qy.model.IdParameter; import com.foxinmy.weixin4j.qy.model.Tag; import com.foxinmy.weixin4j.qy.model.User; import com.foxinmy.weixin4j.token.TokenHolder; @@ -34,9 +37,8 @@ public class TagApi extends QyApi { * 创建标签(创建的标签属于管理组;默认为加锁状态。加锁状态下只有本管理组才可以增删成员,解锁状态下其它管理组也可以增删成员) * * @param tag - * 标签对象;
- * 标签名称,长度为1~64个字节,标签名不可与其他标签重名;
- * 标签id,整型, 指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增。 + * 标签对象;
标签名称,长度为1~64个字节,标签名不可与其他标签重名;
标签id,整型, + * 指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增。 * @see * 创建标签说明 @@ -50,7 +52,8 @@ public class TagApi extends QyApi { if (obj.getIntValue("tagid") <= 0) { obj.remove("tagid"); } - WeixinResponse response = weixinExecutor.post(String.format(tag_create_uri, token.getAccessToken()), + WeixinResponse response = weixinExecutor.post( + String.format(tag_create_uri, token.getAccessToken()), obj.toJSONString()); return response.getAsJson().getIntValue("tagid"); } @@ -70,7 +73,8 @@ public class TagApi extends QyApi { public JsonResult updateTag(Tag tag) throws WeixinException { String tag_update_uri = getRequestUri("tag_update_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinExecutor.post(String.format(tag_update_uri, token.getAccessToken()), + WeixinResponse response = weixinExecutor.post( + String.format(tag_update_uri, token.getAccessToken()), JSON.toJSONString(tag)); return response.getAsJsonResult(); } @@ -89,7 +93,8 @@ public class TagApi extends QyApi { public JsonResult deleteTag(int tagId) throws WeixinException { String tag_delete_uri = getRequestUri("tag_delete_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinExecutor.get(String.format(tag_delete_uri, token.getAccessToken(), tagId)); + WeixinResponse response = weixinExecutor.get(String.format( + tag_delete_uri, token.getAccessToken(), tagId)); return response.getAsJsonResult(); } @@ -106,8 +111,10 @@ public class TagApi extends QyApi { public List listTag() throws WeixinException { String tag_list_uri = getRequestUri("tag_list_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinExecutor.get(String.format(tag_list_uri, token.getAccessToken())); - return JSON.parseArray(response.getAsJson().getString("taglist"), Tag.class); + WeixinResponse response = weixinExecutor.get(String.format( + tag_list_uri, token.getAccessToken())); + return JSON.parseArray(response.getAsJson().getString("taglist"), + Tag.class); } /** @@ -115,18 +122,27 @@ public class TagApi extends QyApi { * * @param tagId * 标签ID + * @see com.foxinmy.weixin4j.qy.model.Contacts * @see com.foxinmy.weixin4j.qy.model.User * @see * 获取标签成员说明 - * @return 成员列表 + * @return 成员列表Contacts#getUsers和部门列表Contacts#getPartyIds * @throws WeixinException */ - public List getTagUsers(int tagId) throws WeixinException { + public Contacts getTagUsers(int tagId) throws WeixinException { String tag_get_user_uri = getRequestUri("tag_get_user_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinExecutor.get(String.format(tag_get_user_uri, token.getAccessToken(), tagId)); - return JSON.parseArray(response.getAsJson().getString("userlist"), User.class); + WeixinResponse response = weixinExecutor.get(String.format( + tag_get_user_uri, token.getAccessToken(), tagId)); + JSONObject obj = response.getAsJson(); + Contacts contacts = new Contacts(); + contacts.setUsers(JSON.parseArray(obj.getString("userlist"), User.class)); + contacts.setPartyIds(JSON.parseArray(obj.getString("partylist"), + Integer.class)); + contacts.putTagIds(tagId); + return contacts; } /** @@ -142,10 +158,12 @@ public class TagApi extends QyApi { * @see * 新增标签成员说明 + * @see com.foxinmy.weixin4j.qy.model.IdParameter * @return 处理结果 * @throws WeixinException */ - public JsonResult addTagUsers(int tagId, List userIds, List partyIds) throws WeixinException { + public IdParameter addTagUsers(int tagId, List userIds, + List partyIds) throws WeixinException { String tag_add_user_uri = getRequestUri("tag_add_user_uri"); return excuteUsers(tag_add_user_uri, tagId, userIds, partyIds); } @@ -163,25 +181,36 @@ public class TagApi extends QyApi { * @see * 删除标签成员说明 + * @see com.foxinmy.weixin4j.qy.model.IdParameter * @return 处理结果 * @throws WeixinException */ - public JsonResult deleteTagUsers(int tagId, List userIds, List partyIds) throws WeixinException { + public IdParameter deleteTagUsers(int tagId, List userIds, + List partyIds) throws WeixinException { String tag_delete_user_uri = getRequestUri("tag_delete_user_uri"); return excuteUsers(tag_delete_user_uri, tagId, userIds, partyIds); } - private JsonResult excuteUsers(String uri, int tagId, List userIds, List partyIds) + private IdParameter excuteUsers(String uri, int tagId, + List userIds, List partyIds) throws WeixinException { JSONObject obj = new JSONObject(); obj.put("tagid", tagId); obj.put("userlist", userIds); obj.put("partylist", partyIds); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinExecutor.post(String.format(uri, token.getAccessToken()), obj.toJSONString()); + WeixinResponse response = weixinExecutor.post( + String.format(uri, token.getAccessToken()), obj.toJSONString()); obj = response.getAsJson(); - int code = obj.getIntValue("errcode"); - obj.remove("errcode"); - return new JsonResult(code, obj.remove("errmsg").toString(), obj.toJSONString()); + IdParameter idParameter = new IdParameter(); + if (obj.containsKey("invalidlist")) { + idParameter.setUserIds(Arrays.asList(obj.getString("invalidlist") + .split(String.valueOf(IdParameter.SEPARATOR)))); + } + if (obj.containsKey("partylist")) { + idParameter.setPartyIds(JSON.parseArray(obj.getString("partylist"), + Integer.class)); + } + return idParameter; } } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/Contacts.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/Contacts.java new file mode 100644 index 00000000..4a7c87e5 --- /dev/null +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/Contacts.java @@ -0,0 +1,72 @@ +package com.foxinmy.weixin4j.qy.model; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.fastjson.annotation.JSONField; + +/** + * 通讯录 + * + * @className Contacts + * @author jy + * @date 2016年1月25日 + * @since JDK 1.6 + * @see + */ +public class Contacts extends IdParameter { + + private static final long serialVersionUID = -1334319915595303647L; + + @JSONField(name = "userlist") + private List users; + @JSONField(name = "partylist") + private List partys; + @JSONField(name = "taglist") + private List tags; + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + List userIds = new ArrayList(); + for (User user : users) { + userIds.add(user.getUserId()); + } + super.setUserIds(userIds); + } + + public List getPartys() { + return partys; + } + + public void setPartys(List partys) { + this.partys = partys; + List partyIds = new ArrayList(); + for (Party party : partys) { + partyIds.add(party.getId()); + } + super.setPartyIds(partyIds); + } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + List tagIds = new ArrayList(); + for (Tag tag : tags) { + tagIds.add(tag.getId()); + } + super.setTagIds(tagIds); + } + + @Override + public String toString() { + return "Contacts [users=" + users + ", partys=" + partys + ", tags=" + + tags + ", " + super.toString() + "]"; + } +} diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/IdParameter.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/IdParameter.java index 9a8ed9fe..478f7bbe 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/IdParameter.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/IdParameter.java @@ -23,7 +23,7 @@ public class IdParameter implements Serializable { private static final long serialVersionUID = -2689758682205591133L; - private static final char SEPARATOR = '|'; + public static final char SEPARATOR = '|'; @JSONField(name = "user") private List userIds; diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TagTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TagTest.java index cb8918d9..253a7389 100644 --- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TagTest.java +++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TagTest.java @@ -10,8 +10,9 @@ import org.junit.Test; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.qy.api.TagApi; +import com.foxinmy.weixin4j.qy.model.Contacts; +import com.foxinmy.weixin4j.qy.model.IdParameter; import com.foxinmy.weixin4j.qy.model.Tag; -import com.foxinmy.weixin4j.qy.model.User; /** * 标签API测试 @@ -44,21 +45,22 @@ public class TagTest extends TokenTest { @Test public void getUsers() throws WeixinException { - List listUser = tagApi.getTagUsers(1); - Assert.assertFalse(listUser.isEmpty()); - System.out.println(listUser); + Contacts contacts = tagApi.getTagUsers(1); + System.out.println(contacts); } @Test public void addUsers() throws WeixinException { - JsonResult result = tagApi.addTagUsers(1, Arrays.asList("jinyu"), null); - Assert.assertEquals("ok", result.getDesc()); + IdParameter result = tagApi + .addTagUsers(1, Arrays.asList("jinyu"), null); + Assert.assertEquals("ok", result.getUserIds().isEmpty()); } @Test public void deleteUsers() throws WeixinException { - JsonResult result = tagApi.deleteTagUsers(1, Arrays.asList("jinyu"), null); - Assert.assertEquals("ok", result.getDesc()); + IdParameter result = tagApi.deleteTagUsers(1, Arrays.asList("jinyu"), + null); + Assert.assertEquals("ok", result.getUserIds().isEmpty()); System.out.println(result); }