From 871260de3fafe03c3e5f30b33ac63eb783a4287b Mon Sep 17 00:00:00 2001 From: aaron <> Date: Tue, 14 Jan 2025 23:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BE=AE=E4=BF=A1=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E7=99=BB=E5=BD=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/user.py | 24 ++++++++---------------- app/models/user.py | 8 ++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/api/endpoints/user.py b/app/api/endpoints/user.py index 811f7d7..3907266 100644 --- a/app/api/endpoints/user.py +++ b/app/api/endpoints/user.py @@ -1,6 +1,6 @@ from fastapi import APIRouter, HTTPException, Depends, Response, Body from sqlalchemy.orm import Session -from app.models.user import UserLogin, UserInfo, VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code +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.api.deps import get_current_user, get_admin_user from app.models.database import get_db @@ -15,6 +15,7 @@ from app.core.security import create_access_token, set_jwt_cookie, clear_jwt_coo from app.core.response import success_response, error_response, ResponseModel from pydantic import BaseModel, Field from typing import List +from typing import Optional from datetime import datetime router = APIRouter() @@ -31,14 +32,6 @@ redis_client = redis.Redis( # 初始化短信客户端 client = UniSMS(settings.UNI_APP_ID) -# 添加 Mock 登录请求模型 -class MockLoginRequest(BaseModel): - phone: str = Field(..., pattern="^1[3-9]\d{9}$") - -class ResetPasswordRequest(BaseModel): - user_id: int - new_password: str = Field(..., min_length=6, max_length=20) - @router.post("/send-code") async def send_verify_code(request: VerifyCodeRequest): """发送验证码""" @@ -135,16 +128,14 @@ async def get_user_info( """获取用户信息""" return success_response(data=UserInfo.model_validate(current_user)) -@router.post("/mock-login", response_model=ResponseModel) -async def mock_login( - request: MockLoginRequest, +@router.post("/phone-login", response_model=ResponseModel) +async def phone_login( + request: PhoneLoginRequest, db: Session = Depends(get_db), response: Response = None ): - """Mock登录接口(仅用于开发测试)""" - if not settings.DEBUG: - return error_response(code=403, message="该接口仅在开发环境可用") - + """手机号登录 (用于微信)""" + # 查找或创建用户 user = db.query(UserDB).filter(UserDB.phone == request.phone).first() if not user: @@ -155,6 +146,7 @@ async def mock_login( username=f"user_{request.phone[-4:]}", phone=request.phone, user_code=user_code, + referral_code=request.referral_code, roles=[UserRole.USER] ) db.add(user) diff --git a/app/models/user.py b/app/models/user.py index 800d909..a743c2d 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -57,6 +57,14 @@ class UserInfo(BaseModel): class Config: from_attributes = True +class PhoneLoginRequest(BaseModel): + phone: str = Field(..., pattern="^1[3-9]\d{9}$") + referral_code: Optional[str] = Field(None, min_length=6, max_length=6) + +class ResetPasswordRequest(BaseModel): + user_id: int + new_password: str = Field(..., min_length=6, max_length=20) + class VerifyCodeRequest(BaseModel): phone: str = Field(..., pattern="^1[3-9]\d{9}$")