from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.models.database import get_db from app.api.deps import get_current_user from app.models.user import UserDB from app.core.response import success_response, error_response, ResponseModel from app.core.wechat import WeChatClient from pydantic import BaseModel router = APIRouter() class PhoneNumberRequest(BaseModel): code: str # 手机号获取凭证 @router.post("/phone-number", response_model=ResponseModel) async def get_phone_number( request: PhoneNumberRequest): """获取用户手机号 通过微信获取手机号凭证换取用户手机号 """ try: # 初始化微信客户端 wechat = WeChatClient() # 获取用户手机号 phone_info = await wechat.get_phone_number(request.code) if not phone_info or not phone_info.get('phone_number'): return error_response(code=400, message="获取手机号失败") return success_response(data={ "phone": phone_info['phone_number'] }) except Exception as e: return error_response(code=500, message=f"获取手机号失败: {str(e)}")