mini-rbac/backend/controller/user.py

49 lines
1.6 KiB
Python
Raw Normal View History

2022-09-12 07:11:12 +00:00
from fastapi import Query
2022-09-11 14:50:39 +00:00
from core.security import get_password_hash
2022-09-12 07:11:12 +00:00
from dbhelper.user import get_user, get_user_info, get_users, insert_user, new_user
2022-09-12 07:22:08 +00:00
from schemas import Response, UserAdd, UserIn, UserInfo, UserList, UserQuery, UserRead
2022-09-11 10:34:18 +00:00
from schemas.common import ListAll
async def user_add(data: UserAdd) -> Response[UserInfo]:
2022-09-12 07:11:12 +00:00
"""新增用户并分配角色 一步到位"""
2022-09-11 10:34:18 +00:00
roles = data.rids
del data.rids
2022-09-12 07:11:12 +00:00
data.password = get_password_hash(data.password)
2022-09-11 10:34:18 +00:00
return await insert_user(data, roles)
2022-09-12 07:11:12 +00:00
async def create_user(data: UserIn) -> Response[UserRead]:
"""新增用户"""
result = await get_user({"username": data.username})
if result is None:
data.password = get_password_hash(data.password)
return Response(data=await new_user(data))
return Response(msg="用户名已存在")
2022-09-11 10:34:18 +00:00
async def user_info(pk: int) -> Response[UserInfo]:
try:
return Response(data=await get_user_info(pk))
except Exception as e:
return Response(msg=f"用户不存在 {e}")
2022-09-12 07:11:12 +00:00
async def user_arr(
offset: int = Query(default=1, description="偏移量-页码"),
limit: int = Query(default=10, description="数据量"),
) -> Response[ListAll[UserList]]:
skip = (offset - 1) * limit
users, count = await get_users(skip, limit)
return Response(data=ListAll(total=count, items=users))
2022-09-11 10:34:18 +00:00
async def user_list(query: UserQuery) -> Response[ListAll[UserList]]:
2022-09-12 07:11:12 +00:00
"""post查询用户列表"""
2022-09-11 10:34:18 +00:00
limit = query.size
skip = (query.offset - 1) * limit
del query.offset, query.size
users, count = await get_users(skip, limit, query.dict())
return Response(data=ListAll(total=count, items=users))