企业微信开发(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