| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """
- user - mobile user views
- auther: tanlie
- date: 2026/8/30
- """
- import logging
- from fastapi import APIRouter, Body, Query, Request
- from app.core.response import success_response, error_response
- from app.mobile.req.user import UserLoginReq
- from app.models.user import User
- api = APIRouter(prefix="/dgapi/mobile/user", tags=["mobile user"])
- logger = logging.getLogger("app")
- @api.get("/login/captcha", summary="获取验证码")
- def get_captcha(request: Request, type: int = Query(default=1, description="验证码类型,1:登录验证码,2:注册验证码")):
- # Use the synchronous Redis client attached as app.state.redis_sync by the lifespan
- redis_client = getattr(request.app.state, "redis_sync", None)
- if redis_client is None:
- logger.warning("redis_sync not initialized")
- return error_response(msg="Redis 未初始化", code=500)
- # Synchronous set is safe in sync endpoint
- redis_client.set("key", "value", ex=60)
- logger.info("获取验证码,type=%s", type)
- return success_response(data={"type": type}, msg="获取验证码成功")
- @api.post("/login", summary="登录")
- def login(req: UserLoginReq):
- logger.info("用户登录,请求参数:%s", req)
- return success_response(data={"user": req.model_dump()}, msg="登录成功")
- @api.post("/logout", summary="登出")
- def logout(userId: int = Body(description="用户ID")):
- logger.info("用户登出,userId=%s", userId)
- return success_response(data={"userId": userId}, msg="退出成功")
- @api.get("/wish-summary", summary="心愿单摘要")
- def wish_summary():
- logger.info("获取心愿单摘要")
- return success_response(data={"wish_summary": "心愿单"}, msg="查询成功")
- @api.get("/userinfo", summary="获取用户信息")
- def get_userinfo(request: Request, userId: int = Query(description="用户ID")):
- """查询数据库并返回用户信息"""
- logger.info("获取用户信息,userId=%s", userId)
- db = request.state.db
- res = db.query(User).filter(User.id == userId).first()
- if not res:
- return error_response(msg="用户不存在", code=404)
- data = {
- "id": res.id,
- "username": res.username,
- "mobile": res.mobile,
- "email": res.email,
- "createdAt": res.created_at.isoformat() if res.created_at is not None else None,
- }
- return success_response(data=data, msg="查询成功")
|