新增小程序后端代码,包括数据库、路由、服务层等。
小程序前后端打通,包括登录、注册、绑定设备、查询绑定信息,修改小朋友名称等功能。
This commit is contained in:
63
mini-program/app/routers/parents.py
Normal file
63
mini-program/app/routers/parents.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request, status
|
||||
from pydantic import BaseModel
|
||||
|
||||
try:
|
||||
from app.service.parent import ParentService
|
||||
from app.service import get_db_session
|
||||
except ModuleNotFoundError:
|
||||
from service.parent import ParentService
|
||||
from service import get_db_session
|
||||
|
||||
|
||||
router = APIRouter(prefix="/parents", tags=["parents"])
|
||||
logger = logging.getLogger("app.parents")
|
||||
|
||||
|
||||
class ParentCreateRequest(BaseModel):
|
||||
openid: str
|
||||
unionid: str | None = None
|
||||
nickname: str | None = None
|
||||
avatar_url: str | None = None
|
||||
|
||||
|
||||
class ParentResponse(BaseModel):
|
||||
user_id: int
|
||||
openid: str
|
||||
unionid: str | None = None
|
||||
nickname: str | None = None
|
||||
avatar_url: str | None = None
|
||||
phone: str | None = None
|
||||
status: int
|
||||
|
||||
|
||||
class ParentUpdateRequest(BaseModel):
|
||||
nickname: str | None = None
|
||||
avatar_url: str | None = None
|
||||
phone: str | None = None
|
||||
|
||||
|
||||
@router.post("", response_model=ParentResponse, status_code=status.HTTP_201_CREATED)
|
||||
def create_parent(payload: ParentCreateRequest, request: Request, db=Depends(get_db_session)) -> ParentResponse:
|
||||
service = ParentService(db)
|
||||
parent = service.create(payload.openid, payload.unionid, payload.nickname, payload.avatar_url)
|
||||
return ParentResponse(**parent)
|
||||
|
||||
|
||||
@router.get("/{user_id}", response_model=ParentResponse)
|
||||
def get_parent(user_id: int, request: Request, db=Depends(get_db_session)) -> ParentResponse:
|
||||
service = ParentService(db)
|
||||
parent = service.get(user_id)
|
||||
if not parent:
|
||||
raise HTTPException(status_code=404, detail="parent not found")
|
||||
return ParentResponse(**parent)
|
||||
|
||||
|
||||
@router.patch("/{user_id}", response_model=ParentResponse)
|
||||
def update_parent(user_id: int, payload: ParentUpdateRequest, request: Request, db=Depends(get_db_session)) -> ParentResponse:
|
||||
service = ParentService(db)
|
||||
parent = service.update(user_id, payload.nickname, payload.avatar_url, payload.phone)
|
||||
if not parent:
|
||||
raise HTTPException(status_code=404, detail="parent not found")
|
||||
return ParentResponse(**parent)
|
||||
Reference in New Issue
Block a user