36 lines
1.2 KiB
Python
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)}") |