UseScopeBaseModel.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Model;
  3. use App\Service\RangeService;
  4. use Illuminate\Database\Eloquent\Model;
  5. class UseScopeBaseModel extends Model
  6. {
  7. //可见范围
  8. const range_function = '';
  9. const is_check_function = '';
  10. public function __construct(array $attributes = [])
  11. {
  12. parent::__construct($attributes);
  13. }
  14. public function scopeKqClear($query, $user, $search)
  15. {
  16. //权限范围内的人
  17. $man_range = $user['man_range'] ?? [];
  18. $man_number = array_unique(array_column($man_range,'number'));
  19. //个人部门所有
  20. $auth_type = $this->getQx($search,$user);
  21. if($auth_type <= 0){
  22. //不需要分个人部门所有的数据
  23. if($auth_type == 0) $query->whereIn('number', $man_number);
  24. }else{
  25. if($auth_type == 1) { //我的
  26. $query->where('number',$user['number']);
  27. }elseif ($auth_type == 2){
  28. //自己权限范围内的部门
  29. $query->whereIn('number', $man_number);
  30. }
  31. }
  32. }
  33. public function scopeManClear($query, $user, $search)
  34. {
  35. //权限范围内的人
  36. $man_range = $user['man_range'] ?? [];
  37. $man_number = array_unique(array_column($man_range,'number'));
  38. //个人部门所有
  39. $auth_type = $this->getQx($search,$user);
  40. if($auth_type <= 0){
  41. //不需要分个人部门所有的数据
  42. if($auth_type == 0) $query->where('number', $user['number']);
  43. }else{
  44. if($auth_type == 1) { //我的
  45. $query->where('number',$user['number']);
  46. }elseif ($auth_type == 2){
  47. //自己权限范围内的部门
  48. $query->whereIn('number', $man_number);
  49. }
  50. }
  51. }
  52. public function getQx($data, $user){
  53. if(empty($data['menu_authority_id'])) return 0;
  54. if($user['id'] == Employee::SPECIAL_ADMIN) return -1;
  55. if(! empty($user['role_authority'][$data['menu_authority_id']])) {
  56. //指定菜单 显示对应权限
  57. return $user['role_authority'][$data['menu_authority_id']];
  58. }else{
  59. return 1;
  60. }
  61. }
  62. function hasMethod($class, $methodName)
  63. {
  64. $reflection = new \ReflectionClass($class);
  65. return $reflection->hasMethod($methodName);
  66. }
  67. }