AbstractController.class.php 2.15 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei
 * Date: 16/9/13
 * Time: 下午14:10
 */

namespace Api\Controller;


use Common\Common\Help;
use \Common\Controller\Api\AbstractController as BaseAbstractController;
use Common\Service\RightService;
use Common\Service\SettingService;

abstract class AbstractController extends BaseAbstractController
{

    // 默认显示条数
    const DEFAULT_LIMIT = 15;

    public function before_action($action = '')
    {
        if (!parent::before_action($action)) {

            return false;
        }

        // 初始化配置
        $setting = new SettingService();

        // 读取应用配置信息
        $this->_setting = $setting->Setting();

        return true;
    }

    /**
     * 验证是否有查看问题权限
     * @param array $topic_info
     * @return bool
     */
    protected function is_look_topic_auth($user, $topic_info = [])
    {

        $is_look = false;
        // 如果不是全公司
        if (empty($topic_info['is_all'])) {

            // 获取权限列表
            $right_ser = new RightService();
            $right_list = $right_ser->list_by_conds(['circle_id' => $topic_info['id']]);
            // 获取权限中的部门ID集合
            $right_dp_ids = array_column($right_list, 'cd_id');
            $my_dp_ids = Help::instance()->get_user_dp_list($this->_login->user);
            if (array_intersect($right_dp_ids, $my_dp_ids)) {
                $is_look = true;
            }

            // 获取人员
            $right_uid_ids = array_column($right_list, 'uid');
            if (in_array($user['memUid'], $right_uid_ids)) {
                $is_look = true;
            }

            // 获取角色
            $right_job_ids = array_column($right_list, 'job_id');
            if (in_array($user['job']['jobId'], $right_job_ids)) {
                $is_look = true;
            }

            // 获取岗位
            $right_role_ids = array_column($right_list, 'role_id');
            if (in_array($user['role']['roleId'], $right_role_ids)) {
                $is_look = true;
            }
        }else{
            $is_look = true;
        }

        return $is_look;
    }


}