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

自此,企业授权回调结束。

经验分享 程序员 微信小程序 职场和发展