You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.6 KiB
91 lines
2.6 KiB
from fastapi import APIRouter
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi.encoders import jsonable_encoder
|
|
import os
|
|
# from endpoints.cab import cabinet, plane
|
|
from models import User
|
|
from starlette.requests import Request
|
|
from pydantic import BaseModel, constr
|
|
from helper.utils import encrypt_md5
|
|
from conf import setting
|
|
|
|
|
|
router = APIRouter(prefix='/api/test')
|
|
|
|
|
|
# router.include_router(plane.router, tags=["柜体管理"])
|
|
|
|
class UserEdit(BaseModel):
|
|
username: str
|
|
name: str
|
|
role_id: int
|
|
# department_id: str | None
|
|
# sex: int | None
|
|
phone: str | None
|
|
password: str
|
|
# email: str | None
|
|
locked: bool | None
|
|
|
|
|
|
class UpdatePassword(BaseModel):
|
|
password: str
|
|
|
|
|
|
class SignUp(BaseModel):
|
|
username: constr(strip_whitespace=True)
|
|
name: str
|
|
# department_id: str | None
|
|
role_id: int
|
|
# sex: int | None
|
|
phone: str | None
|
|
# email: str | None
|
|
# locked: bool
|
|
drawers: list = []
|
|
|
|
|
|
def respond_to(code: int = 200, desc: str = '成功', data=None):
|
|
if data is None:
|
|
return JSONResponse(content={"code": code, "desc": desc})
|
|
else:
|
|
return JSONResponse(content={"code": code, "desc": desc, "data": jsonable_encoder(data)})
|
|
|
|
@router.get("/")
|
|
def read_root():
|
|
return {"Hello": "World"}
|
|
|
|
|
|
@router.post('/add', summary='创建账号')
|
|
async def create(request: Request, model: SignUp):
|
|
if len(model.username) < 4:
|
|
return respond_to(code=400, desc='用户名长度不能小于4位')
|
|
user = await User.get_or_none(username=model.username)
|
|
if user:
|
|
return respond_to(code=409, desc='账号已注册')
|
|
|
|
password_digest = encrypt_md5(setting.REGISTER_INIT_PASSWORD)
|
|
user = await User.create(**model.dict(), password_digest=password_digest)
|
|
|
|
return respond_to(data=user.as_json())
|
|
|
|
@router.get('/user/{id}', summary='获取个人信息')
|
|
async def show(id: str):
|
|
user = await User.get(id=id)
|
|
result = user.as_json()
|
|
return respond_to(data=result)
|
|
|
|
@router.get("/cabinet_files/{cabinet_id}", summary='获取下位机日志列表')
|
|
async def read_cabinet_files(cabinet_id: str, page_no: int = 1, page_size: int = 10):
|
|
"""
|
|
获取下位机日志列表
|
|
:return:
|
|
"""
|
|
# 获取static/logs目录下所有子目录的名称
|
|
pid_dir = f"static/logs/{cabinet_id}"
|
|
if not os.path.exists(pid_dir):
|
|
return respond_to(code=400, desc=f'没有找到目录')
|
|
result = os.listdir(pid_dir)
|
|
sorted_logs = sorted(result, reverse=True)
|
|
count = len(sorted_logs)
|
|
sorted_logs = sorted_logs[(page_no-1)*page_size:page_no*page_size]
|
|
return respond_to(data={"count": count, "data": sorted_logs})
|