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);
}