优化代码
This commit is contained in:
parent
c6a9854717
commit
fe51ab7813
@ -6,7 +6,7 @@ package com.foxinmy.weixin4j.jssdk;
|
|||||||
* @className JSSDKAPI
|
* @className JSSDKAPI
|
||||||
* @author jy
|
* @author jy
|
||||||
* @date 2015年12月23日
|
* @date 2015年12月23日
|
||||||
* @since JDK 1.7
|
* @since JDK 1.6
|
||||||
* @see
|
* @see
|
||||||
*/
|
*/
|
||||||
public enum JSSDKAPI {
|
public enum JSSDKAPI {
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package com.foxinmy.weixin4j.qy;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
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.model.Button;
|
import com.foxinmy.weixin4j.model.Button;
|
||||||
@ -199,9 +198,9 @@ public class WeixinProxy {
|
|||||||
* @see com.foxinmy.weixin4j.tuple.File
|
* @see com.foxinmy.weixin4j.tuple.File
|
||||||
* @see com.foxinmy.weixin4j.tuple.News
|
* @see com.foxinmy.weixin4j.tuple.News
|
||||||
* @see com.foxinmy.weixin4j.tuple.MpNews
|
* @see com.foxinmy.weixin4j.tuple.MpNews
|
||||||
* @see com.foxinmy.weixin4j.qy.message.NotifyMessage
|
* @see com.foxinmy.weixin4j.qy.model.IdParameter
|
||||||
*/
|
*/
|
||||||
public JSONObject sendNotifyMessage(NotifyMessage message)
|
public IdParameter sendNotifyMessage(NotifyMessage message)
|
||||||
throws WeixinException {
|
throws WeixinException {
|
||||||
return notifyApi.sendNotifyMessage(message);
|
return notifyApi.sendNotifyMessage(message);
|
||||||
}
|
}
|
||||||
@ -710,22 +709,19 @@ public class WeixinProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据code获取成员信息
|
* 根据code获取成员ID信息
|
||||||
*
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
||||||
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" } or
|
* @return 两个元素的数组 <font color="red">第一个元素为userId或者openId
|
||||||
* {"OpenId":"OPENID","DeviceId":"DEVICEID"}
|
* 第二个元素为deviceId</font>
|
||||||
* @see com.foxinmy.weixin4j.qy.api.UserApi
|
* @see com.foxinmy.weixin4j.qy.api.UserApi
|
||||||
* @see <a href=
|
* @see <a href=
|
||||||
* "http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">
|
* "http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3">
|
||||||
* 企业获取code</a>
|
* oauth授权获取用户信息</a>
|
||||||
* @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">
|
|
||||||
* 根据code获取成员信息</a>
|
|
||||||
* @throws WeixinException
|
* @throws WeixinException
|
||||||
*/
|
*/
|
||||||
public JSONObject getUserIdByCode(String code) throws WeixinException {
|
public String[] getUserIdByCode(String code) throws WeixinException {
|
||||||
return userApi.getUserIdByCode(code);
|
return userApi.getUserIdByCode(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
package com.foxinmy.weixin4j.qy.api;
|
package com.foxinmy.weixin4j.qy.api;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@ -68,8 +71,9 @@ public class NotifyApi extends QyApi {
|
|||||||
* @see com.foxinmy.weixin4j.tuple.News
|
* @see com.foxinmy.weixin4j.tuple.News
|
||||||
* @see com.foxinmy.weixin4j.tuple.MpNews
|
* @see com.foxinmy.weixin4j.tuple.MpNews
|
||||||
* @see com.foxinmy.weixin4j.qy.message.NotifyMessage
|
* @see com.foxinmy.weixin4j.qy.message.NotifyMessage
|
||||||
|
* @see com.foxinmy.weixin4j.qy.model.IdParameter
|
||||||
*/
|
*/
|
||||||
public JSONObject sendNotifyMessage(NotifyMessage message)
|
public IdParameter sendNotifyMessage(NotifyMessage message)
|
||||||
throws WeixinException {
|
throws WeixinException {
|
||||||
NotifyTuple tuple = message.getTuple();
|
NotifyTuple tuple = message.getTuple();
|
||||||
Map<String, String> target = message.getTarget().getParameter();
|
Map<String, String> target = message.getTarget().getParameter();
|
||||||
@ -87,8 +91,29 @@ public class NotifyApi extends QyApi {
|
|||||||
WeixinResponse response = weixinExecutor.post(
|
WeixinResponse response = weixinExecutor.post(
|
||||||
String.format(message_send_uri, token.getAccessToken()),
|
String.format(message_send_uri, token.getAccessToken()),
|
||||||
obj.toJSONString());
|
obj.toJSONString());
|
||||||
|
obj = response.getAsJson();
|
||||||
return response.getAsJson();
|
IdParameter idParameter = new IdParameter();
|
||||||
|
if (obj.containsKey("invaliduser")) {
|
||||||
|
idParameter.setUserIds(Arrays.asList(obj.getString("invalidlist")
|
||||||
|
.split(IdParameter.SEPARATORS)));
|
||||||
|
}
|
||||||
|
if (obj.containsKey("invalidparty")) {
|
||||||
|
List<Integer> partyIds = new ArrayList<Integer>();
|
||||||
|
for (String id : obj.getString("invalidlist").split(
|
||||||
|
IdParameter.SEPARATORS)) {
|
||||||
|
partyIds.add(Integer.parseInt(id));
|
||||||
|
}
|
||||||
|
idParameter.setPartyIds(partyIds);
|
||||||
|
}
|
||||||
|
if (obj.containsKey("invalidtag")) {
|
||||||
|
List<Integer> tagIds = new ArrayList<Integer>();
|
||||||
|
for (String id : obj.getString("invalidtag").split(
|
||||||
|
IdParameter.SEPARATORS)) {
|
||||||
|
tagIds.add(Integer.parseInt(id));
|
||||||
|
}
|
||||||
|
idParameter.setPartyIds(tagIds);
|
||||||
|
}
|
||||||
|
return idParameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -205,7 +205,7 @@ public class TagApi extends QyApi {
|
|||||||
IdParameter idParameter = new IdParameter();
|
IdParameter idParameter = new IdParameter();
|
||||||
if (obj.containsKey("invalidlist")) {
|
if (obj.containsKey("invalidlist")) {
|
||||||
idParameter.setUserIds(Arrays.asList(obj.getString("invalidlist")
|
idParameter.setUserIds(Arrays.asList(obj.getString("invalidlist")
|
||||||
.split(String.valueOf(IdParameter.SEPARATOR))));
|
.split(IdParameter.SEPARATORS)));
|
||||||
}
|
}
|
||||||
if (obj.containsKey("partylist")) {
|
if (obj.containsKey("partylist")) {
|
||||||
idParameter.setPartyIds(JSON.parseArray(obj.getString("partylist"),
|
idParameter.setPartyIds(JSON.parseArray(obj.getString("partylist"),
|
||||||
|
|||||||
@ -17,6 +17,7 @@ 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;
|
import com.foxinmy.weixin4j.util.NameValue;
|
||||||
|
import com.foxinmy.weixin4j.util.StringUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 成员API
|
* 成员API
|
||||||
@ -165,7 +166,7 @@ public class UserApi extends QyApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* code获取userid(管理员须拥有agent的使用权限;agentid必须和跳转链接时所在的企业应用ID相同。)
|
* 根据code获取用户信息
|
||||||
*
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
||||||
@ -174,15 +175,45 @@ public class UserApi extends QyApi {
|
|||||||
* @see {@link #getUser(String)}
|
* @see {@link #getUser(String)}
|
||||||
* @see {@link #getUserIdByCode(String,int)}
|
* @see {@link #getUserIdByCode(String,int)}
|
||||||
* @see <a href=
|
* @see <a href=
|
||||||
* "http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">
|
* "http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3">
|
||||||
* 企业获取code</a>
|
* oauth授权获取用户信息</a>
|
||||||
* @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">
|
|
||||||
* 根据code获取成员信息</a>
|
|
||||||
* @throws WeixinException
|
* @throws WeixinException
|
||||||
*/
|
*/
|
||||||
public User getUserByCode(String code) throws WeixinException {
|
public User getUserByCode(String code) throws WeixinException {
|
||||||
return getUser(getUserIdByCode(code).getString("UserId"));
|
String[] userIds = getUserIdByCode(code);
|
||||||
|
if (Boolean.parseBoolean(userIds[2])) {
|
||||||
|
return getUser(openid2userid(userIds[0]));
|
||||||
|
} else {
|
||||||
|
return getUser(userIds[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据code获取成员ID信息
|
||||||
|
*
|
||||||
|
* @param code
|
||||||
|
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
||||||
|
* @return 两个元素的数组 <font color="red">第一个元素为userId或者openId
|
||||||
|
* 第二个元素为deviceId</font>
|
||||||
|
* @see <a href=
|
||||||
|
* "http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3">
|
||||||
|
* oauth授权获取用户信息</a>
|
||||||
|
* @throws WeixinException
|
||||||
|
*/
|
||||||
|
public String[] getUserIdByCode(String code) throws WeixinException {
|
||||||
|
String user_getid_uri = getRequestUri("user_getid_uri");
|
||||||
|
Token token = tokenHolder.getToken();
|
||||||
|
WeixinResponse response = weixinExecutor.get(String.format(
|
||||||
|
user_getid_uri, token.getAccessToken(), code));
|
||||||
|
JSONObject result = response.getAsJson();
|
||||||
|
String userId = result.getString("UserId");
|
||||||
|
boolean need2 = false;
|
||||||
|
if (StringUtil.isBlank(userId)) {
|
||||||
|
userId = result.getString("OpenId");
|
||||||
|
need2 = true;
|
||||||
|
}
|
||||||
|
return new String[] { userId, result.getString("DeviceId"),
|
||||||
|
Boolean.toString(need2) };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -208,28 +239,6 @@ public class UserApi extends QyApi {
|
|||||||
return JSON.parseObject(response.getAsString(), OUserInfo.class);
|
return JSON.parseObject(response.getAsString(), OUserInfo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据code获取成员信息
|
|
||||||
*
|
|
||||||
* @param code
|
|
||||||
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
|
|
||||||
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" }
|
|
||||||
* @see <a href=
|
|
||||||
* "http://qydev.weixin.qq.com/wiki/indexo.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">
|
|
||||||
* 企业获取code</a>
|
|
||||||
* @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">
|
|
||||||
* 根据code获取成员信息</a>
|
|
||||||
* @throws WeixinException
|
|
||||||
*/
|
|
||||||
public JSONObject getUserIdByCode(String code) throws WeixinException {
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取部门成员
|
* 获取部门成员
|
||||||
*
|
*
|
||||||
|
|||||||
@ -25,6 +25,8 @@ public class IdParameter implements Serializable {
|
|||||||
|
|
||||||
public static final char SEPARATOR = '|';
|
public static final char SEPARATOR = '|';
|
||||||
|
|
||||||
|
public static final String SEPARATORS = String.valueOf(SEPARATOR);
|
||||||
|
|
||||||
@JSONField(name = "user")
|
@JSONField(name = "user")
|
||||||
private List<String> userIds;
|
private List<String> userIds;
|
||||||
@JSONField(name = "party")
|
@JSONField(name = "party")
|
||||||
|
|||||||
@ -1,14 +1,12 @@
|
|||||||
package com.foxinmy.weixin4j.qy.test;
|
package com.foxinmy.weixin4j.qy.test;
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
import com.foxinmy.weixin4j.qy.api.NotifyApi;
|
import com.foxinmy.weixin4j.qy.api.NotifyApi;
|
||||||
import com.foxinmy.weixin4j.qy.message.NotifyMessage;
|
import com.foxinmy.weixin4j.qy.message.NotifyMessage;
|
||||||
|
import com.foxinmy.weixin4j.qy.model.IdParameter;
|
||||||
import com.foxinmy.weixin4j.tuple.File;
|
import com.foxinmy.weixin4j.tuple.File;
|
||||||
import com.foxinmy.weixin4j.tuple.Image;
|
import com.foxinmy.weixin4j.tuple.Image;
|
||||||
import com.foxinmy.weixin4j.tuple.MpNews;
|
import com.foxinmy.weixin4j.tuple.MpNews;
|
||||||
@ -88,8 +86,8 @@ public class NotifyTest extends TokenTest {
|
|||||||
@Test
|
@Test
|
||||||
public void send1() throws WeixinException {
|
public void send1() throws WeixinException {
|
||||||
Text text = new Text("this is a text");
|
Text text = new Text("this is a text");
|
||||||
JSONObject result = notifyApi.sendNotifyMessage(new NotifyMessage(1,
|
IdParameter result = notifyApi.sendNotifyMessage(new NotifyMessage(1,
|
||||||
text));
|
text));
|
||||||
Assert.assertEquals(0, result.getIntValue("errcode"));
|
System.err.println(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user