diff --git a/app/api/endpoints/user.py b/app/api/endpoints/user.py index 3d0f3cf..6fc853f 100644 --- a/app/api/endpoints/user.py +++ b/app/api/endpoints/user.py @@ -1,7 +1,7 @@ from fastapi import APIRouter, HTTPException, Depends, Response, Body from sqlalchemy.orm import Session -from app.models.user import UserLogin, UserInfo, ResetPasswordRequest,PhoneLoginRequest,VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code -from app.models.coupon import CouponDB, UserCouponDB +from app.models.user import UserLogin ,UserInfo, ResetPasswordRequest,PhoneLoginRequest,VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code +from app.models.coupon import CouponDB, UserCouponDB, CouponStatus from app.api.deps import get_current_user, get_admin_user from app.models.database import get_db import random @@ -124,10 +124,23 @@ async def login( @router.get("/info", response_model=ResponseModel) async def get_user_info( - current_user: UserDB = Depends(get_current_user) + current_user: UserDB = Depends(get_current_user), + db: Session = Depends(get_db) ): """获取用户信息""" - return success_response(data=UserInfo.model_validate(current_user)) + # 查询用户未使用的优惠券数量 + coupon_count = db.query(UserCouponDB).filter( + UserCouponDB.user_id == current_user.userid, + UserCouponDB.status == CouponStatus.UNUSED + ).count() + + # 获取用户基本信息 + user_info = UserInfo.model_validate(current_user) + + return success_response(data={ + **user_info.model_dump(), + "coupon_count": coupon_count + }) @router.post("/phone-login", response_model=ResponseModel) async def phone_login( diff --git a/app/models/user.py b/app/models/user.py index f35e235..adc9d98 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -54,6 +54,7 @@ class UserInfo(BaseModel): points: int = 0 roles: List[UserRole] create_time: datetime + coupon_count: Optional[int] = 0 # 添加优惠券数量字段 class Config: from_attributes = True