from fastapi import APIRouter, Request from apps.forms.role import RoleForm, RoleStatusForm from apps.middleware.check_demo import check_demo from apps.middleware.permission_required import permission_required from apps.services import role from utils import R from utils.request import parse_batch_ids # 创建路由 router = APIRouter() # 查询分页数据 @router.get('/page', summary='查询分页数据') @permission_required("sys:role:page") def page(request: Request): # 调用查询分页数据服务方法 result = role.get_role_page(request) # 返回结果 return result # 查询角色详情 @router.get('/detail/{id}', summary='查询角色详情') @permission_required("sys:role:detail") def detail(request: Request, id): # 调用查询角色详情服务方法 data = role.get_role_detail(id) # 返回结果 return R.ok(data=data) # 添加角色 @router.post('/add', summary='添加角色') @permission_required("sys:role:add") @check_demo def add(request: Request, data: RoleForm): # 调用添加角色服务 result = role.add_role(request, data) # 返回结果 return result # 更新角色 @router.put('/update', summary='更新角色') @permission_required("sys:role:update") @check_demo def update(request: Request, data: RoleForm): # 调用更新角色服务方法 result = role.update_role(request, data) # 返回结果 return result # 删除角色 @router.delete('/delete/{id}', summary='删除角色') @permission_required("sys:role:delete") @check_demo async def delete(request: Request, id): # 调用删除角色服务方法 result = await role.delete_role(id) # 返回结果 return result # 设置角色状态 @router.put('/status', summary='设置角色状态') @permission_required("sys:role:status") @check_demo def status(request: Request, data: RoleStatusForm): # 调用设置角色状态服务方法 result = role.update_role_status(request, data) # 返回结果 return result # 获取角色列表 @router.get('/getRoleList', summary='获取角色列表') def get_role_list(request: Request): # 调用获取角色列表方法 result = role.get_role_list() # 返回结果 return R.ok(data=result) # 批量删除角色 @router.delete('/batchDelete', summary='批量删除角色') @permission_required("sys:role:batch_delete") @check_demo async def batch_delete(request: Request): """ 批量删除角色 Request Body: [1, 2, 3] # 角色ID数组 """ id_str, err = await parse_batch_ids(request) if err: return err return await role.delete_role(id_str)