AbstractController.class.php 7.76 KB
<?php
/**
 * 配置操作基类
 * User: zs_anything
 * Date: 17/06/28
 * Time: 11:50
 * @reader zs_anything 2017-06-29
 */

namespace Apicp\Controller;

use Common\Common\Department;
use Common\Common\Job;
use Common\Common\Role;
use Common\Common\User;
use Common\Model\InviteSettingModel;

abstract class AbstractController extends \Common\Controller\Apicp\AbstractController
{
    /**
     * 是否需要检查付费
     * @var bool
     */
    protected $needCheckThePayment = false;

    /**
     * 过滤已不存在的有管理或邀请权限的组织
     * @param $dpIds
     * @param $dpInfoList  Array 选人组件的数据结构
     *   array
     *     '62C36A687F0000017AE8E6AC139A18BF' =>
     *        array (size=7)
     *          'id' => string '62C36A687F0000017AE8E6AC139A18BF' (length=32)
     *          'name' => string '部门1' (length=6)
     *          'flag' => string '1' (length=1)
     *          '$$hashKey' => string 'object:1655' (length=11)
     * @return array
     */
    private function filterNonExistAuthDp($dpIds, $dpInfoList)
    {
        $dpUtil = new Department();
        $dpList = $dpUtil->listById($dpIds);

        $existDpIds = [];
        $existDpInfoList = [];
        foreach ($dpList as $dp) {
            // 角色存在, 更新角色的名称
            if (!empty($dpInfoList[$dp['dpId']])) {
                $existDp = $dpInfoList[$dp['dpId']];
                $existDp['name'] = $dp['dpName'];
                $existDpInfoList[] = $existDp;
                $existDpIds[] = $dp['dpId'];
            }
        }

        return array($existDpIds, $existDpInfoList);
    }


    /**
     * 过滤已不存在的有管理或邀请权限的员工
     * @param $memUids
     * @param $memInfoList Array 选人组件的数据结构
     *   array
     *     'B5940BF7F00000171F5B23294888B03' =>
     *        array (size=7)
     *          'id' => string '0B5940BF7F00000171F5B23294888B03' (length=32)
     *          'name' => string '刘洋' (length=6)
     *          'flag' => string '3' (length=1)
     *          'face' => string 'http://p.qlogo.cn/bizmail/qMUoXJHL8eq3AlVnMPLqudxa04dO5iaxLuyIHdDVSkBOb2RolzYj9yQ/0' (length=83)
     *          'mobile' => string '13818801804' (length=11)
     *          'email' => string '' (length=0)
     *          '$$hashKey' => string 'object:1655' (length=11)
     * @return array
     */
    private function filterNonExistAuthUsers($memUids, $memInfoList)
    {
        $userUtil = new User();
        $memList = $userUtil->listByUid($memUids);

        $existMemUids = [];
        $existMemInfoList = [];
        foreach ($memList as $user) {
            // 用户存在, 更新用户的名称和头像
            if (!empty($memInfoList[$user['memUid']])) {
                $existUser = $memInfoList[$user['memUid']];
                $existUser['name'] = $user['memUsername'];
                $existUser['face'] = $user['memFace'];
                $existMemInfoList[] = $existUser;
                $existMemUids[] = $user['memUid'];
            }
        }

        return array($existMemUids, $existMemInfoList);
    }

    /**
     * 过滤已不存在的有管理或邀请权限的岗位
     * @param $JobIds
     * @param $JobInfoList  Array 选人组件的数据结构
     *   array
     *     '774F22E47F00000122B61981702BB114' =>
     *        array (size=7)
     *          'id' => string '0F22E47F00000122B61981702BB114' (length=32)
     *          'name' => string '测试' (length=6)
     *          'flag' => string '5' (length=1)
     *          '$$hashKey' => string 'object:1655' (length=11)
     * @return array
     */
    private function filterNonExistAuthJob($JobIds, $JobInfoList)
    {
        $jobUtil = new Job();
        $jobList = $jobUtil->listById($JobIds);

        $existJobIds = [];
        $existJobInfoList = [];
        foreach ($jobList as $job) {

            // 岗位存在, 更新岗位的名称
            if (!empty($JobInfoList[$job['jobId']])) {
                $existJob = $JobInfoList[$job['jobId']];
                $existJob['name'] = $job['jobName'];
                $existJobInfoList[] = $existJob;
                $existJobIds[] = $job['jobId'];
            }
        }

        return array($existJobIds, $existJobInfoList);
    }

    /**
     * 过滤已不存在的有管理或邀请权限的角色
     * @param $roleIds
     * @param $roleInfoList  Array 选人组件的数据结构
     *   array
     *     '62C36A687F0000017AE8E6AC139A18BF' =>
     *        array (size=7)
     *          'id' => string '62C36A687F0000017AE8E6AC139A18BF' (length=32)
     *          'name' => string '司机' (length=6)
     *          'flag' => string '6' (length=1)
     *          '$$hashKey' => string 'object:1655' (length=11)
     * @return array
     */
    private function filterNonExistAuthRole($roleIds, $roleInfoList)
    {
        $roleUtil = new Role();
        $roleList = $roleUtil->listById($roleIds);

        $existRoleIds = [];
        $existRoleInfoList = [];
        foreach ($roleList as $role) {
            // 角色存在, 更新角色的名称
            if (!empty($roleInfoList[$role['roleId']])) {
                $existRole = $roleInfoList[$role['roleId']];
                $existRole['name'] = $role['roleName'];
                $existRoleInfoList[] = $existRole;
                $existRoleIds[] = $role['roleId'];
            }
        }

        return array($existRoleIds, $existRoleInfoList);
    }

    /**
     * 过滤不存在的授权对象 (邀请设置,管理设置)
     * @param $authTargets
     * @return mixed
     */
    protected function filterNonExistAuthTarget($authTargets)
    {

        // 有管理或邀请权限的组织
        $authInviteDps = [];
        $authInviteDpIds = [];

        // 有管理或邀请权限的员工
        $authInviteUsers = [];
        $authInviteUids = [];

        // 有管理或邀请权限的岗位
        $authInviteJobs = [];
        $authInviteJobIds = [];

        // 有管理或邀请权限的角色
        $authInviteRoles = [];
        $authInviteRoleIds = [];

        foreach ($authTargets as $authInvite) {

            // 组织
            if ($authInvite['flag'] == InviteSettingModel::CHOOSEPERSON_COMPONENT_FLAG_DP) {
                $authInviteDps[$authInvite['id']] = $authInvite;
                $authInviteDpIds[] = $authInvite['id'];
            } else if ($authInvite['flag'] == InviteSettingModel::CHOOSEPERSON_COMPONENT_FLAG_USER) {
                // 员工
                $authInviteUsers[$authInvite['id']] = $authInvite;
                $authInviteUids[] = $authInvite['id'];
            } else if ($authInvite['flag'] == InviteSettingModel::CHOOSEPERSON_COMPONENT_FLAG_JOB) {
                // 岗位
                $authInviteJobs[$authInvite['id']] = $authInvite;
                $authInviteJobIds[] = $authInvite['id'];
            } else if ($authInvite['flag'] == InviteSettingModel::CHOOSEPERSON_COMPONENT_FLAG_ROLE) {
                // 角色
                $authInviteRoles[$authInvite['id']] = $authInvite;
                $authInviteRoleIds[] = $authInvite['id'];
            }
        }

        list($authInviteDpIds, $authInviteDps) = $this->filterNonExistAuthDp($authInviteDpIds, $authInviteDps);
        list($authInviteUids, $authInviteUsers) = $this->filterNonExistAuthUsers($authInviteUids, $authInviteUsers);
        list($authInviteJobIds, $authInviteJobs) = $this->filterNonExistAuthJob($authInviteJobIds, $authInviteJobs);
        list($authInviteRoleIds, $authInviteRoles) = $this->filterNonExistAuthRole($authInviteRoleIds, $authInviteRoles);

        $existAuthIds = array_merge($authInviteDpIds, $authInviteUids, $authInviteJobIds, $authInviteRoleIds);
        $existAuthInfoList = array_merge($authInviteDps, $authInviteUsers, $authInviteJobs, $authInviteRoles);

        return array($existAuthIds, $existAuthInfoList);
    }

}