SystemRole.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\model\system;
  8. use plugin\saiadmin\basic\think\BaseModel;
  9. /**
  10. * 角色模型
  11. *
  12. * sa_system_role 角色表
  13. *
  14. * @property $id
  15. * @property $name 角色名称
  16. * @property $code 角色标识,如: hr_manager
  17. * @property $level 角色级别:用于行政控制,不可操作级别大于自己的角色
  18. * @property $data_scope 数据范围: 1全部, 2本部门及下属, 3本部门, 4仅本人, 5自定义
  19. * @property $remark 备注
  20. * @property $sort
  21. * @property $status 状态: 1启用, 0禁用
  22. * @property $created_by 创建者
  23. * @property $updated_by 更新者
  24. * @property $create_time 创建时间
  25. * @property $update_time 修改时间
  26. */
  27. class SystemRole extends BaseModel
  28. {
  29. /**
  30. * 数据表主键
  31. * @var string
  32. */
  33. protected $pk = 'id';
  34. /**
  35. * 数据表完整名称
  36. * @var string
  37. */
  38. protected $table = 'sa_system_role';
  39. /**
  40. * 权限范围
  41. */
  42. public function scopeAuth($query, $value)
  43. {
  44. $id = $value['id'];
  45. $roles = $value['roles'];
  46. if ($id > 1) {
  47. $ids = [];
  48. foreach ($roles as $item) {
  49. $ids[] = $item['id'];
  50. $temp = static::whereRaw('FIND_IN_SET("' . $item['id'] . '", level) > 0')->column('id');
  51. $ids = array_merge($ids, $temp);
  52. }
  53. $query->where('id', 'in', array_unique($ids));
  54. }
  55. }
  56. /**
  57. * 通过中间表获取菜单
  58. */
  59. public function menus()
  60. {
  61. return $this->belongsToMany(SystemMenu::class, SystemRoleMenu::class, 'menu_id', 'role_id');
  62. }
  63. /**
  64. * 通过中间表获取部门
  65. */
  66. public function depts()
  67. {
  68. return $this->belongsToMany(SystemDept::class, SystemRoleDept::class, 'dept_id', 'role_id');
  69. }
  70. }