diff --git a/app/admin/controller/v1/Role.php b/app/admin/controller/v1/Role.php index 8b4163a8..2517d358 100644 --- a/app/admin/controller/v1/Role.php +++ b/app/admin/controller/v1/Role.php @@ -37,7 +37,7 @@ class Role 'list_rows' => $params['size'], 'page' => $params['page'] ]); - } else if ('all' == request()->get('scene')) { + } else if ('all' == request()->param('scene')) { $roles = $roles->select(); } @@ -55,8 +55,10 @@ class Role 'updated_at', 'deleted_at' ]) + ->with(['authorities']) ->bypk($id) - ->find(); + ->find() + ->hidden(['authorities.role_id']); if (empty($role)) { return error('角色不存在'); } @@ -93,7 +95,7 @@ class Role $permissions[] = [ 'role_id' => $role->id, 'menu_id' => $menu['menu_id'], - 'permission' => array_reduce($menu['permission'], function($v1, $v2) { + 'permission' => array_reduce($menu['permissions'], function($v1, $v2) { return $v1 | $v2; }) ]; @@ -129,14 +131,14 @@ class Role $put['menu_permission'] = json_decode($put['menu_permission'], true); $validate = new SysRoleValidate; - if (!$validate->scene('update')->check($put)) { + if (!$validate->scene('update')->check(array_merge($put, ['id' => $id]))) { return error($validate->getError()); } SysRoleModel::startTrans(); try { $role = SysRoleModel::bypk($id)->find(); - if (empty($rule)) { + if (empty($role)) { throw new InvalidOperateException('角色不存在'); } @@ -149,15 +151,13 @@ class Role $permissions[] = [ 'role_id' => $role->id, 'menu_id' => $menu['menu_id'], - 'permission' => array_reduce($menu['permission'], function($v1, $v2) { + 'permission' => array_reduce($menu['permissions'], function($v1, $v2) { return $v1 | $v2; }) ]; } - SysRoleAuthorityModel::destroy(function($query) use ($role) { - $query->roleId($role->id); - }); + SysRoleAuthorityModel::roleId($role->id)->delete(); $authority = (new SysRoleAuthorityModel)->saveAll($permissions); if ($authority->isEmpty()) { throw new InvalidOperateException('角色权限更新失败'); diff --git a/app/admin/model/v1/SysRoleAuthorityModel.php b/app/admin/model/v1/SysRoleAuthorityModel.php index ce981c37..7db8931d 100644 --- a/app/admin/model/v1/SysRoleAuthorityModel.php +++ b/app/admin/model/v1/SysRoleAuthorityModel.php @@ -3,12 +3,12 @@ declare (strict_types = 1); namespace app\admin\model\v1; -use think\Model; +use app\common\model\SysRoleAuthorityBaseModel; /** * @mixin \think\Model */ -class SysRoleAuthorityModel extends Model +class SysRoleAuthorityModel extends SysRoleAuthorityBaseModel { // role_id查询 public function scopeRoleId($query, $value) diff --git a/app/admin/model/v1/SysRoleModel.php b/app/admin/model/v1/SysRoleModel.php index 9a82697b..6ca6ae6e 100644 --- a/app/admin/model/v1/SysRoleModel.php +++ b/app/admin/model/v1/SysRoleModel.php @@ -16,8 +16,12 @@ class SysRoleModel extends SysRoleBaseModel use SoftDelete; // 软件删除字段 protected $deleteTime = 'deleted_at'; - // 自动写入时间格式 - protected $autoWriteTimestamp = 'datetime'; + + // 关联权限 + public function authorities() + { + return $this->hasMany(SysRoleAuthorityModel::class, 'role_id', 'id'); + } // 角色名称搜索 public function searchNameAttr($query, $value, $data)