企业微信开发(2)——授权安装应用回调
一、前言
前提:第三方服务商已注册并安装第三方应用,并且在第三方应用已经配置回调,且第三方的回调服务地址可用。本节介绍应用授权安装后回调逻辑,变更应用可见性回调逻辑,外部联系人回调逻辑,
二、授权回调
permanent_code和corpid等相关信息做保存 这里需要将应用可见人、可见部门、可见标签都存起来,方便日后成员变更时用 相关代码如下:
/**
* 保存可见人员数据到im_cp_allow_user表
*
* @param
* @return
*/
private Set<String> addAllowUser(String corpId, JSONArray allowUserArray, JSONArray allowPartyArray, JSONArray allowTagArray) {
//1、可见人员集合(非部门和标签内的可见人员)
Set<String> allowUserSet = new HashSet<>();
if (allowUserArray.size() > 0) {
log.info("应用可见的人员allowUserArray==" + allowUserArray);
Object[] allowUserObject = allowUserArray.toArray();
for (int i = 0; i < allowUserObject.length; i++) {
String allowUser = (String) allowUserObject[i];
log.info("可见人员allowUser==" + allowUser);
allowUserSet.add(allowUser);
}
}
log.info("非部门和标签内的可见人员allowUserSet==" + allowUserSet);
//2、可见人员集合(部门内的可见人员)
Set<String> partysUserIdSet = new HashSet<>();
//遍历可见部门,获取可见部门成员
if (allowPartyArray.size() > 0) {
log.info("应用可见部门allowPartyArray==" + allowPartyArray);
Object[] allowPartyObject = allowPartyArray.toArray();
for (int i = 0; i < allowPartyObject.length; i++) {
//可见部门id
int allowPartyId = (int) allowPartyObject[i];
log.info("可见部门id,allowPartyId==" + allowPartyId);
//根据部门id获取该部门成员的userid的set集合
Set<String> partyUserIdSet = getPartyUserIdSet(corpId, allowPartyId);
log.info("partyUserIdSet==" + partyUserIdSet);
partysUserIdSet.addAll(partyUserIdSet);
}
}
log.info("部门内的可见人员集合partysUserIdSet==" + partysUserIdSet);
//3、可见人员集合(标签内的可见人员)
Set<String> tagsUserIdSet = new HashSet<>();
//遍历可见标签,获取可见标签成员
if (allowTagArray.size() > 0) {
log.info("应用可见标签allowTagArray==" + allowTagArray);
Object[] allowTagObject = allowTagArray.toArray();
for (int i = 0; i < allowTagObject.length; i++) {
//可见标签id
int allowTagId = (int) allowTagObject[i];
log.info("可见标签id,allowPartyId==" + allowTagId);
//根据标签id获取该标签内成员的userid的set集合
Set<String> tagUserIdSet = getTagUserIdSet(corpId, allowTagId);
log.info("tagUserIdSet==" + tagUserIdSet);
tagsUserIdSet.addAll(tagUserIdSet);
}
}
log.info("标签内的可见人员集合tagsUserIdSet==" + tagsUserIdSet);
//总的可见人员集合,包含allow_user、allow_tag、allow_party的可见人员
Set<String> allowUsersSet = new HashSet<>();
allowUsersSet.addAll(allowUserSet);
allowUsersSet.addAll(partysUserIdSet);
allowUsersSet.addAll(tagsUserIdSet);
log.info("总的可见人员集合allowUsersSet==" + allowUsersSet);
//CpAllowUser集合
List<CpAllowUser> cpAllowUserList = new ArrayList<>();
//遍历
for (String allowUserId : allowUsersSet) {
CpAllowUser cpAllowUser = new CpAllowUser()
.setCorpId(corpId).setAllowUserId(allowUserId);
cpAllowUserList.add(cpAllowUser);
}
log.info("CpAllowUser集合cpAllowUserList==" + cpAllowUserList);
//批量插入数据
cpAllowUserService.saveBatch(cpAllowUserList);
log.info("批量插入cpAllowUserList数据成功!");
return allowUsersSet;
}
自此,企业授权回调结束。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
SpringCloud系列-集成Zuul
