RightService.class.php 2.52 KB
<?php
/**
 * 试卷-权限表
 * @author: houyingcai
 * @email:  594609175@qq.com
 * @date :  2017-05-19 17:50:52
 */

namespace Common\Service;

use Common\Common\Department;
use Common\Common\Job;
use Common\Common\Role;
use Common\Common\Tag;
use Common\Common\User;
use Common\Model\RightModel;

class RightService extends AbstractService
{

    // 构造方法
    public function __construct()
    {
        $this->_d = new RightModel();

        parent::__construct();
    }


    /**
     * 获取当前用户的标签,部门,岗位,用户ID
     *
     * @author 英才
     *
     * @param array $user 传入当前用户信息
     *
     * @return array
     */
    public function get_by_right($user = [])
    {
        // 获取用户所在部门ID以及上级部门ID
        $dpIds = $this->get_user_dp_list($user);

        // 获取用户岗位ID
        $job_ids = [];
        if (!empty($user['job']['jobId'])) {

            $job_ids = $user['job']['jobId'];
        }

        // 获取用户角色ID
        $role_ids = [];
        if (!empty($user['role']['roleId'])) {

            $role_ids = $user['role']['roleId'];
        }

        // 获取用户标签ID
        $tagIds = [];
        $tagsInfo = User::instance()->getTagsByUserId($user['memUid']);
        if (!empty($tagsInfo)) {
            $userTagInfo = isset($tagsInfo['userTagList']) ? array_column($tagsInfo['userTagList'], 'tagId') : [];
            $departTagInfo = isset($tagsInfo['departTagList']) ? array_column($tagsInfo['departTagList'], 'tagId') : [];
            $tagIds = array_unique(array_merge($userTagInfo, $departTagInfo));
        }

        return [
            'memID' => $user['memUid'],
            'dpIds' => $dpIds,
            'jobIds' => $job_ids,
            'roleIds' => $role_ids,
            'tagIds' => $tagIds
        ];
    }


    /**
     * 获取用户所在部门以及父级部门的ID集合
     *
     * @param array $user
     *
     * @return array
     */
    private function get_user_dp_list($user = [])
    {
        $dpIds = [];
        // 部门ID
        if (isset($user['dpName']) && !empty($user['dpName'])) {

            $myDpIds = array_column($user['dpName'], 'dpId');

            $dpServ = &Department::instance();
            $parentDpIds = [];

            // 取父级部门ID
            foreach ($myDpIds as $myDpId) {
                $dpServ->list_parent_cdids($myDpId, $parentDpIds);
            }

            $dpIds = array_unique(array_merge($myDpIds, array_values($parentDpIds)));
        }

        return $dpIds;
    }

}