Просмотр исходного кода

feat(user): add get_userinfo endpoint querying DB

- get_userinfo depends on core.get_db and returns success_response/error_response
tanlie 1 месяц назад
Родитель
Сommit
22da876903
3 измененных файлов с 25 добавлено и 7 удалено
  1. 1 4
      FastApi/app/core/db.py
  2. 23 2
      FastApi/app/mobile/views/user_views.py
  3. 1 1
      FastApi/app/models/user.py

+ 1 - 4
FastApi/app/core/db.py

@@ -24,11 +24,8 @@ DB_HOST = os.getenv("DB_HOST", "192.168.1.177")
 DB_PORT = int(os.getenv("DB_PORT", "3306"))
 DB_NAME = os.getenv("DB_NAME", "wishing_tree")
 
-# Extra query params derived from the provided JDBC URL
+# Query params for pymysql / SQLAlchemy. Keep only supported options (charset).
 QUERY = {
-    "serverTimezone": "Asia/Shanghai",
-    "useUnicode": "true",
-    "characterEncoding": "utf-8",
     "charset": "utf8mb4",
 }
 

+ 23 - 2
FastApi/app/mobile/views/user_views.py

@@ -5,10 +5,13 @@ date: 2026/8/30
 """
 import logging
 
-from fastapi import APIRouter, Body, Query
+from fastapi import APIRouter, Body, Query, Depends
+from sqlalchemy.orm import Session
 
-from app.core.response import success_response
+from app.core.response import success_response, error_response
 from app.mobile.req.user import UserLoginReq
+from app.core.db import get_db
+from app.models.user import User
 
 user = APIRouter(prefix="/dgapi/mobile/user", tags=["mobile user"])
 
@@ -37,3 +40,21 @@ def logout(userId: int = Body(description="用户ID")):
 def wish_summary():
     logger.info("获取心愿单摘要")
     return success_response(data={"wish_summary": "心愿单"}, msg="查询成功")
+
+
+@user.get("/userinfo", summary="获取用户信息")
+def get_userinfo(userId: int = Query(..., description="用户ID"), db: Session = Depends(get_db)):
+    """查询数据库并返回用户信息"""
+    logger.info("获取用户信息,userId=%s", userId)
+    user = db.query(User).filter(User.id == userId).first()
+    if not user:
+        return error_response(msg="用户不存在", code=404)
+
+    data = {
+        "id": user.id,
+        "username": user.username,
+        "mobile": user.mobile,
+        "email": user.email,
+        "created_at": user.created_at.isoformat() if user.created_at is not None else None,
+    }
+    return success_response(data=data, msg="查询成功")

+ 1 - 1
FastApi/app/models/user.py

@@ -12,4 +12,4 @@ class User(Base):
     created_at = Column(DateTime, server_default=func.now(), nullable=False)
 
     def __repr__(self):
-        return f"<User id={self.id} username={self.username} mobile={self.mobile}>"}
+        return f"<User id={self.id} username={self.username} mobile={self.mobile}>"