From 26141cce483d459cafa19d964b9118b47c14cd56 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 6 Mar 2025 08:44:04 +0800 Subject: [PATCH] update --- app/api/endpoints/community_timeperiod.py | 4 ++-- app/api/endpoints/order.py | 1 + app/api/endpoints/user.py | 22 +++++++++++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/api/endpoints/community_timeperiod.py b/app/api/endpoints/community_timeperiod.py index b2713c3..dc00f72 100644 --- a/app/api/endpoints/community_timeperiod.py +++ b/app/api/endpoints/community_timeperiod.py @@ -18,7 +18,7 @@ from typing import List, Optional import logging from sqlalchemy.orm import joinedload from app.core.redis_client import redis_client - +from datetime import datetime router = APIRouter() @router.post("", response_model=ResponseModel) @@ -132,7 +132,7 @@ async def get_community_time_periods( "from_time": ctp.time_period_from_time, "to_time": ctp.time_period_to_time, "order_full": today_orders_count >= ctp.CommunityTimePeriodDB.capacity, - "order_busy": today_orders_count >= ctp.CommunityTimePeriodDB.capacity * 0.8 + "expired": datetime.now().time() > ctp.time_period_from_time }) return success_response(data=result) diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 71cbc26..0470a22 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -464,6 +464,7 @@ async def get_order_detail( "complete_images": order.optimized_complete_images, "packages": package_list, "is_first_order": order.is_first_order, + "cancel_reason": order.cancel_reason, "create_time": order.create_time, "complete_time": order.completed_time, diff --git a/app/api/endpoints/user.py b/app/api/endpoints/user.py index f9dbabb..f4dd523 100644 --- a/app/api/endpoints/user.py +++ b/app/api/endpoints/user.py @@ -33,9 +33,13 @@ router = APIRouter() @router.post("/send-code") async def send_verify_code(request: VerifyCodeRequest): """发送验证码""" - phone = request.phone - try: + phone = request.phone + # 通过 redis 实现验证码发送频率限制 + limit_time = redis_client.get_client().get(f"verify_code_limit:{phone}") + if limit_time and datetime.now() < limit_time: + return error_response(message="验证码发送频率过高") + # 发送验证码 code, request_id = await qcloud_manager.send_sms_code(phone) @@ -45,6 +49,13 @@ async def send_verify_code(request: VerifyCodeRequest): settings.VERIFICATION_CODE_EXPIRE_SECONDS, code ) + + # 设置验证码发送频率限制 + redis_client.get_client().setex( + f"verify_code_limit:{phone}", + datetime.now() + timedelta(seconds=30), + True + ) return success_response(message="验证码已发送") @@ -301,7 +312,8 @@ async def update_user_roles( @router.post("/password-login", response_model=ResponseModel) async def password_login( login_data: UserPasswordLogin, - db: Session = Depends(get_db) + db: Session = Depends(get_db), + response: Response = None ): """密码登录""" user = db.query(UserDB).filter(UserDB.phone == login_data.phone).first() @@ -330,6 +342,10 @@ async def password_login( # 生成访问令牌 access_token = create_access_token(data={"phone": user.phone,"userid":user.userid}) + + # 设置JWT cookie + if response: + set_jwt_cookie(response, access_token) return success_response( data={