<?php namespace app\admin\controller\system; use app\admin\model\SysMenu; use app\admin\model\SysPermission; use app\admin\service\SysRoleService; use app\common\controller\BackendController; use app\admin\model\SysRole; use app\common\validate\SysRoleValidator; use think\Db; /** * 角色控制器 * Class RoleController * @package app\admin\controller\system */ class RoleController extends BackendController { protected $middleware = [ // 'AuthAdmin' => ['except' => []], 'CheckAdmin', ]; //获取列表 public function getAll() { $result = ['code' => 0, 'msg' => '获取成功']; $result['data'] = SysRoleService::queryAll($this->request, false); return json($result); } //获取 public function get() { $id = $this->request->request('id'); $result = ['code' => 0, 'msg' => '获取成功']; //权限列表 $permissions = Db::name('sys_permission') ->field('id,pid,title') ->where([['status', '=', 1]])->select(); if ($id) { $role = SysRole::where(['id' => $id])->find(); $result['role'] = $role; //角色权限 $checked_permission_ids = Db::name('sys_role_permission')->where('role_id', $role['id'])->column('permission_id'); foreach ($permissions as $k => $rule) { if (in_array($rule['id'], $checked_permission_ids)) { $permissions[$k]['checked'] = true; } } } $result['permissions'] = $permissions; return json($result); } //新增 public function add() { $data = $this->request->post(); $validator = new SysRoleValidator(); if (!$validator->check($data)) { return json(['code' => 1, 'msg' => $validator->getError()]); } Db::startTrans(); try { $results = []; $role = new SysRole(); //保存角色信息 $results[] = $role->allowField(true)->save($data); //保存角色权限 if ($this->request->has('permission_ids')) { $role_permission_list = []; $permission_ids = $this->request->post()['permission_ids']; foreach ($permission_ids as $permission_id) { $role_permission_list[] = ['role_id' => $role['id'], 'permission_id' => $permission_id]; } $results[] = Db::name('sys_role_permission')->insertAll($role_permission_list); } if (in_array(false, $results, true)) { Db::rollback(); return json(['code' => 1, 'msg' => '新建失败']); } Db::commit(); return json(['code' => 0, 'msg' => '新建成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => $e->getMessage()]); } } //修改 public function edit() { $data = $this->request->post(); $validator = new SysRoleValidator(); if (!$validator->check($data)) { return json(['code' => 1, 'msg' => $validator->getError()]); } $role_permission_list = []; if ($this->request->has('permission_ids')) { $permission_ids = $this->request->post('permission_ids'); foreach ($permission_ids as $permission_id) { $role_permission_list[] = ['role_id' => $data['id'], 'permission_id' => $permission_id]; } } Db::startTrans(); try { $results = []; $role = new SysRole(); //保存角色信息 $results[] = $role->allowField(true)->save($data, ['id' => $data['id']]); //保存角色权限 $results[] = Db::name('sys_role_permission')->where('role_id', $data['id'])->delete(); $results[] = Db::name('sys_role_permission')->insertAll($role_permission_list); if (in_array(false, $results, true)) { Db::rollback(); return json(['code' => 1, 'msg' => '修改失败']); } Db::commit(); return json(['code' => 0, 'msg' => '修改成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => $e->getMessage()]); } } //删除 public function delete() { $id = $this->request->post('id'); $result = SysRole::destroy($id); if ($result === false) { return json(['code' => 1, 'msg' => '删除失败']); } return json(['code' => 0, 'msg' => '删除成功']); } /** * 获取菜单 */ public function getMenus() { $id = $this->request->request('id'); $result = ['code' => 0, 'msg' => '获取成功']; //角色 $role = SysRole::where(['id' => $id])->find(); $result['role'] = $role; //菜单列表 $permissions = SysMenu::field('id,pid,title') ->where([['status', '=', 1]]) ->order('sort') ->select(); //角色菜单 $checked_permission_ids = Db::name('sys_role_menu')->where('role_id', $role['id'])->column('permission_id'); foreach ($permissions as $k => $rule) { if (in_array($rule['id'], $checked_permission_ids)) { $permissions[$k]['checked'] = true; } } $result['menus'] = $permissions; return json($result); } /** * 获取权限 */ public function getPermissions() { $id = $this->request->request('id'); $result = ['code' => 0, 'msg' => '获取成功']; //角色 $role = SysRole::where(['id' => $id])->find(); $result['role'] = $role; //权限列表 $permissions = SysPermission::field('id,pid,title') ->where([['status', '=', 1]]) ->order('sort') ->select(); //角色权限 $checked_permission_ids = Db::name('sys_role_permission')->where('role_id', $role['id'])->column('permission_id'); foreach ($permissions as $k => $rule) { if (in_array($rule['id'], $checked_permission_ids)) { $permissions[$k]['checked'] = true; } } $result['permissions'] = $permissions; return json($result); } /** * 设置菜单 */ public function setMenus() { $role_id = $this->request->post('id'); $menu_ids = $this->request->post('menu_ids'); $role_permission_list = []; foreach ($menu_ids as $permission_id) { $role_permission_list[] = ['role_id' => $role_id, 'permission_id' => $permission_id]; } Db::startTrans(); try { $results = []; //保存角色菜单 $results[] = Db::name('sys_role_menu')->where('role_id', $role_id)->delete(); $results[] = Db::name('sys_role_menu')->insertAll($role_permission_list); if (in_array(false, $results, true)) { Db::rollback(); return json(['code' => 1, 'msg' => '保存失败']); } Db::commit(); return json(['code' => 0, 'msg' => '保存成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => $e->getMessage()]); } } /** * 设置权限 */ public function setPermissions() { $role_id = $this->request->post('id'); $role_permission_list = []; $permission_ids = $this->request->post('permission_ids'); foreach ($permission_ids as $permission_id) { $role_permission_list[] = ['role_id' => $role_id, 'permission_id' => $permission_id]; } Db::startTrans(); try { $results = []; //保存角色权限 $results[] = Db::name('sys_role_permission')->where('role_id', $role_id)->delete(); $results[] = Db::name('sys_role_permission')->insertAll($role_permission_list); if (in_array(false, $results, true)) { Db::rollback(); return json(['code' => 1, 'msg' => '修改失败']); } Db::commit(); return json(['code' => 0, 'msg' => '修改成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => $e->getMessage()]); } } }
角色管理
最新推荐文章于 2022-10-21 20:25:43 发布