deliveryman-api/app/api/endpoints/wechat.py

36 lines
1.2 KiB
Python

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)}")