反馈手机号,增加验证码功能。

This commit is contained in:
aaron 2025-03-04 11:51:35 +08:00
parent a2c248ff4d
commit ac945a864c
4 changed files with 13 additions and 12 deletions

View File

@ -15,6 +15,7 @@ from app.models.feedback import (
from typing import List from typing import List
import logging import logging
from app.core.config import settings from app.core.config import settings
from app.core.redis_client import redis_client
router = APIRouter() router = APIRouter()
@ -71,6 +72,13 @@ async def apply_partner(
db: Session = Depends(get_db), db: Session = Depends(get_db),
): ):
"""申请成为合伙人""" """申请成为合伙人"""
# 验证验证码
stored_code = redis_client.get_client().get(f"verify_code:{apply_data.phone}")
print(f"stored_code: {stored_code}")
if not stored_code or stored_code != apply_data.phone_code:
return error_response(message="验证码错误或已过期")
if apply_data.user_id>0: if apply_data.user_id>0:
current_user = db.query(UserDB).filter(UserDB.userid == apply_data.user_id).first() current_user = db.query(UserDB).filter(UserDB.userid == apply_data.user_id).first()
else: else:

View File

@ -25,18 +25,10 @@ from app.models.merchant import MerchantDB
from app.models.address import AddressDB, AddressInfo from app.models.address import AddressDB, AddressInfo
from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommissionRate from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommissionRate
from app.models.order import ShippingOrderDB, OrderStatus from app.models.order import ShippingOrderDB, OrderStatus
from app.core.redis_client import redis_client
router = APIRouter() router = APIRouter()
# Redis 连接
redis_client = redis.Redis(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
db=settings.REDIS_DB,
password=settings.REDIS_PASSWORD,
decode_responses=True
)
@router.post("/send-code") @router.post("/send-code")
async def send_verify_code(request: VerifyCodeRequest): async def send_verify_code(request: VerifyCodeRequest):
@ -48,7 +40,7 @@ async def send_verify_code(request: VerifyCodeRequest):
code, request_id = await qcloud_manager.send_sms_code(phone) code, request_id = await qcloud_manager.send_sms_code(phone)
# 存储验证码到 Redis # 存储验证码到 Redis
redis_client.setex( redis_client.get_client().setex(
f"verify_code:{phone}", f"verify_code:{phone}",
settings.VERIFICATION_CODE_EXPIRE_SECONDS, settings.VERIFICATION_CODE_EXPIRE_SECONDS,
code code
@ -70,7 +62,7 @@ async def login(
verify_code = user_login.verify_code verify_code = user_login.verify_code
# 验证验证码 # 验证验证码
stored_code = redis_client.get(f"verify_code:{phone}") stored_code = redis_client.get_client().get(f"verify_code:{phone}")
if not stored_code or stored_code != verify_code: if not stored_code or stored_code != verify_code:
return error_response(message="验证码错误或已过期") return error_response(message="验证码错误或已过期")

View File

@ -65,7 +65,7 @@ class QCloudManager:
) )
self.cos_client = CosS3Client(config) self.cos_client = CosS3Client(config)
def generate_phone_code(self, length: int = 6) -> str: def generate_phone_code(self, length: int = 4) -> str:
"""生成验证码""" """生成验证码"""
return ''.join(random.choices(string.digits, k=length)) return ''.join(random.choices(string.digits, k=length))

View File

@ -52,6 +52,7 @@ class PartnerApplyCreate(BaseModel):
user_id: int = Field(..., description="用户ID") user_id: int = Field(..., description="用户ID")
name: str = Field(..., max_length=50, description="姓名") name: str = Field(..., max_length=50, description="姓名")
phone: str = Field(..., max_length=20, description="联系电话") phone: str = Field(..., max_length=20, description="联系电话")
phone_code: str = Field(..., max_length=10, description="验证码")
type: str = Field(..., max_length=50, description="合伙人类型") type: str = Field(..., max_length=50, description="合伙人类型")
service_target: str = Field(..., max_length=200, description="服务对象/区域") service_target: str = Field(..., max_length=200, description="服务对象/区域")