Refactor backend MVC (#2)

* docs(requirements.txt):升级fastapi、uvicorn版本

* refactor(user):重构用户router、service

* ref: role list api

* doc: 1

* refactor(backend): mvc ref
This commit is contained in:
zy7y
2022-10-04 18:19:26 +08:00
committed by GitHub
parent 60d07a477a
commit 547a4eeae6
29 changed files with 496 additions and 551 deletions

View File

19
backend/router/auth.py Normal file
View File

@@ -0,0 +1,19 @@
from fastapi import APIRouter, WebSocket
from schemas import common as BaseSchema
from service import auth as AuthService
router = APIRouter(tags=["公共"])
LoginResult = BaseSchema.Response[BaseSchema.LoginResult]
@router.post("/login", summary="登录", response_model=LoginResult)
async def login(data: BaseSchema.LoginForm):
return await AuthService.user_login(data)
@router.websocket("/ws", name="系统信息")
async def get_system_info(ws: WebSocket):
await AuthService.system_info(ws)

30
backend/router/menu.py Normal file
View File

@@ -0,0 +1,30 @@
from fastapi import APIRouter
from schemas import common as BaseSchema
from schemas import menu as MenuSchema
from service.menu import service as MenuService
router = APIRouter(prefix="/menu", tags=["菜单管理"])
Response = BaseSchema.Response
@router.post("", summary="菜单新增", response_model=Response[MenuSchema.MenuRead])
async def menu_add(data: MenuSchema.MenuIn):
return await MenuService.create_item(data)
@router.get("", summary="菜单列表", response_model=Response)
async def menu_arr():
return await MenuService.get_items()
@router.delete("/{pk}", summary="菜单删除", response_model=Response)
async def menu_del(pk: int):
return await MenuService.delete_item(pk)
@router.put("/{pk}", summary="菜单更新", response_model=Response)
async def menu_put(pk: int, data: MenuSchema.MenuIn):
"""更新菜单"""
return await MenuService.update_item(pk, data)

46
backend/router/role.py Normal file
View File

@@ -0,0 +1,46 @@
from fastapi import APIRouter, Query
from schemas import common as BaseSchema
from schemas import role as RoleSchema
from service.role import service as RoleService
router = APIRouter(prefix="/role", tags=["角色管理"])
Response = BaseSchema.Response
ListAll = BaseSchema.ListAll
role_list_schema = ListAll[list[RoleSchema.RoleRead]]
@router.get("", summary="角色列表", response_model=Response[role_list_schema])
async def role_list(
offset: int = Query(default=1, description="偏移量-页码"),
limit: int = Query(default=10, description="数据量"),
):
return await RoleService.get_items(offset, limit)
@router.post("/query", summary="角色查询", response_model=Response[role_list_schema])
async def role_query(query: RoleSchema.RoleQuery):
return await RoleService.query_items(query)
@router.post("", summary="角色新增", response_model=Response[RoleSchema.RoleInfo])
async def role_create(data: RoleSchema.RoleIn):
return await RoleService.create_item(data)
@router.get("/{rid}/menu", summary="查询角色拥有权限", response_model=Response)
async def role_has_menu(rid: int):
return await RoleService.has_tree_menus(rid)
@router.delete("/{pk}", summary="角色删除", response_model=Response)
async def role_del(pk: int):
return await RoleService.delete_item(pk)
@router.put("/{pk}", summary="角色更新", response_model=Response)
async def role_put(pk: int, data: RoleSchema.RoleIn):
"""更新角色"""
return await RoleService.update_item(pk, data)

53
backend/router/user.py Normal file
View File

@@ -0,0 +1,53 @@
from fastapi import APIRouter, Depends, Query
from core.security import check_permissions
from schemas import common as BaseSchema
from schemas import user as UserSchema
from service.user import service as UserService
router = APIRouter(prefix="/user", tags=["用户管理"])
Response = BaseSchema.Response
ListAll = BaseSchema.ListAll
user_list_schema = ListAll[list[UserSchema.UserRead]]
@router.get("", summary="用户列表", response_model=Response[user_list_schema])
async def user_list(
offset: int = Query(default=1, description="偏移量-页码"),
limit: int = Query(default=10, description="数据量"),
):
return await UserService.get_items(offset, limit)
@router.post("/query", summary="用户查询", response_model=Response[user_list_schema])
async def user_query(query: UserSchema.UserQuery):
return await UserService.query_items(query)
@router.post("", summary="用户新增", response_model=Response[UserSchema.UserRead])
async def user_create(data: UserSchema.UserAdd):
return await UserService.create_item(data)
@router.delete("/{pk}", summary="用户删除", response_model=Response)
async def user_delete(pk: int):
return await UserService.delete_item(pk)
@router.get("/{pk}", summary="用户信息", response_model=Response[UserSchema.UserInfo])
async def user_info(pk: int):
return await UserService.get_item(pk)
@router.put("/{pk}", summary="用户更新", response_model=Response)
async def user_update(pk: int, data: UserSchema.UserPut):
return await UserService.update_item(pk, data)
@router.put("/role/{rid}", summary="用户切换角色", response_model=Response)
async def user_change_role(
rid: int, user: UserSchema.UserRead = Depends(check_permissions)
):
return await UserService.change_current_role(user.id, rid)