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