12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\Model;
- use App\Service\RangeService;
- use Illuminate\Database\Eloquent\Model;
- class UseScopeBaseModel extends Model
- {
- //可见范围
- const range_function = '';
- const is_check_function = '';
- public function __construct(array $attributes = [])
- {
- parent::__construct($attributes);
- }
- public function scopeKqClear($query, $user, $search)
- {
- //权限范围内的人
- $man_range = $user['man_range'] ?? [];
- $man_number = array_unique(array_column($man_range,'number'));
- //个人部门所有
- $auth_type = $this->getQx($search,$user);
- if($auth_type <= 0){
- //不需要分个人部门所有的数据
- if($auth_type == 0) $query->whereIn('number', $man_number);
- }else{
- if($auth_type == 1) { //我的
- $query->where('number',$user['number']);
- }elseif ($auth_type == 2){
- //自己权限范围内的部门
- $query->whereIn('number', $man_number);
- }
- }
- }
- public function scopeManClear($query, $user, $search)
- {
- //权限范围内的人
- $man_range = $user['man_range'] ?? [];
- $man_number = array_unique(array_column($man_range,'number'));
- //个人部门所有
- $auth_type = $this->getQx($search,$user);
- if($auth_type <= 0){
- //不需要分个人部门所有的数据
- if($auth_type == 0) $query->where('number', $user['number']);
- }else{
- if($auth_type == 1) { //我的
- $query->where('number',$user['number']);
- }elseif ($auth_type == 2){
- //自己权限范围内的部门
- $query->whereIn('number', $man_number);
- }
- }
- }
- public function getQx($data, $user){
- if(empty($data['menu_authority_id'])) return 0;
- if($user['id'] == Employee::SPECIAL_ADMIN) return -1;
- if(! empty($user['role_authority'][$data['menu_authority_id']])) {
- //指定菜单 显示对应权限
- return $user['role_authority'][$data['menu_authority_id']];
- }else{
- return 1;
- }
- }
- function hasMethod($class, $methodName)
- {
- $reflection = new \ReflectionClass($class);
- return $reflection->hasMethod($methodName);
- }
- }
|