fixed issues 14

This commit is contained in:
jinyu 2015-12-01 17:12:05 +08:00
parent 78995c687f
commit 23ff5460b9
5 changed files with 81 additions and 80 deletions

View File

@ -2,14 +2,27 @@ package com.foxinmy.weixin4j.util;
import java.io.Serializable; import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONCreator;
import com.alibaba.fastjson.annotation.JSONField;
/**
* name-value
*
* @className NameValue
* @author jy
* @date 2015年3月29日
* @since JDK 1.7
* @see
*/
public class NameValue implements Serializable { public class NameValue implements Serializable {
private static final long serialVersionUID = 4557003825642138566L; private static final long serialVersionUID = -348620146718819093L;
private String name;
private String value;
private final String name; @JSONCreator
private final String value; public NameValue(@JSONField(name = "name") String name,
@JSONField(name = "value") String value) {
public NameValue(String name, String value) {
this.name = name; this.name = name;
this.value = value; this.value = value;
} }
@ -21,4 +34,9 @@ public class NameValue implements Serializable {
public String getValue() { public String getValue() {
return value; return value;
} }
@Override
public String toString() {
return "NameValue [name=" + name + ", value=" + value + "]";
}
} }

View File

@ -16,6 +16,7 @@ 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;
import com.foxinmy.weixin4j.util.NameValue;
/** /**
* 成员API * 成员API
@ -69,7 +70,8 @@ public class UserApi extends QyApi {
* @return 处理结果 * @return 处理结果
* @throws WeixinException * @throws WeixinException
*/ */
public JsonResult createUser(User user, InputStream avatar) throws WeixinException { public JsonResult createUser(User user, InputStream avatar)
throws WeixinException {
String user_create_uri = getRequestUri("user_create_uri"); String user_create_uri = getRequestUri("user_create_uri");
return excute(user_create_uri, user, avatar); return excute(user_create_uri, user, avatar);
} }
@ -105,12 +107,14 @@ public class UserApi extends QyApi {
* @return 处理结果 * @return 处理结果
* @throws WeixinException * @throws WeixinException
*/ */
public JsonResult updateUser(User user, InputStream avatar) throws WeixinException { public JsonResult updateUser(User user, InputStream avatar)
throws WeixinException {
String user_update_uri = getRequestUri("user_update_uri"); String user_update_uri = getRequestUri("user_update_uri");
return excute(user_update_uri, user, avatar); return excute(user_update_uri, user, avatar);
} }
private JsonResult excute(String uri, User user, InputStream avatar) throws WeixinException { private JsonResult excute(String uri, User user, InputStream avatar)
throws WeixinException {
JSONObject obj = (JSONObject) JSON.toJSON(user); JSONObject obj = (JSONObject) JSON.toJSON(user);
Object val = obj.remove("extattr"); Object val = obj.remove("extattr");
if (val != null) { if (val != null) {
@ -128,7 +132,8 @@ public class UserApi extends QyApi {
obj.put("avatar_mediaid", obj.remove("avatar")); obj.put("avatar_mediaid", obj.remove("avatar"));
} }
Token token = tokenHolder.getToken(); 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());
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
@ -147,13 +152,16 @@ public class UserApi extends QyApi {
public User getUser(String userid) throws WeixinException { public User getUser(String userid) throws WeixinException {
String user_get_uri = getRequestUri("user_get_uri"); String user_get_uri = getRequestUri("user_get_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_get_uri, token.getAccessToken(), userid)); WeixinResponse response = weixinExecutor.get(String.format(
user_get_uri, token.getAccessToken(), userid));
JSONObject obj = response.getAsJson(); JSONObject obj = response.getAsJson();
Object attrs = obj.getJSONObject("extattr").remove("attrs"); Object attrs = obj.remove("extattr");
User user = JSON.toJavaObject(obj, User.class);
if (attrs != null) { if (attrs != null) {
obj.put("extattr", attrs); user.setExtattr(JSON.parseArray(
((JSONObject) attrs).getString("attrs"), NameValue.class));
} }
return JSON.toJavaObject(obj, User.class); return user;
} }
/** /**
@ -191,9 +199,11 @@ public class UserApi extends QyApi {
* @see com.foxinmy.weixin4j.qy.model.OUserInfo * @see com.foxinmy.weixin4j.qy.model.OUserInfo
* @throws WeixinException * @throws WeixinException
*/ */
public OUserInfo getOUserInfoByCode(String providerToken, String authCode) throws WeixinException { public OUserInfo getOUserInfoByCode(String providerToken, String authCode)
throws WeixinException {
String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri"); String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri");
WeixinResponse response = weixinExecutor.post(String.format(oauth_logininfo_uri, providerToken), WeixinResponse response = weixinExecutor.post(
String.format(oauth_logininfo_uri, providerToken),
String.format("{\"auth_code\":\"%s\"}", authCode)); String.format("{\"auth_code\":\"%s\"}", authCode));
return JSON.parseObject(response.getAsString(), OUserInfo.class); return JSON.parseObject(response.getAsString(), OUserInfo.class);
} }
@ -215,7 +225,8 @@ public class UserApi extends QyApi {
public JSONObject getUserIdByCode(String code) throws WeixinException { public JSONObject getUserIdByCode(String code) throws WeixinException {
String user_getid_uri = getRequestUri("user_getid_uri"); String user_getid_uri = getRequestUri("user_getid_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_getid_uri, token.getAccessToken(), code)); WeixinResponse response = weixinExecutor.get(String.format(
user_getid_uri, token.getAccessToken(), code));
return response.getAsJson(); return response.getAsJson();
} }
@ -237,30 +248,35 @@ public class UserApi extends QyApi {
* @return 成员列表 * @return 成员列表
* @throws WeixinException * @throws WeixinException
*/ */
public List<User> listUser(int departId, boolean fetchChild, UserStatus userStatus, boolean findDetail) public List<User> listUser(int departId, boolean fetchChild,
throws WeixinException { UserStatus userStatus, boolean findDetail) throws WeixinException {
String user_list_uri = findDetail ? getRequestUri("user_list_uri") : getRequestUri("user_slist_uri"); String user_list_uri = findDetail ? getRequestUri("user_list_uri")
: getRequestUri("user_slist_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
if (userStatus == null) { if (userStatus == null) {
userStatus = UserStatus.UNFOLLOW; userStatus = UserStatus.UNFOLLOW;
} }
WeixinResponse response = weixinExecutor.get(String.format(user_list_uri, token.getAccessToken(), departId, WeixinResponse response = weixinExecutor.get(String.format(
fetchChild ? 1 : 0, userStatus.getVal())); user_list_uri, token.getAccessToken(), departId, fetchChild ? 1
: 0, userStatus.getVal()));
List<User> list = null; List<User> list = null;
if (findDetail) { if (findDetail) {
JSONArray arrays = response.getAsJson().getJSONArray("userlist"); JSONArray arrays = response.getAsJson().getJSONArray("userlist");
list = new ArrayList<User>(arrays.size()); list = new ArrayList<User>(arrays.size());
for (int i = 0; i < arrays.size(); i++) { for (int i = 0; i < arrays.size(); i++) {
JSONObject obj = arrays.getJSONObject(i); JSONObject obj = arrays.getJSONObject(i);
JSONObject ex = obj.getJSONObject("extattr"); Object attrs = obj.remove("extattr");
Object attrs = null; User user = JSON.toJavaObject(obj, User.class);
if (ex != null && (attrs = ex.remove("attrs")) != null) { if (attrs != null) {
obj.put("extattr", attrs); user.setExtattr(JSON.parseArray(
((JSONObject) attrs).getString("attrs"),
NameValue.class));
} }
list.add(JSON.toJavaObject(obj, User.class)); list.add(user);
} }
} else { } else {
list = JSON.parseArray(response.getAsJson().getString("userlist"), User.class); list = JSON.parseArray(response.getAsJson().getString("userlist"),
User.class);
} }
return list; return list;
} }
@ -292,7 +308,8 @@ public class UserApi extends QyApi {
public JsonResult deleteUser(String userid) throws WeixinException { public JsonResult deleteUser(String userid) throws WeixinException {
String user_delete_uri = getRequestUri("user_delete_uri"); String user_delete_uri = getRequestUri("user_delete_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_delete_uri, token.getAccessToken(), userid)); WeixinResponse response = weixinExecutor.get(String.format(
user_delete_uri, token.getAccessToken(), userid));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
@ -307,13 +324,14 @@ public class UserApi extends QyApi {
* @return 处理结果 * @return 处理结果
* @throws WeixinException * @throws WeixinException
*/ */
public JsonResult batchDeleteUser(List<String> userIds) throws WeixinException { public JsonResult batchDeleteUser(List<String> userIds)
throws WeixinException {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("useridlist", userIds); obj.put("useridlist", userIds);
String user_delete_uri = getRequestUri("user_batchdelete_uri"); String user_delete_uri = getRequestUri("user_batchdelete_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor WeixinResponse response = weixinExecutor.post(String.format(
.post(String.format(user_delete_uri, token.getAccessToken(), obj.toJSONString())); user_delete_uri, token.getAccessToken(), obj.toJSONString()));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
@ -331,7 +349,8 @@ public class UserApi extends QyApi {
public JsonResult authsucc(String userId) throws WeixinException { public JsonResult authsucc(String userId) throws WeixinException {
String user_authsucc_uri = getRequestUri("user_authsucc_uri"); String user_authsucc_uri = getRequestUri("user_authsucc_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.get(String.format(user_authsucc_uri, token.getAccessToken(), userId)); WeixinResponse response = weixinExecutor.get(String.format(
user_authsucc_uri, token.getAccessToken(), userId));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
@ -348,13 +367,15 @@ public class UserApi extends QyApi {
* 邀请成员关注说明</a> * 邀请成员关注说明</a>
* @throws WeixinException * @throws WeixinException
*/ */
public InviteType inviteUser(String userId, String tips) throws WeixinException { public InviteType inviteUser(String userId, String tips)
throws WeixinException {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("userid", userId); obj.put("userid", userId);
obj.put("invite_tips", tips); obj.put("invite_tips", tips);
String invite_user_uri = getRequestUri("invite_user_uri"); String invite_user_uri = getRequestUri("invite_user_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinExecutor.post(String.format(invite_user_uri, token.getAccessToken()), WeixinResponse response = weixinExecutor.post(
String.format(invite_user_uri, token.getAccessToken()),
obj.toJSONString()); obj.toJSONString());
int type = response.getAsJson().getIntValue("type"); int type = response.getAsJson().getIntValue("type");
if (type == 1) { if (type == 1) {
@ -380,14 +401,16 @@ public class UserApi extends QyApi {
* "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"> * "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> * userid转换成openid</a>
*/ */
public String[] userid2openid(String userid, int agentid) throws WeixinException { public String[] userid2openid(String userid, int agentid)
throws WeixinException {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("userid", userid); obj.put("userid", userid);
if (agentid > 0) { if (agentid > 0) {
obj.put("agentid", agentid); obj.put("agentid", agentid);
} }
String userid2openid_uri = getRequestUri("userid2openid_uri"); String userid2openid_uri = getRequestUri("userid2openid_uri");
WeixinResponse response = weixinExecutor.post(String.format(userid2openid_uri, tokenHolder.getAccessToken()), WeixinResponse response = weixinExecutor.post(
String.format(userid2openid_uri, tokenHolder.getAccessToken()),
obj.toJSONString()); obj.toJSONString());
obj = response.getAsJson(); obj = response.getAsJson();
return new String[] { obj.getString("openid"), obj.getString("appid") }; return new String[] { obj.getString("openid"), obj.getString("appid") };
@ -407,7 +430,8 @@ public class UserApi extends QyApi {
*/ */
public String openid2userid(String openid) throws WeixinException { public String openid2userid(String openid) throws WeixinException {
String openid2userid_uri = getRequestUri("openid2userid_uri"); String openid2userid_uri = getRequestUri("openid2userid_uri");
WeixinResponse response = weixinExecutor.post(String.format(openid2userid_uri, tokenHolder.getAccessToken()), WeixinResponse response = weixinExecutor.post(
String.format(openid2userid_uri, tokenHolder.getAccessToken()),
String.format("{\"openid\": \"%s\"}", openid)); String.format("{\"openid\": \"%s\"}", openid));
return response.getAsJson().getString("userid"); return response.getAsJson().getString("userid");
} }

View File

@ -1,42 +0,0 @@
package com.foxinmy.weixin4j.qy.model;
import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONCreator;
import com.alibaba.fastjson.annotation.JSONField;
/**
* name-value
*
* @className NameValue
* @author jy
* @date 2015年3月29日
* @since JDK 1.7
* @see
*/
public class NameValue implements Serializable {
private static final long serialVersionUID = -348620146718819093L;
private String name;
private String value;
@JSONCreator
public NameValue(@JSONField(name = "name") String name,
@JSONField(name = "value") String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return "NameValue [name=" + name + ", value=" + value + "]";
}
}

View File

@ -7,6 +7,7 @@ import java.util.List;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.foxinmy.weixin4j.model.Gender; import com.foxinmy.weixin4j.model.Gender;
import com.foxinmy.weixin4j.qy.type.UserStatus; import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.util.NameValue;
/** /**
* 部门成员对象 * 部门成员对象

View File

@ -61,7 +61,7 @@ public class UserTest extends TokenTest {
@Test @Test
public void get() throws WeixinException { public void get() throws WeixinException {
User user = userApi.getUser("u001"); User user = userApi.getUser("jinyu");
Assert.assertTrue(user != null); Assert.assertTrue(user != null);
System.out.println(user); System.out.println(user);
} }