input('role_name', ''); $roleCode = $request->input('role_code', ''); $status = $request->input('status', null); $page = $request->input('page', 1); $pageSize = $request->input('page_size', 10); // 构建查询 $query = DB::table('sys_role') ->where('deleted', 0); // 添加查询条件 if (!empty($roleName)) { $query->where('role_name', 'like', '%' . $roleName . '%'); } if (!empty($roleCode)) { $query->where('role_code', 'like', '%' . $roleCode . '%'); } if ($status !== null) { $query->where('status', $status); } // 计算总数 $total = $query->count(); // 分页查询 $roles = $query->orderBy('sort', 'asc') ->orderBy('id', 'asc') ->skip(($page - 1) * $pageSize) ->take($pageSize) ->get(); // 构造返回数据 $data = [ 'list' => $roles, 'total' => $total, 'page' => $page, 'page_size' => $pageSize, 'total_pages' => ceil($total / $pageSize) ]; return Rs::success($data); } public function Save(Request $request) { $data = $request->validate([ 'id' => 'required|integer', 'role_name' => 'required|string|max:50', 'role_code' => [ 'required', 'string', 'max:50', Rule::unique('sys_role', 'role_code')->ignore($request->id, 'id'), ], 'status' => 'required|integer|in:0,1', ]); $conditions = ['id' => $data['id']]; $values = [ 'role_name' => $data['role_name'], 'role_code' => $data['role_code'], 'status' => $data['status'], ]; $updated = DB::table('sys_role')->updateOrInsert($conditions, $values); if ($updated) { return Rs::success(); } return Rs::error('操作失败'); } /** * 删除角色 * @param Request $request */ public function Delete(Request $request) { $data = $request->validate([ 'id' => 'required|integer', ]); $deleted = DB::table('sys_role')->where('id', $data['id'])->update(['deleted' => 1]); if ($deleted) { return Rs::success(); } return Rs::error('删除失败'); } /** * 获取所有权限,用于角色权限分配 */ public function getAllPermissions() { // 获取所有未删除的权限 $permissions = DB::table('sys_permission') ->where('deleted', 0) ->orderBy('sort', 'asc') ->get(); // 构建权限树 $permissionTree = $this->buildPermissionTree($permissions); return Rs::success($permissionTree); } /** * 获取所有启用的角色列表(用于用户绑定角色) */ public function getRoleList() { $roles = DB::table('sys_role') ->where('deleted', 0) ->where('status', 1) ->orderBy('sort', 'asc') ->get(); return Rs::success($roles); } /** * 获取角色已有权限 * @param Request $request */ public function getRolePermissions(Request $request) { $data = $request->validate([ 'role_id' => 'required|integer', ]); // 获取角色已有的权限ID列表 $permissionIds = DB::table('sys_role_permission') ->where('role_id', $data['role_id']) ->pluck('permission_id') ->toArray(); return Rs::success($permissionIds); } /** * 保存角色权限 * @param Request $request */ public function saveRolePermissions(Request $request) { $data = $request->validate([ 'role_id' => 'required|integer', 'permission_ids' => 'required|array', ]); // 开启事务 DB::beginTransaction(); try { // 删除角色原有权限 DB::table('sys_role_permission') ->where('role_id', $data['role_id']) ->delete(); // 添加新的权限关联 $insertData = []; foreach ($data['permission_ids'] as $permissionId) { $insertData[] = [ 'role_id' => $data['role_id'], 'permission_id' => $permissionId, 'create_time' => now(), ]; } if (!empty($insertData)) { DB::table('sys_role_permission')->insert($insertData); } // 提交事务 DB::commit(); return Rs::success(); } catch (\Exception $e) { // 回滚事务 DB::rollBack(); return Rs::error('保存权限失败:' . $e->getMessage()); } } /** * 构建权限树 * @param $permissions * @param int $parentId * @return array */ private function buildPermissionTree($permissions, $parentId = 0) { $tree = []; foreach ($permissions as $permission) { if ($permission->parent_id == $parentId) { $children = $this->buildPermissionTree($permissions, $permission->id); if (!empty($children)) { $permission->children = $children; } $tree[] = $permission; } } return $tree; } }