标签接口:新增/删除成员标签接口新增partyIds参数

This commit is contained in:
jinyu 2015-09-25 17:27:02 +08:00
parent 5d09dbf7dc
commit 8f0ddd421c
5 changed files with 1926 additions and 1889 deletions

View File

@ -1,184 +1,187 @@
package com.foxinmy.weixin4j.qy.api; package com.foxinmy.weixin4j.qy.api;
import java.util.List; import java.util.List;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.JsonResult;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.qy.model.Tag; import com.foxinmy.weixin4j.qy.model.Tag;
import com.foxinmy.weixin4j.qy.model.User; import com.foxinmy.weixin4j.qy.model.User;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
/** /**
* 标签API * 标签API
* *
* @className TagApi * @className TagApi
* @author jy * @author jy
* @date 2014年11月19日 * @date 2014年11月19日
* @since JDK 1.7 * @since JDK 1.7
* @see <a * @see <a href=
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE">管理标签</a> * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE">
*/ * 管理标签</a>
public class TagApi extends QyApi { */
private final TokenHolder tokenHolder; public class TagApi extends QyApi {
private final TokenHolder tokenHolder;
public TagApi(TokenHolder tokenHolder) {
this.tokenHolder = tokenHolder; public TagApi(TokenHolder tokenHolder) {
} this.tokenHolder = tokenHolder;
}
/**
* 创建标签(创建的标签属于管理组默认为加锁状态加锁状态下只有本管理组才可以增删成员解锁状态下其它管理组也可以增删成员) /**
* * 创建标签(创建的标签属于管理组默认为加锁状态加锁状态下只有本管理组才可以增删成员解锁状态下其它管理组也可以增删成员)
* @param tag *
* 标签对象</br>标签名称长度为1~64个字节标签名不可与其他标签重名</br>标签id整型 * @param tag
* 指定此参数时新增的标签会生成对应的标签id不指定时则以目前最大的id自增 * 标签对象</br>
* @see <a * 标签名称长度为1~64个字节标签名不可与其他标签重名</br>
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">创建标签说明</a> * 标签id整型 指定此参数时新增的标签会生成对应的标签id不指定时则以目前最大的id自增
* @return 标签ID * @see <a href=
* @throws WeixinException * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">
*/ * 创建标签说明</a>
public int createTag(Tag tag) throws WeixinException { * @return 标签ID
String tag_create_uri = getRequestUri("tag_create_uri"); * @throws WeixinException
Token token = tokenHolder.getToken(); */
JSONObject obj = (JSONObject) JSON.toJSON(tag); public int createTag(Tag tag) throws WeixinException {
if (obj.getIntValue("tagid") <= 0) { String tag_create_uri = getRequestUri("tag_create_uri");
obj.remove("tagid"); Token token = tokenHolder.getToken();
} JSONObject obj = (JSONObject) JSON.toJSON(tag);
WeixinResponse response = weixinExecutor.post( if (obj.getIntValue("tagid") <= 0) {
String.format(tag_create_uri, token.getAccessToken()), obj.remove("tagid");
obj.toJSONString()); }
return response.getAsJson().getIntValue("tagid"); WeixinResponse response = weixinExecutor.post(String.format(tag_create_uri, token.getAccessToken()),
} obj.toJSONString());
return response.getAsJson().getIntValue("tagid");
/** }
* 更新标签(管理组必须是指定标签的创建者)
* /**
* @param tag * 更新标签(管理组必须是指定标签的创建者)
* 标签信息 *
* @see <a href= * @param tag
* "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E6.9B.B4.E6.96.B0.E6.A0.87.E7.AD.BE.E5.90.8D.E5.AD.97" * 标签信息
* >更新标签说明</a> * @see <a href=
* @return 处理结果 * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E6.9B.B4.E6.96.B0.E6.A0.87.E7.AD.BE.E5.90.8D.E5.AD.97"
* @see com.foxinmy.weixin4j.qy.model.Tag * >更新标签说明</a>
* @throws WeixinException * @return 处理结果
*/ * @see com.foxinmy.weixin4j.qy.model.Tag
public JsonResult updateTag(Tag tag) throws WeixinException { * @throws WeixinException
String tag_update_uri = getRequestUri("tag_update_uri"); */
Token token = tokenHolder.getToken(); public JsonResult updateTag(Tag tag) throws WeixinException {
WeixinResponse response = weixinExecutor.post( String tag_update_uri = getRequestUri("tag_update_uri");
String.format(tag_update_uri, token.getAccessToken()), Token token = tokenHolder.getToken();
JSON.toJSONString(tag)); WeixinResponse response = weixinExecutor.post(String.format(tag_update_uri, token.getAccessToken()),
return response.getAsJsonResult(); JSON.toJSONString(tag));
} return response.getAsJsonResult();
}
/**
* 删除标签(管理组必须是指定标签的创建者并且标签的成员列表为空) /**
* * 删除标签(管理组必须是指定标签的创建者并且标签的成员列表为空)
* @param tagId *
* 标签ID * @param tagId
* @return 处理结果 * 标签ID
* @see <a * @return 处理结果
* href="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">删除标签说明</a> * @see <a href=
* @throws WeixinException * "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">
*/ * 删除标签说明</a>
public JsonResult deleteTag(int tagId) throws WeixinException { * @throws WeixinException
String tag_delete_uri = getRequestUri("tag_delete_uri"); */
Token token = tokenHolder.getToken(); public JsonResult deleteTag(int tagId) throws WeixinException {
WeixinResponse response = weixinExecutor.get(String.format( String tag_delete_uri = getRequestUri("tag_delete_uri");
tag_delete_uri, token.getAccessToken(), tagId)); Token token = tokenHolder.getToken();
return response.getAsJsonResult(); WeixinResponse response = weixinExecutor.get(String.format(tag_delete_uri, token.getAccessToken(), tagId));
} return response.getAsJsonResult();
}
/**
* 获取标签列表 /**
* * 获取标签列表
* @see <a *
* href="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.E5.88.97.E8.A1.A8">获取标签列表说明</a> * @see <a href=
* @return 标签列表 * "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.E5.88.97.E8.A1.A8">
* @see com.foxinmy.weixin4j.qy.model.Tag * 获取标签列表说明</a>
* @throws WeixinException * @return 标签列表
*/ * @see com.foxinmy.weixin4j.qy.model.Tag
public List<Tag> listTag() throws WeixinException { * @throws WeixinException
String tag_list_uri = getRequestUri("tag_list_uri"); */
Token token = tokenHolder.getToken(); public List<Tag> listTag() throws WeixinException {
WeixinResponse response = weixinExecutor.get(String.format(tag_list_uri, String tag_list_uri = getRequestUri("tag_list_uri");
token.getAccessToken())); Token token = tokenHolder.getToken();
return JSON.parseArray(response.getAsJson().getString("taglist"), WeixinResponse response = weixinExecutor.get(String.format(tag_list_uri, token.getAccessToken()));
Tag.class); return JSON.parseArray(response.getAsJson().getString("taglist"), Tag.class);
} }
/** /**
* 获取标签成员(管理组须拥有获取标签成员的接口权限返回列表仅包含管理组管辖范围的成员) * 获取标签成员(管理组须拥有获取标签成员的接口权限返回列表仅包含管理组管辖范围的成员)
* *
* @param tagId * @param tagId
* 标签ID * 标签ID
* @see com.foxinmy.weixin4j.qy.model.User * @see com.foxinmy.weixin4j.qy.model.User
* @see <a * @see <a href=
* href="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">获取标签成员说明</a> * "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">
* @return 成员列表 * 获取标签成员说明</a>
* @throws WeixinException * @return 成员列表
*/ * @throws WeixinException
public List<User> getTagUsers(int tagId) throws WeixinException { */
String tag_get_user_uri = getRequestUri("tag_get_user_uri"); public List<User> getTagUsers(int tagId) throws WeixinException {
Token token = tokenHolder.getToken(); String tag_get_user_uri = getRequestUri("tag_get_user_uri");
WeixinResponse response = weixinExecutor.get(String.format( Token token = tokenHolder.getToken();
tag_get_user_uri, token.getAccessToken(), tagId)); WeixinResponse response = weixinExecutor.get(String.format(tag_get_user_uri, token.getAccessToken(), tagId));
return JSON.parseArray(response.getAsJson().getString("userlist"), return JSON.parseArray(response.getAsJson().getString("userlist"), User.class);
User.class); }
}
/**
/** * 新增标签成员(标签对管理组可见且未加锁成员属于管理组管辖范围)<br>
* 新增标签成员(标签对管理组可见且未加锁成员属于管理组管辖范围)<br> * <font color="red">若部分userid或partyid非法则在text中体现</font>
* <font color="red">若部分userid非法则在text中体现</font> *
* * @param tagId
* @param tagId * 标签ID
* 标签ID * @param userIds
* @param userIds * 企业成员ID列表注意userlistpartylist不能同时为空单次请求长度不超过1000
* 成员ID * @param partyIds
* @see <a * 企业部门ID列表注意userlistpartylist不能同时为空单次请求长度不超过100
* href="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">新增标签成员说明</a> * @see <a href=
* @return 处理结果 * "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">
* @throws WeixinException * 新增标签成员说明</a>
*/ * @return 处理结果
public JsonResult addTagUsers(int tagId, List<String> userIds) * @throws WeixinException
throws WeixinException { */
String tag_add_user_uri = getRequestUri("tag_add_user_uri"); public JsonResult addTagUsers(int tagId, List<String> userIds, List<Integer> partyIds) throws WeixinException {
return excuteUsers(tag_add_user_uri, tagId, userIds); String tag_add_user_uri = getRequestUri("tag_add_user_uri");
} return excuteUsers(tag_add_user_uri, tagId, userIds, partyIds);
}
/**
* 删除标签成员(标签对管理组未加锁成员属于管理组管辖范围)<br> /**
* <font color="red">若部分userid非法则在text中体现</font> * 删除标签成员(标签对管理组未加锁成员属于管理组管辖范围)<br>
* * <font color="red">若部分userid或partyid非法则在text中体现</font>
* @param tagId *
* 标签ID * @param tagId
* @param userIds * 标签ID
* 成员ID * @param userIds
* @see <a * 企业成员ID列表注意userlistpartylist不能同时为空
* href="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">删除标签成员说明</a> * @param partyIds
* @return 处理结果 * 企业部门ID列表注意userlistpartylist不能同时为空
* @throws WeixinException * @see <a href=
*/ * "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">
public JsonResult deleteTagUsers(int tagId, List<String> userIds) * 删除标签成员说明</a>
throws WeixinException { * @return 处理结果
String tag_delete_user_uri = getRequestUri("tag_delete_user_uri"); * @throws WeixinException
return excuteUsers(tag_delete_user_uri, tagId, userIds); */
} public JsonResult deleteTagUsers(int tagId, List<String> userIds, List<Integer> partyIds) throws WeixinException {
String tag_delete_user_uri = getRequestUri("tag_delete_user_uri");
private JsonResult excuteUsers(String uri, int tagId, List<String> userIds) return excuteUsers(tag_delete_user_uri, tagId, userIds, partyIds);
throws WeixinException { }
JSONObject obj = new JSONObject();
obj.put("tagid", tagId); private JsonResult excuteUsers(String uri, int tagId, List<String> userIds, List<Integer> partyIds)
obj.put("userlist", userIds); throws WeixinException {
Token token = tokenHolder.getToken(); JSONObject obj = new JSONObject();
WeixinResponse response = weixinExecutor.post( obj.put("tagid", tagId);
String.format(uri, token.getAccessToken()), obj.toJSONString()); obj.put("userlist", userIds);
obj = response.getAsJson(); obj.put("partylist", partyIds);
JsonResult result = JSON.toJavaObject(obj, JsonResult.class); Token token = tokenHolder.getToken();
result.setText(obj.getString("invalidlist")); WeixinResponse response = weixinExecutor.post(String.format(uri, token.getAccessToken()), obj.toJSONString());
return result; obj = response.getAsJson();
} int code = obj.getIntValue("errcode");
} obj.remove("errcode");
return new JsonResult(code, obj.remove("errmsg").toString(), obj.toJSONString());
}
}

View File

@ -1,413 +1,414 @@
package com.foxinmy.weixin4j.qy.api; package com.foxinmy.weixin4j.qy.api;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.JsonResult;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.qy.model.OUserInfo; import com.foxinmy.weixin4j.qy.model.OUserInfo;
import com.foxinmy.weixin4j.qy.model.User; import com.foxinmy.weixin4j.qy.model.User;
import com.foxinmy.weixin4j.qy.type.InviteType; import com.foxinmy.weixin4j.qy.type.InviteType;
import com.foxinmy.weixin4j.qy.type.UserStatus; import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
/** /**
* 成员API * 成员API
* *
* @className UserApi * @className UserApi
* @author jy * @author jy
* @date 2014年11月19日 * @date 2014年11月19日
* @since JDK 1.7 * @since JDK 1.7
* @see com.foxinmy.weixin4j.qy.model.User * @see com.foxinmy.weixin4j.qy.model.User
* @see <a * @see <a href=
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98">管理成员说明</a> * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98">
*/ * 管理成员说明</a>
public class UserApi extends QyApi { */
private final MediaApi mediaApi; public class UserApi extends QyApi {
private final TokenHolder tokenHolder; private final MediaApi mediaApi;
private final TokenHolder tokenHolder;
public UserApi(TokenHolder tokenHolder) {
this.tokenHolder = tokenHolder; public UserApi(TokenHolder tokenHolder) {
this.mediaApi = new MediaApi(tokenHolder); this.tokenHolder = tokenHolder;
} this.mediaApi = new MediaApi(tokenHolder);
}
/**
* 创建成员 /**
* * 创建成员
* @param user *
* 成员对象 * @param user
* @see com.foxinmy.weixin4j.qy.model.User * 成员对象
* @see <a * @see com.foxinmy.weixin4j.qy.model.User
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.9B.E5.BB.BA.E6.88.90.E5.91.98">创建成员说明</a> * @see <a href=
* @return 处理结果 * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.9B.E5.BB.BA.E6.88.90.E5.91.98">
* @throws WeixinException * 创建成员说明</a>
*/ * @return 处理结果
public JsonResult createUser(User user) throws WeixinException { * @throws WeixinException
String user_create_uri = getRequestUri("user_create_uri"); */
return excute(user_create_uri, user, null); public JsonResult createUser(User user) throws WeixinException {
} String user_create_uri = getRequestUri("user_create_uri");
return excute(user_create_uri, user, null);
/** }
* 创建成员
* /**
* @param user * 创建成员
* 成员对象 *
* @param avatar * @param user
* 头像文件 * 成员对象
* @see com.foxinmy.weixin4j.qy.model.User * @param avatar
* @see <a * 头像文件
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.9B.E5.BB.BA.E6.88.90.E5.91.98">创建成员说明</a> * @see com.foxinmy.weixin4j.qy.model.User
* @return 处理结果 * @see <a href=
* @throws WeixinException * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.9B.E5.BB.BA.E6.88.90.E5.91.98">
*/ * 创建成员说明</a>
public JsonResult createUser(User user, InputStream avatar) * @return 处理结果
throws WeixinException { * @throws WeixinException
String user_create_uri = getRequestUri("user_create_uri"); */
return excute(user_create_uri, user, avatar); public JsonResult createUser(User user, InputStream avatar) throws WeixinException {
} String user_create_uri = getRequestUri("user_create_uri");
return excute(user_create_uri, user, avatar);
/** }
* 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值)
* /**
* @param user * 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值)
* 成员对象 *
* @see com.foxinmy.weixin4j.qy.model.User * @param user
* @see <a * 成员对象
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">更新成员说明</a> * @see com.foxinmy.weixin4j.qy.model.User
* @return 处理结果 * @see <a href=
* @throws WeixinException * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">
*/ * 更新成员说明</a>
public JsonResult updateUser(User user) throws WeixinException { * @return 处理结果
String user_update_uri = getRequestUri("user_update_uri"); * @throws WeixinException
return excute(user_update_uri, user, null); */
} public JsonResult updateUser(User user) throws WeixinException {
String user_update_uri = getRequestUri("user_update_uri");
/** return excute(user_update_uri, user, null);
* 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值) }
*
* @param user /**
* 成员对象 * 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值)
* @param avatar *
* 头像文件 * @param user
* @see com.foxinmy.weixin4j.qy.model.User * 成员对象
* @see <a * @param avatar
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">更新成员说明</a> * 头像文件
* @return 处理结果 * @see com.foxinmy.weixin4j.qy.model.User
* @throws WeixinException * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">
public JsonResult updateUser(User user, InputStream avatar) * 更新成员说明</a>
throws WeixinException { * @return 处理结果
String user_update_uri = getRequestUri("user_update_uri"); * @throws WeixinException
return excute(user_update_uri, user, avatar); */
} public JsonResult updateUser(User user, InputStream avatar) throws WeixinException {
String user_update_uri = getRequestUri("user_update_uri");
private JsonResult excute(String uri, User user, InputStream avatar) return excute(user_update_uri, user, avatar);
throws WeixinException { }
JSONObject obj = (JSONObject) JSON.toJSON(user);
Object val = obj.remove("extattr"); private JsonResult excute(String uri, User user, InputStream avatar) throws WeixinException {
if (val != null) { JSONObject obj = (JSONObject) JSON.toJSON(user);
JSONObject attrs = new JSONObject(); Object val = obj.remove("extattr");
attrs.put("attrs", val); if (val != null) {
obj.put("extattr", attrs); JSONObject attrs = new JSONObject();
} attrs.put("attrs", val);
val = obj.remove("status"); obj.put("extattr", attrs);
if (val != null) { }
obj.put("enable", val); val = obj.remove("status");
} if (val != null) {
if (avatar != null) { obj.put("enable", val);
obj.put("avatar_mediaid", mediaApi.uploadMedia(0, avatar, null)); }
} else { if (avatar != null) {
obj.put("avatar_mediaid", obj.remove("avatar")); obj.put("avatar_mediaid", mediaApi.uploadMedia(0, avatar, null));
} } else {
Token token = tokenHolder.getToken(); obj.put("avatar_mediaid", obj.remove("avatar"));
WeixinResponse response = weixinExecutor.post( }
String.format(uri, token.getAccessToken()), obj.toJSONString()); Token token = tokenHolder.getToken();
return response.getAsJsonResult(); WeixinResponse response = weixinExecutor.post(String.format(uri, token.getAccessToken()), obj.toJSONString());
} return response.getAsJsonResult();
}
/**
* 获取成员 /**
* * 获取成员
* @param userid *
* 成员唯一ID * @param userid
* @see com.foxinmy.weixin4j.qy.model.User * 成员唯一ID
* @see <a * @see com.foxinmy.weixin4j.qy.model.User
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98">获取成员说明</a> * @see <a href=
* @return 成员对象 * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98">
* @throws WeixinException * 获取成员说明</a>
*/ * @return 成员对象
public User getUser(String userid) throws WeixinException { * @throws WeixinException
String user_get_uri = getRequestUri("user_get_uri"); */
Token token = tokenHolder.getToken(); public User getUser(String userid) throws WeixinException {
WeixinResponse response = weixinExecutor.get(String.format( String user_get_uri = getRequestUri("user_get_uri");
user_get_uri, token.getAccessToken(), userid)); Token token = tokenHolder.getToken();
JSONObject obj = response.getAsJson(); WeixinResponse response = weixinExecutor.get(String.format(user_get_uri, token.getAccessToken(), userid));
Object attrs = obj.getJSONObject("extattr").remove("attrs"); JSONObject obj = response.getAsJson();
if (attrs != null) { Object attrs = obj.getJSONObject("extattr").remove("attrs");
obj.put("extattr", attrs); if (attrs != null) {
} obj.put("extattr", attrs);
return JSON.toJavaObject(obj, User.class); }
} return JSON.toJavaObject(obj, User.class);
}
/**
* code获取userid(管理员须拥有agent的使用权限agentid必须和跳转链接时所在的企业应用ID相同) /**
* * code获取userid(管理员须拥有agent的使用权限agentid必须和跳转链接时所在的企业应用ID相同)
* @param code *
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期 * @param code
* @see com.foxinmy.weixin4j.qy.model.User * 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* @return 成员对象 * @see com.foxinmy.weixin4j.qy.model.User
* @see {@link #getUser(String)} * @return 成员对象
* @see {@link #getUserIdByCode(String,int)} * @see {@link #getUser(String)}
* @see <a * @see {@link #getUserIdByCode(String,int)}
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">企业获取code</a> * @see <a href=
* @see <a * "http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a> * 企业获取code</a>
* @throws WeixinException * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">
public User getUserByCode(String code) throws WeixinException { * 根据code获取成员信息</a>
return getUser(getUserIdByCode(code).getString("UserId")); * @throws WeixinException
} */
public User getUserByCode(String code) throws WeixinException {
/** return getUser(getUserIdByCode(code).getString("UserId"));
* 获取企业号管理员登录信息 }
*
* @param providerToken /**
* 提供商的token * 获取企业号管理员登录信息
* @param authCode *
* oauth2.0授权企业号管理员登录产生的code * @param providerToken
* @return 登陆信息 * 提供商的token
* @see <a * @param authCode
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E7%AE%A1%E7%90%86%E5%91%98%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF">授权获取企业号管理员登录信息</a> * oauth2.0授权企业号管理员登录产生的code
* @see com.foxinmy.weixin4j.qy.model.OUserInfo * @return 登陆信息
* @throws WeixinException * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E7%AE%A1%E7%90%86%E5%91%98%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF">
public OUserInfo getOUserInfoByCode(String providerToken, String authCode) * 授权获取企业号管理员登录信息</a>
throws WeixinException { * @see com.foxinmy.weixin4j.qy.model.OUserInfo
String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri"); * @throws WeixinException
WeixinResponse response = weixinExecutor.post( */
String.format(oauth_logininfo_uri, providerToken), public OUserInfo getOUserInfoByCode(String providerToken, String authCode) throws WeixinException {
String.format("{\"auth_code\":\"%s\"}", authCode)); String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri");
return JSON.parseObject(response.getAsString(), OUserInfo.class); WeixinResponse response = weixinExecutor.post(String.format(oauth_logininfo_uri, providerToken),
} String.format("{\"auth_code\":\"%s\"}", authCode));
return JSON.parseObject(response.getAsString(), OUserInfo.class);
/** }
* 根据code获取成员信息
* /**
* @param code * 根据code获取成员信息
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期 *
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" } * @param code
* @see <a * 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* href="http://qydev.weixin.qq.com/wiki/indexo.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">企业获取code</a> * @return { "UserId":"USERID", "DeviceId":"DEVICEID" }
* @see <a * @see <a href=
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a> * "http://qydev.weixin.qq.com/wiki/indexo.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">
* @throws WeixinException * 企业获取code</a>
*/ * @see <a href=
public JSONObject getUserIdByCode(String code) throws WeixinException { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">
String user_getid_uri = getRequestUri("user_getid_uri"); * 根据code获取成员信息</a>
Token token = tokenHolder.getToken(); * @throws WeixinException
WeixinResponse response = weixinExecutor.get(String.format( */
user_getid_uri, token.getAccessToken(), code)); public JSONObject getUserIdByCode(String code) throws WeixinException {
return response.getAsJson(); String user_getid_uri = getRequestUri("user_getid_uri");
} Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_getid_uri, token.getAccessToken(), code));
/** return response.getAsJson();
* 获取部门成员 }
*
* @param partyId /**
* 部门ID 必须 * 获取部门成员
* @param fetchChild *
* 是否递归获取子部门下面的成员 非必须 * @param partyId
* @param userStatus * 部门ID 必须
* 成员状态 status可叠加 非必须 * @param fetchChild
* @param findDetail * 是否递归获取子部门下面的成员 非必须
* 是否获取详细信息 * @param userStatus
* @see com.foxinmy.weixin4j.qy.model.User * 成员状态 status可叠加 非必须 未填写则默认为未关注(4)
* @see <a * @param findDetail
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E6.88.90.E5.91.98">获取部门成员说明</a> * 是否获取详细信息
* @return 成员列表 * @see com.foxinmy.weixin4j.qy.model.User
* @throws WeixinException * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E6.88.90.E5.91.98">
public List<User> listUser(int departId, boolean fetchChild, * 获取部门成员说明</a>
UserStatus userStatus, boolean findDetail) throws WeixinException { * @return 成员列表
String user_list_uri = findDetail ? getRequestUri("user_list_uri") * @throws WeixinException
: getRequestUri("user_slist_uri"); */
Token token = tokenHolder.getToken(); public List<User> listUser(int departId, boolean fetchChild, UserStatus userStatus, boolean findDetail)
WeixinResponse response = weixinExecutor.get(String.format( throws WeixinException {
user_list_uri, token.getAccessToken(), departId, fetchChild ? 1 String user_list_uri = findDetail ? getRequestUri("user_list_uri") : getRequestUri("user_slist_uri");
: 0, userStatus.getVal())); Token token = tokenHolder.getToken();
List<User> list = null; if (userStatus == null) {
if (findDetail) { userStatus = UserStatus.UNFOLLOW;
JSONArray arrays = response.getAsJson().getJSONArray("userlist"); }
list = new ArrayList<User>(arrays.size()); WeixinResponse response = weixinExecutor.get(String.format(user_list_uri, token.getAccessToken(), departId,
for (int i = 0; i < arrays.size(); i++) { fetchChild ? 1 : 0, userStatus.getVal()));
JSONObject obj = arrays.getJSONObject(i); List<User> list = null;
JSONObject ex = obj.getJSONObject("extattr"); if (findDetail) {
Object attrs = null; JSONArray arrays = response.getAsJson().getJSONArray("userlist");
if (ex != null && (attrs = ex.remove("attrs")) != null) { list = new ArrayList<User>(arrays.size());
obj.put("extattr", attrs); for (int i = 0; i < arrays.size(); i++) {
} JSONObject obj = arrays.getJSONObject(i);
list.add(JSON.toJavaObject(obj, User.class)); JSONObject ex = obj.getJSONObject("extattr");
} Object attrs = null;
} else { if (ex != null && (attrs = ex.remove("attrs")) != null) {
list = JSON.parseArray(response.getAsJson().getString("userlist"), obj.put("extattr", attrs);
User.class); }
} list.add(JSON.toJavaObject(obj, User.class));
return list; }
} } else {
list = JSON.parseArray(response.getAsJson().getString("userlist"), User.class);
/** }
* 获取部门下所有状态成员(不进行递归) return list;
* }
* @param departId
* 部门ID /**
* @see {@link #listUser(int, boolean,UserStatus)} * 获取部门下所有状态成员(不进行递归)
* @return 成员列表 *
* @throws WeixinException * @param departId
*/ * 部门ID
public List<User> listUser(int departId) throws WeixinException { * @see {@link #listUser(int, boolean,UserStatus)}
return listUser(departId, false, UserStatus.BOTH, false); * @return 成员列表
} * @throws WeixinException
*/
/** public List<User> listUser(int departId) throws WeixinException {
* 删除成员 return listUser(departId, false, UserStatus.BOTH, false);
* }
* @param userid
* 成员ID /**
* @see <a * 删除成员
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98">删除成员说明</a> *
* @return 处理结果 * @param userid
* @throws WeixinException * 成员ID
*/ * @see <a href=
public JsonResult deleteUser(String userid) throws WeixinException { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98">
String user_delete_uri = getRequestUri("user_delete_uri"); * 删除成员说明</a>
Token token = tokenHolder.getToken(); * @return 处理结果
WeixinResponse response = weixinExecutor.get(String.format( * @throws WeixinException
user_delete_uri, token.getAccessToken(), userid)); */
return response.getAsJsonResult(); public JsonResult deleteUser(String userid) throws WeixinException {
} String user_delete_uri = getRequestUri("user_delete_uri");
Token token = tokenHolder.getToken();
/** WeixinResponse response = weixinExecutor.get(String.format(user_delete_uri, token.getAccessToken(), userid));
* 批量删除成员 return response.getAsJsonResult();
* }
* @param userIds
* 成员列表 /**
* @see <a href= * 批量删除成员
* "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.89.B9.E9.87.8F.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98" *
* >批量删除成员说明</a> * @param userIds
* @return 处理结果 * 成员列表
* @throws WeixinException * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E6.89.B9.E9.87.8F.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98"
public JsonResult batchDeleteUser(List<String> userIds) * >批量删除成员说明</a>
throws WeixinException { * @return 处理结果
JSONObject obj = new JSONObject(); * @throws WeixinException
obj.put("useridlist", userIds); */
String user_delete_uri = getRequestUri("user_batchdelete_uri"); public JsonResult batchDeleteUser(List<String> userIds) throws WeixinException {
Token token = tokenHolder.getToken(); JSONObject obj = new JSONObject();
WeixinResponse response = weixinExecutor.post(String.format( obj.put("useridlist", userIds);
user_delete_uri, token.getAccessToken(), obj.toJSONString())); String user_delete_uri = getRequestUri("user_batchdelete_uri");
return response.getAsJsonResult(); Token token = tokenHolder.getToken();
} WeixinResponse response = weixinExecutor
.post(String.format(user_delete_uri, token.getAccessToken(), obj.toJSONString()));
/** return response.getAsJsonResult();
* 开启二次验证成功时调用(管理员须拥有userid对应员工的管理权限) }
*
* @param userid /**
* 成员ID * 开启二次验证成功时调用(管理员须拥有userid对应员工的管理权限)
* @return 调用结果 *
* @see <a * @param userid
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%85%B3%E6%B3%A8%E4%B8%8E%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8">二次验证说明</a> * 成员ID
* @throws WeixinException * @return 调用结果
*/ * @see <a href=
public JsonResult authsucc(String userId) throws WeixinException { * "http://qydev.weixin.qq.com/wiki/index.php?title=%E5%85%B3%E6%B3%A8%E4%B8%8E%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8">
String user_authsucc_uri = getRequestUri("user_authsucc_uri"); * 二次验证说明</a>
Token token = tokenHolder.getToken(); * @throws WeixinException
WeixinResponse response = weixinExecutor.get(String.format( */
user_authsucc_uri, token.getAccessToken(), userId)); public JsonResult authsucc(String userId) throws WeixinException {
return response.getAsJsonResult(); String user_authsucc_uri = getRequestUri("user_authsucc_uri");
} Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_authsucc_uri, token.getAccessToken(), userId));
/** return response.getAsJsonResult();
* 邀请成员关注(管理员须拥有该成员的查看权限) }
*
* @param userId /**
* 成员ID * 邀请成员关注(管理员须拥有该成员的查看权限)
* @param tips *
* 推送到微信上的提示语只有认证号可以使用当使用微信推送时该字段默认为请关注XXX企业号邮件邀请时该字段无效 * @param userId
* @return 邀请类型 * 成员ID
* @see <a * @param tips
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8">邀请成员关注说明</a> * 推送到微信上的提示语只有认证号可以使用当使用微信推送时该字段默认为请关注XXX企业号邮件邀请时该字段无效
* @throws WeixinException * @return 邀请类型
*/ * @see <a href=
public InviteType inviteUser(String userId, String tips) * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8">
throws WeixinException { * 邀请成员关注说明</a>
JSONObject obj = new JSONObject(); * @throws WeixinException
obj.put("userid", userId); */
obj.put("invite_tips", tips); public InviteType inviteUser(String userId, String tips) throws WeixinException {
String invite_user_uri = getRequestUri("invite_user_uri"); JSONObject obj = new JSONObject();
Token token = tokenHolder.getToken(); obj.put("userid", userId);
WeixinResponse response = weixinExecutor.post( obj.put("invite_tips", tips);
String.format(invite_user_uri, token.getAccessToken()), String invite_user_uri = getRequestUri("invite_user_uri");
obj.toJSONString()); Token token = tokenHolder.getToken();
int type = response.getAsJson().getIntValue("type"); WeixinResponse response = weixinExecutor.post(String.format(invite_user_uri, token.getAccessToken()),
if (type == 1) { obj.toJSONString());
return InviteType.WEIXIN; int type = response.getAsJson().getIntValue("type");
} else if (type == 2) { if (type == 1) {
return InviteType.EMAIL; return InviteType.WEIXIN;
} else { } else if (type == 2) {
return null; return InviteType.EMAIL;
} } else {
} return null;
}
/** }
* userid转换成openid:该接口使用场景为微信支付微信红包和企业转账企业号用户在使用微信支付的功能时
* 需要自行将企业号的userid转成openid 在使用微信红包功能时需要将应用id和userid转成appid和openid才能使用 /**
* * userid转换成openid:该接口使用场景为微信支付微信红包和企业转账企业号用户在使用微信支付的功能时
* @param userid * 需要自行将企业号的userid转成openid 在使用微信红包功能时需要将应用id和userid转成appid和openid才能使用
* 企业号内的成员id 必填 *
* @param agentid * @param userid
* 需要发送红包的应用ID若只是使用微信支付和企业转账则无需该参数 传入0或负数则忽略 * 企业号内的成员id 必填
* @return 结果数组 第一个元素为对应的openid 第二个元素则为应用的appid(如果有) * @param agentid
* @throws WeixinException * 需要发送红包的应用ID若只是使用微信支付和企业转账则无需该参数 传入0或负数则忽略
* @see <a * @return 结果数组 第一个元素为对应的openid 第二个元素则为应用的appid(如果有)
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">userid转换成openid</a> * @throws WeixinException
*/ * @see <a href=
public String[] userid2openid(String userid, int agentid) * "http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">
throws WeixinException { * userid转换成openid</a>
JSONObject obj = new JSONObject(); */
obj.put("userid", userid); public String[] userid2openid(String userid, int agentid) throws WeixinException {
if (agentid > 0) { JSONObject obj = new JSONObject();
obj.put("agentid", agentid); obj.put("userid", userid);
} if (agentid > 0) {
String userid2openid_uri = getRequestUri("userid2openid_uri"); obj.put("agentid", agentid);
WeixinResponse response = weixinExecutor.post( }
String.format(userid2openid_uri, tokenHolder.getAccessToken()), String userid2openid_uri = getRequestUri("userid2openid_uri");
obj.toJSONString()); WeixinResponse response = weixinExecutor.post(String.format(userid2openid_uri, tokenHolder.getAccessToken()),
obj = response.getAsJson(); obj.toJSONString());
return new String[] { obj.getString("openid"), obj.getString("appid") }; obj = response.getAsJson();
} return new String[] { obj.getString("openid"), obj.getString("appid") };
}
/**
* openid转换成userid:该接口主要应用于使用微信支付微信红包和企业转账之后的结果查询 /**
* 开发者需要知道某个结果事件的openid对应企业号内成员的信息时可以通过调用该接口进行转换查询 * openid转换成userid:该接口主要应用于使用微信支付微信红包和企业转账之后的结果查询
* * 开发者需要知道某个结果事件的openid对应企业号内成员的信息时可以通过调用该接口进行转换查询
* @param openid *
* 在使用微信支付微信红包和企业转账之后返回结果的openid * @param openid
* @return 该openid在企业号中对应的成员userid * 在使用微信支付微信红包和企业转账之后返回结果的openid
* @throws WeixinException * @return 该openid在企业号中对应的成员userid
* @see <a * @throws WeixinException
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">openid转换成userid</a> * @see <a href=
*/ * "http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">
public String openid2userid(String openid) throws WeixinException { * openid转换成userid</a>
String openid2userid_uri = getRequestUri("openid2userid_uri"); */
WeixinResponse response = weixinExecutor.post( public String openid2userid(String openid) throws WeixinException {
String.format(openid2userid_uri, tokenHolder.getAccessToken()), String openid2userid_uri = getRequestUri("openid2userid_uri");
String.format("{\"openid\": \"%s\"}", openid)); WeixinResponse response = weixinExecutor.post(String.format(openid2userid_uri, tokenHolder.getAccessToken()),
return response.getAsJson().getString("userid"); String.format("{\"openid\": \"%s\"}", openid));
} return response.getAsJson().getString("userid");
} }
}

View File

@ -1,77 +1,77 @@
package com.foxinmy.weixin4j.qy.test; package com.foxinmy.weixin4j.qy.test;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.JsonResult;
import com.foxinmy.weixin4j.qy.api.TagApi; import com.foxinmy.weixin4j.qy.api.TagApi;
import com.foxinmy.weixin4j.qy.model.Tag; import com.foxinmy.weixin4j.qy.model.Tag;
import com.foxinmy.weixin4j.qy.model.User; import com.foxinmy.weixin4j.qy.model.User;
/** /**
* 标签API测试 * 标签API测试
* *
* @className TagTest * @className TagTest
* @author jy * @author jy
* @date 2014年11月18日 * @date 2014年11月18日
* @since JDK 1.7 * @since JDK 1.7
* @see * @see
*/ */
public class TagTest extends TokenTest { public class TagTest extends TokenTest {
public TagApi tagApi; public TagApi tagApi;
@Before @Before
public void init() { public void init() {
this.tagApi = new TagApi(tokenHolder); this.tagApi = new TagApi(tokenHolder);
} }
@Test @Test
public void create() throws WeixinException { public void create() throws WeixinException {
int tagId = tagApi.createTag(new Tag("coder")); int tagId = tagApi.createTag(new Tag("coder"));
Assert.assertTrue(tagId > 0); Assert.assertTrue(tagId > 0);
} }
@Test @Test
public void update() throws WeixinException { public void update() throws WeixinException {
JsonResult result = tagApi.updateTag(new Tag(1, "coder456")); JsonResult result = tagApi.updateTag(new Tag(1, "coder456"));
Assert.assertEquals("updated", result.getDesc()); Assert.assertEquals("updated", result.getDesc());
} }
@Test @Test
public void getUsers() throws WeixinException { public void getUsers() throws WeixinException {
List<User> listUser = tagApi.getTagUsers(1); List<User> listUser = tagApi.getTagUsers(1);
Assert.assertFalse(listUser.isEmpty()); Assert.assertFalse(listUser.isEmpty());
System.out.println(listUser); System.out.println(listUser);
} }
@Test @Test
public void addUsers() throws WeixinException { public void addUsers() throws WeixinException {
JsonResult result = tagApi.addTagUsers(1, Arrays.asList("jinyu")); JsonResult result = tagApi.addTagUsers(1, Arrays.asList("jinyu"), null);
Assert.assertEquals("ok", result.getDesc()); Assert.assertEquals("ok", result.getDesc());
} }
@Test @Test
public void deleteUsers() throws WeixinException { public void deleteUsers() throws WeixinException {
JsonResult result = tagApi.deleteTagUsers(1, Arrays.asList("jinyu")); JsonResult result = tagApi.deleteTagUsers(1, Arrays.asList("jinyu"), null);
Assert.assertEquals("ok", result.getDesc()); Assert.assertEquals("ok", result.getDesc());
System.out.println(result); System.out.println(result);
} }
@Test @Test
public void list() throws WeixinException { public void list() throws WeixinException {
List<Tag> tags = tagApi.listTag(); List<Tag> tags = tagApi.listTag();
Assert.assertFalse(tags.isEmpty()); Assert.assertFalse(tags.isEmpty());
System.out.println(tags); System.out.println(tags);
} }
@Test @Test
public void delete() throws WeixinException { public void delete() throws WeixinException {
JsonResult result = tagApi.deleteTag(3); JsonResult result = tagApi.deleteTag(3);
Assert.assertEquals("deleted", result.getDesc()); Assert.assertEquals("deleted", result.getDesc());
} }
} }

View File

@ -1,32 +1,33 @@
# Mobile Tools for Java (J2ME) # Mobile Tools for Java (J2ME)
.mtj.tmp/ .mtj.tmp/
# Package Files # # Package Files #
*.jar *.jar
*.war *.war
*.ear *.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid* hs_err_pid*
*~ *~
# eclipse ignore # eclipse ignore
*.settings/* *.settings/*
/.project /.project
/.classpath /.classpath
/.tomcatplugin /.tomcatplugin
# idea ignore # idea ignore
/.idea /.idea
*.iml *.iml
# maven ignore # maven ignore
target/* target/*
# other ignore # other ignore
*.log *.log
*.tmp *.tmp
Thumbs.db Thumbs.db
/target/
.DS_Store
/target/ /target/
.DS_Store