weixin4j-qy:新增企业号联系人筛选配置类(JSSDKContactConfigurator)
This commit is contained in:
parent
04339b6496
commit
110619b3c3
11
CHANGE.md
11
CHANGE.md
@ -571,6 +571,10 @@
|
|||||||
|
|
||||||
+ weixin4j-base:新增JSSDK的config生成类
|
+ weixin4j-base:新增JSSDK的config生成类
|
||||||
|
|
||||||
|
+ weixin4j-base:JSSDKHelper 重命名为 JSSDKConfigurator
|
||||||
|
|
||||||
|
+ weixin4j-base:重构了token类
|
||||||
|
|
||||||
+ weixin4j-mp:WeixinProxy新增获取appid(getAppId)方法
|
+ weixin4j-mp:WeixinProxy新增获取appid(getAppId)方法
|
||||||
|
|
||||||
+ weixin4j-mp:WeixinProxy新增获取jsticket(getJSTicketHolder)方法
|
+ weixin4j-mp:WeixinProxy新增获取jsticket(getJSTicketHolder)方法
|
||||||
@ -584,3 +588,10 @@
|
|||||||
+ weixin4j-qy:私有化WeixinProxy(TokenHolder)构造器
|
+ weixin4j-qy:私有化WeixinProxy(TokenHolder)构造器
|
||||||
|
|
||||||
+ weixin4j-qy:SuiteApi新增获取Weixinproxy对象(getWeixinProxy)方法
|
+ weixin4j-qy:SuiteApi新增获取Weixinproxy对象(getWeixinProxy)方法
|
||||||
|
|
||||||
|
+ weixin4j-qy:删除WeixinJSTicketCreator类
|
||||||
|
|
||||||
|
+ weixin4j-qy:新增企业号联系人筛选配置类(JSSDKContactConfigurator)
|
||||||
|
|
||||||
|
+ weixin4j-server:DigestUtil 重命名为 DigestUtils
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ import com.foxinmy.weixin4j.util.StringUtil;
|
|||||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSSDK帮助类
|
* JSSDK配置类
|
||||||
*
|
*
|
||||||
* @className JSSDKConfigurator
|
* @className JSSDKConfigurator
|
||||||
* @author jy
|
* @author jy
|
||||||
@ -30,7 +30,7 @@ public class JSSDKConfigurator {
|
|||||||
private Set<JSSDKAPI> apis;
|
private Set<JSSDKAPI> apis;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ticket保存类 可调用WeixinProxy#getJSTicketHolder获取
|
* ticket保存类 可调用WeixinProxy#getTicketHolder获取
|
||||||
*
|
*
|
||||||
* @param ticketTokenHolder
|
* @param ticketTokenHolder
|
||||||
*/
|
*/
|
||||||
@ -93,7 +93,7 @@ public class JSSDKConfigurator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成config字符串
|
* 生成config配置JSON串
|
||||||
*
|
*
|
||||||
* @param url
|
* @param url
|
||||||
* 当前网页的URL,不包含#及其后面部分
|
* 当前网页的URL,不包含#及其后面部分
|
||||||
|
|||||||
@ -160,7 +160,7 @@ public class WeixinProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取JSSDK的tokenHolder
|
* 获取JSSDK JSTicket的tokenHolder
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -40,9 +40,11 @@ import com.foxinmy.weixin4j.qy.model.Party;
|
|||||||
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.qy.suite.WeixinTokenSuiteCreator;
|
import com.foxinmy.weixin4j.qy.suite.WeixinTokenSuiteCreator;
|
||||||
|
import com.foxinmy.weixin4j.qy.token.WeixinTicketCreator;
|
||||||
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
|
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
|
||||||
import com.foxinmy.weixin4j.qy.type.ChatType;
|
import com.foxinmy.weixin4j.qy.type.ChatType;
|
||||||
import com.foxinmy.weixin4j.qy.type.InviteType;
|
import com.foxinmy.weixin4j.qy.type.InviteType;
|
||||||
|
import com.foxinmy.weixin4j.qy.type.TicketType;
|
||||||
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.token.TokenStorager;
|
import com.foxinmy.weixin4j.token.TokenStorager;
|
||||||
@ -162,15 +164,15 @@ public class WeixinProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取JSSDK的tokenHolder
|
* 获取JSSDK Ticket的tokenHolder
|
||||||
*
|
*
|
||||||
|
* @param ticketType
|
||||||
|
* 票据类型
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public TokenHolder getJSTicketHolder() {
|
public TokenHolder getTicketHolder(TicketType ticketType) {
|
||||||
return new TokenHolder(
|
return new TokenHolder(new WeixinTicketCreator(this.corpId, ticketType,
|
||||||
new com.foxinmy.weixin4j.qy.token.WeixinJSTicketCreator(
|
this.tokenHolder), this.tokenHolder.getTokenStorager());
|
||||||
this.corpId, this.tokenHolder),
|
|
||||||
this.tokenHolder.getTokenStorager());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -0,0 +1,199 @@
|
|||||||
|
package com.foxinmy.weixin4j.qy.jssdk;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
|
import com.foxinmy.weixin4j.model.Token;
|
||||||
|
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||||
|
import com.foxinmy.weixin4j.util.DateUtil;
|
||||||
|
import com.foxinmy.weixin4j.util.DigestUtil;
|
||||||
|
import com.foxinmy.weixin4j.util.MapUtil;
|
||||||
|
import com.foxinmy.weixin4j.util.RandomUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSSDK联系人筛选配置
|
||||||
|
*
|
||||||
|
* @className JSSDKContactConfigurator
|
||||||
|
* @author jy
|
||||||
|
* @date 2015年12月25日
|
||||||
|
* @since JDK 1.7
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
public class JSSDKContactConfigurator {
|
||||||
|
private final TokenHolder ticketTokenHolder;
|
||||||
|
private JSSDKContactParameter contactParameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ticket保存类 可调用WeixinProxy#getTicketHolder获取
|
||||||
|
*
|
||||||
|
* @param ticketTokenHolder
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator(TokenHolder ticketTokenHolder) {
|
||||||
|
this.ticketTokenHolder = ticketTokenHolder;
|
||||||
|
this.contactParameter = new JSSDKContactParameter();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可选范围:部门ID列表(如果departmentIds为0则表示显示管理组下所有部门)
|
||||||
|
*
|
||||||
|
* @param departmentIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator departmentIds(Integer... departmentIds) {
|
||||||
|
contactParameter.putDepartmentIds(departmentIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可选范围:标签ID列表(如果tagIds为0则表示显示所有标签)
|
||||||
|
*
|
||||||
|
* @param tagIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator tagIds(Integer... tagIds) {
|
||||||
|
contactParameter.putTagIds(tagIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可选范围:用户ID列表
|
||||||
|
*
|
||||||
|
* @param userIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator userIds(String... userIds) {
|
||||||
|
contactParameter.putUserIds(userIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单选模式
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator singleMode() {
|
||||||
|
contactParameter.setMode("single");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 多选模式
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator multiMode() {
|
||||||
|
contactParameter.setMode("multi");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限制部门
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator limitDepartment() {
|
||||||
|
contactParameter.putLimitType("department");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限制标签
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator limitTag() {
|
||||||
|
contactParameter.putLimitType("tag");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限制用户
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator limitUser() {
|
||||||
|
contactParameter.putLimitType("user");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已选部门ID
|
||||||
|
*
|
||||||
|
* @param selectedDepartmentIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator selectedDepartmentIds(
|
||||||
|
Integer... selectedDepartmentIds) {
|
||||||
|
contactParameter.putSelectedDepartmentIds(selectedDepartmentIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已选标签ID
|
||||||
|
*
|
||||||
|
* @param selectedTagIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator selectedTagIds(Integer... selectedTagIds) {
|
||||||
|
contactParameter.putSelectedTagIds(selectedTagIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已选用户ID
|
||||||
|
*
|
||||||
|
* @param selectedUserIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSSDKContactConfigurator selectedUserIds(String... selectedUserIds) {
|
||||||
|
contactParameter.putSelectedUserIds(selectedUserIds);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成config配置JSON串
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* 当前网页的URL,不包含#及其后面部分
|
||||||
|
* @return
|
||||||
|
* @throws WeixinException
|
||||||
|
*/
|
||||||
|
public String toJSONConfig(String url) throws WeixinException {
|
||||||
|
return toJSONConfig(url, contactParameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成config配置JSON串
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* 当前网页的URL,不包含#及其后面部分
|
||||||
|
* @param parameter
|
||||||
|
* 自定义传入参数对象
|
||||||
|
* @return
|
||||||
|
* @throws WeixinException
|
||||||
|
*/
|
||||||
|
public String toJSONConfig(String url, JSSDKContactParameter parameter)
|
||||||
|
throws WeixinException {
|
||||||
|
Map<String, String> signMap = new HashMap<String, String>();
|
||||||
|
String timestamp = DateUtil.timestamp2string();
|
||||||
|
String noncestr = RandomUtil.generateString(24);
|
||||||
|
Token token = this.ticketTokenHolder.getToken();
|
||||||
|
signMap.put("timestamp", timestamp);
|
||||||
|
signMap.put("nonceStr", noncestr);
|
||||||
|
signMap.put("group_ticket", token.getAccessToken());
|
||||||
|
signMap.put("url", url);
|
||||||
|
String sign = DigestUtil.SHA1(MapUtil
|
||||||
|
.toJoinString(signMap, false, true));
|
||||||
|
JSONObject config = new JSONObject();
|
||||||
|
config.put("signature", sign);
|
||||||
|
config.put("groupId", JSON.parseObject(token.getOriginalResult())
|
||||||
|
.getString("group_id"));
|
||||||
|
config.put("timestamp", timestamp);
|
||||||
|
config.put("noncestr", noncestr);
|
||||||
|
config.put("params", parameter);
|
||||||
|
return config.toJSONString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
package com.foxinmy.weixin4j.qy.jssdk;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.foxinmy.weixin4j.qy.model.IdParameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSSDK联系人筛选参数
|
||||||
|
*
|
||||||
|
* @className JSSDKContactParameter
|
||||||
|
* @author jy
|
||||||
|
* @date 2015年12月25日
|
||||||
|
* @since JDK 1.6
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
public class JSSDKContactParameter extends IdParameter {
|
||||||
|
private static final long serialVersionUID = 1863797419140279996L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选择模式 single/multi
|
||||||
|
*/
|
||||||
|
private String mode;
|
||||||
|
/**
|
||||||
|
* 选择限制类型 department/tag/user
|
||||||
|
*/
|
||||||
|
@JSONField(name = "type")
|
||||||
|
private List<String> limitTypes;
|
||||||
|
/**
|
||||||
|
* 已选用户ID
|
||||||
|
*/
|
||||||
|
private List<String> selectedUserIds;
|
||||||
|
/**
|
||||||
|
* 已选部门ID
|
||||||
|
*/
|
||||||
|
private List<Integer> selectedDepartmentIds;
|
||||||
|
/**
|
||||||
|
* 已选标签ID
|
||||||
|
*/
|
||||||
|
private List<Integer> selectedTagIds;
|
||||||
|
|
||||||
|
public JSSDKContactParameter() {
|
||||||
|
super();
|
||||||
|
this.selectedUserIds = new ArrayList<String>();
|
||||||
|
this.selectedTagIds = new ArrayList<Integer>();
|
||||||
|
this.selectedDepartmentIds = new ArrayList<Integer>();
|
||||||
|
this.limitTypes = new ArrayList<String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMode() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMode(String mode) {
|
||||||
|
this.mode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getLimitTypes() {
|
||||||
|
return limitTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLimitTypes(List<String> limitTypes) {
|
||||||
|
this.limitTypes = limitTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putLimitType(String type) {
|
||||||
|
this.limitTypes.add(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getSelectedUserIds() {
|
||||||
|
return selectedUserIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedUserIds(List<String> selectedUserIds) {
|
||||||
|
this.selectedUserIds = selectedUserIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putSelectedUserIds(String... selectedUserIds) {
|
||||||
|
this.selectedUserIds.addAll(Arrays.asList(selectedUserIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getSelectedDepartmentIds() {
|
||||||
|
return selectedDepartmentIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedDepartmentIds(List<Integer> selectedDepartmentIds) {
|
||||||
|
this.selectedDepartmentIds = selectedDepartmentIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putSelectedDepartmentIds(Integer... selectedDepartmentIds) {
|
||||||
|
this.selectedDepartmentIds.addAll(Arrays.asList(selectedDepartmentIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getSelectedTagIds() {
|
||||||
|
return selectedTagIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedTagIds(List<Integer> selectedTagIds) {
|
||||||
|
this.selectedTagIds = selectedTagIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putSelectedTagIds(Integer... selectedTagIds) {
|
||||||
|
this.selectedTagIds.addAll(Arrays.asList(selectedTagIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "JSSDKContactParameter [mode=" + mode + ", limitTypes="
|
||||||
|
+ limitTypes + ", selectedUserIds=" + selectedUserIds
|
||||||
|
+ ", selectedDepartmentIds=" + selectedDepartmentIds
|
||||||
|
+ ", selectedTagIds=" + selectedTagIds + ", "
|
||||||
|
+ super.toString() + "]";
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -48,7 +48,7 @@ public class NotifyMessage implements Serializable {
|
|||||||
private IdParameter target;
|
private IdParameter target;
|
||||||
|
|
||||||
public NotifyMessage(int agentid, NotifyTuple tuple) {
|
public NotifyMessage(int agentid, NotifyTuple tuple) {
|
||||||
this(agentid, tuple, IdParameter.get(), false);
|
this(agentid, tuple, new IdParameter(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NotifyMessage(int agentId, NotifyTuple tuple, IdParameter target,
|
public NotifyMessage(int agentId, NotifyTuple tuple, IdParameter target,
|
||||||
|
|||||||
@ -25,19 +25,15 @@ public class IdParameter implements Serializable {
|
|||||||
private static final char SEPARATOR = '|';
|
private static final char SEPARATOR = '|';
|
||||||
|
|
||||||
private List<String> userIds;
|
private List<String> userIds;
|
||||||
private List<Integer> partyIds;
|
private List<Integer> departmentIds;
|
||||||
private List<Integer> tagIds;
|
private List<Integer> tagIds;
|
||||||
|
|
||||||
private IdParameter() {
|
public IdParameter() {
|
||||||
this.userIds = new ArrayList<String>();
|
this.userIds = new ArrayList<String>();
|
||||||
this.partyIds = new ArrayList<Integer>();
|
this.departmentIds = new ArrayList<Integer>();
|
||||||
this.tagIds = new ArrayList<Integer>();
|
this.tagIds = new ArrayList<Integer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IdParameter get() {
|
|
||||||
return new IdParameter();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加成员ID列表,最多支持1000个
|
* 增加成员ID列表,最多支持1000个
|
||||||
*
|
*
|
||||||
@ -63,22 +59,22 @@ public class IdParameter implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 新增部门ID列表,最多支持100个
|
* 新增部门ID列表,最多支持100个
|
||||||
*
|
*
|
||||||
* @param partyIds
|
* @param departmentIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public IdParameter putPartyIds(Integer... partyIds) {
|
public IdParameter putDepartmentIds(Integer... departmentIds) {
|
||||||
this.partyIds.addAll(Arrays.asList(partyIds));
|
this.departmentIds.addAll(Arrays.asList(departmentIds));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置部门ID列表,最多支持100个
|
* 设置部门ID列表,最多支持100个
|
||||||
*
|
*
|
||||||
* @param partyIds
|
* @param departmentIds
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public IdParameter setPartyIds(List<Integer> partyIds) {
|
public IdParameter setDepartmentIds(List<Integer> departmentIds) {
|
||||||
this.partyIds = partyIds;
|
this.departmentIds = departmentIds;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,12 +110,18 @@ public class IdParameter implements Serializable {
|
|||||||
if (userIds != null && !userIds.isEmpty()) {
|
if (userIds != null && !userIds.isEmpty()) {
|
||||||
parameterMap.put("touser", StringUtil.join(userIds, SEPARATOR));
|
parameterMap.put("touser", StringUtil.join(userIds, SEPARATOR));
|
||||||
}
|
}
|
||||||
if (partyIds != null && !partyIds.isEmpty()) {
|
if (departmentIds != null && !departmentIds.isEmpty()) {
|
||||||
parameterMap.put("toparty", StringUtil.join(partyIds, SEPARATOR));
|
parameterMap.put("toparty", StringUtil.join(departmentIds, SEPARATOR));
|
||||||
}
|
}
|
||||||
if (tagIds != null && !tagIds.isEmpty()) {
|
if (tagIds != null && !tagIds.isEmpty()) {
|
||||||
parameterMap.put("totag", StringUtil.join(tagIds, SEPARATOR));
|
parameterMap.put("totag", StringUtil.join(tagIds, SEPARATOR));
|
||||||
}
|
}
|
||||||
return parameterMap;
|
return parameterMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "IdParameter [userIds=" + userIds + ", departmentIds="
|
||||||
|
+ departmentIds + ", tagIds=" + tagIds + "]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,50 +5,60 @@ import com.foxinmy.weixin4j.exception.WeixinException;
|
|||||||
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
|
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
|
||||||
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.type.TicketType;
|
||||||
import com.foxinmy.weixin4j.qy.type.URLConsts;
|
import com.foxinmy.weixin4j.qy.type.URLConsts;
|
||||||
import com.foxinmy.weixin4j.token.TokenCreator;
|
import com.foxinmy.weixin4j.token.TokenCreator;
|
||||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信企业号JSTICKET创建
|
* 微信企业号TICKET创建(包括jsticket、其它JSSDK所需的ticket的创建
|
||||||
*
|
*
|
||||||
* @className WeixinJSTicketCreator
|
* @className WeixinTicketCreator
|
||||||
* @author jy
|
* @author jy
|
||||||
* @date 2015年1月10日
|
* @date 2015年12月25日
|
||||||
* @since JDK 1.6
|
* @since JDK 1.6
|
||||||
* @see <a
|
*
|
||||||
* href="http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95">JS
|
|
||||||
* TICKET</a>
|
|
||||||
*/
|
*/
|
||||||
public class WeixinJSTicketCreator implements TokenCreator {
|
public class WeixinTicketCreator implements TokenCreator {
|
||||||
|
|
||||||
private final String corpid;
|
private final String corpid;
|
||||||
|
private final TicketType ticketType;
|
||||||
private final TokenHolder weixinTokenHolder;
|
private final TokenHolder weixinTokenHolder;
|
||||||
private final WeixinRequestExecutor weixinExecutor;
|
private final WeixinRequestExecutor weixinExecutor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param corpid
|
* @param corpid
|
||||||
* 企业号ID
|
* 企业号ID
|
||||||
|
* @param ticketType
|
||||||
|
* 票据类型
|
||||||
* @param weixinTokenHolder
|
* @param weixinTokenHolder
|
||||||
* <font color="red">企业号的的access_token</font>
|
* <font color="red">企业号的的access_token</font>
|
||||||
*/
|
*/
|
||||||
public WeixinJSTicketCreator(String corpid, TokenHolder weixinTokenHolder) {
|
public WeixinTicketCreator(String corpid, TicketType ticketType,
|
||||||
|
TokenHolder weixinTokenHolder) {
|
||||||
this.corpid = corpid;
|
this.corpid = corpid;
|
||||||
|
this.ticketType = ticketType;
|
||||||
this.weixinTokenHolder = weixinTokenHolder;
|
this.weixinTokenHolder = weixinTokenHolder;
|
||||||
this.weixinExecutor = new WeixinRequestExecutor();
|
this.weixinExecutor = new WeixinRequestExecutor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getCacheKey() {
|
public String getCacheKey() {
|
||||||
return String.format("wx_qy_jsticket_%s", corpid);
|
return String.format("wx_qy_ticket_%s_%s", corpid, ticketType.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Token createToken() throws WeixinException {
|
public Token createToken() throws WeixinException {
|
||||||
WeixinResponse response = weixinExecutor.get(String.format(
|
WeixinResponse response = null;
|
||||||
|
if (ticketType == TicketType.jsticket) {
|
||||||
|
response = weixinExecutor.get(String.format(
|
||||||
URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken()
|
URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken()
|
||||||
.getAccessToken()));
|
.getAccessToken()));
|
||||||
|
} else {
|
||||||
|
response = weixinExecutor.get(String.format(URLConsts.TICKET_URL,
|
||||||
|
weixinTokenHolder.getToken().getAccessToken(),
|
||||||
|
ticketType.name()));
|
||||||
|
}
|
||||||
JSONObject result = response.getAsJson();
|
JSONObject result = response.getAsJson();
|
||||||
Token token = new Token(result.getString("ticket"));
|
Token token = new Token(result.getString("ticket"));
|
||||||
token.setExpiresIn(result.getIntValue("expires_in"));
|
token.setExpiresIn(result.getIntValue("expires_in"));
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.foxinmy.weixin4j.qy.type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 票据类型
|
||||||
|
*
|
||||||
|
* @className TicketType
|
||||||
|
* @author jy
|
||||||
|
* @date 2015年12月25日
|
||||||
|
* @since JDK 1.7
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
public enum TicketType {
|
||||||
|
/**
|
||||||
|
* jsticket
|
||||||
|
*/
|
||||||
|
jsticket,
|
||||||
|
/**
|
||||||
|
* 选取联系人
|
||||||
|
*/
|
||||||
|
contact;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user