PermissionsSearch.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace catchAdmin\permissions\model\search;
  3. use catchAdmin\permissions\model\Roles;
  4. use think\facade\Db;
  5. trait PermissionsSearch
  6. {
  7. public function searchPermissionNameAttr($query, $value, $data)
  8. {
  9. return $query->whereLike('permission_name', $value);
  10. }
  11. public function searchIdAttr($query, $value, $data)
  12. {
  13. $query->where('parent_id', $value)->whereOr('id', $value);
  14. }
  15. public function searchRoleIdAttr($query, $value, $data)
  16. {
  17. $permissionIds = [];
  18. $permissions = Roles::where('id', $value)->find()->getPermissions();
  19. foreach ($permissions as $_permission) {
  20. $permissionIds[] = $_permission->pivot->permission_id;
  21. }
  22. if(!empty($permissionIds)) {
  23. $query->whereIn('id', $permissionIds);
  24. }
  25. }
  26. public function searchUidAttr($query, $value, $data)
  27. {
  28. if ($value == 1) {
  29. return $query;
  30. }
  31. // 查出用户拥有的角色
  32. $roleIds = Db::table('user_has_roles')->where('uid', $value)->column('role_id');
  33. // 查出角色拥有的权限
  34. $permissionIds = Db::table('role_has_permissions')->whereIn('role_id', $roleIds)->column('permission_id');
  35. if(!empty($permissionIds)) {
  36. $query->whereIn('id', $permissionIds);
  37. }
  38. }
  39. }