AuthorityModel.class.php 2.35 KB
<?php

namespace Common\Model;

class AuthorityModel extends AbstractModel
{
    // 手机端可见范围 人员
    const AUTHORITY_ID_TYPE_MEMBER = 1;
    // 手机端可见范围 角色
    const AUTHORITY_ID_TYPE_ROLE = 2;
    // 手机端可见范围 岗位
    const AUTHORITY_ID_TYPE_JOB = 3;
    // 手机端可见范围
    const AUTHORITY_ID_TYPE = [
        self::AUTHORITY_ID_TYPE_MEMBER,
        self::AUTHORITY_ID_TYPE_JOB,
        self::AUTHORITY_ID_TYPE_ROLE,
    ];

    // 构造方法
    public function __construct()
    {

        parent::__construct();
    }

    public function getPermissionScopeWithAuthorityId($authorityId, $apIds, $rankFilter)
    {
        $sql = "SELECT * FROM 
                oa_assistant_authority AS aa LEFT JOIN oa_assistant_authority_main as am
                ON aa.am_id = am.am_id
                WHERE 
                  aa.authority_id IN (?) AND
                  aa.status < ? AND 
                  aa.domain = ? AND 
                  am.status < ? AND 
                  am.visible_range_type = ? AND
                  am.domain = ?";
        $conds = [
            $authorityId,
            self::ST_DELETE,
            QY_DOMAIN,
            self::ST_DELETE,
            $rankFilter,
            QY_DOMAIN,
        ];

        if (!empty($apIds)) {
            $sql .= " AND am.ap_id IN (?)";
            $conds[] = $apIds;
        }

        return $this->_m->fetch_array($sql, $conds);
    }

    /**
     * 根据当前 排名筛选类型 查询权限对象
     * @param $authorityId
     * @param $visibleRangeType
     * @return array
     */
    public function listAuthorityWithVisibleRangeType($authorityId, $visibleRangeType)
    {
        $sql = "SELECT * FROM 
                oa_assistant_authority AS aa LEFT JOIN oa_assistant_authority_main AS am
                ON aa.am_id = am.am_id 
                WHERE 
                  aa.authority_id IN (?) AND
                  aa.status < ? AND 
                  aa.domain = ? AND 
                  am.status < ? AND 
                  am.domain = ? AND 
                  am.visible_range_type IN (?)";

        return $this->_m->fetch_array($sql, [
            $authorityId,
            self::ST_DELETE,
            QY_DOMAIN,
            self::ST_DELETE,
            QY_DOMAIN,
            [$visibleRangeType, AuthorityMainModel::VISIBLE_RANGE_TYPE_DEFAULT]
        ]);
    }
}