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.

53 lines
1.9 KiB

from fastapi import APIRouter, Depends, Request
from pydantic import BaseModel
from conf import setting
from helper import login_required, respond_to
from models import Terminal, Cabinet, Drawer, PlatformSecurity
from models.archive import Archive
router = APIRouter(prefix='/terminals')
class TerminalEditModel(BaseModel):
name: str | None
title: str | None
index_of_user: int | None
login_count: int = 1
params: dict | None
@router.get('', summary='获取终端信息')
async def index():
terminal = await Terminal.get(id=setting.TERMINAL_ID).values()
terminal['has_door'] = setting.HAS_DOOR
terminal['send_all_board_id'] = setting.SEND_ALL_BOARD_ID
terminal['has_balance'] = setting.HAS_BALANCE
terminal['rfid_reverse'] = setting.RFID_REVERSE
terminal['client_number'] = setting.CLIENT_NUMBER
return respond_to(data=terminal)
@router.put('/{id}', summary='修改终端信息', dependencies=[Depends(login_required)])
async def update(request: Request, id: str, model: TerminalEditModel):
model_dict = model.dict()
model_dict.pop("params")
await Terminal.filter(id=id).update(**model_dict)
# 大类参数保存
if request.state and request.state.archive_id and model.params:
archive_obj = await Archive.get(id=request.state.archive_id)
archive_obj.params = model.params
await archive_obj.save()
return respond_to()
@router.get('/cabinets', summary='柜体及抽屉数据', dependencies=[Depends(login_required)])
async def index():
cabinets = await Cabinet.filter(terminal_id=setting.TERMINAL_ID).order_by('-created_at').only('id', 'label')
data = []
for cabinet in cabinets:
drawers = await Drawer.filter(cabinet_id=cabinet.id).order_by('rank').values('id', 'cabinet_id', 'label')
data.append({'id': cabinet.id, 'label': cabinet.label, 'drawers': drawers})
return respond_to(data=data)