diff --git a/app/api/endpoints/coupon_activity.py b/app/api/endpoints/coupon_activity.py index b3284f1..e2435b0 100644 --- a/app/api/endpoints/coupon_activity.py +++ b/app/api/endpoints/coupon_activity.py @@ -63,10 +63,17 @@ async def get_coupon_activity( CouponDB.id.in_(activity.coupon_config.keys()) ).all() - result = CouponActivityInfo.model_validate(activity) - result.coupons = [CouponInfo.model_validate(coupon) for coupon in coupons] + activity_data = CouponActivityInfo.model_validate(activity).model_dump() + activity_data.update({'coupons': [CouponInfo.model_validate(coupon) for coupon in coupons]}) - return success_response(data=result) + # 当前是否可以领取 + current_time = datetime.now().time() + if current_time < activity.daily_start_time or current_time > activity.daily_end_time: + activity_data.update({'can_receive': False}) + else: + activity_data.update({'can_receive': True}) + + return success_response(data=activity_data) @router.get("", response_model=ResponseModel) diff --git a/app/core/response.py b/app/core/response.py index ab1c7aa..8e80277 100644 --- a/app/core/response.py +++ b/app/core/response.py @@ -1,7 +1,7 @@ from typing import Any, Optional from fastapi.responses import JSONResponse from pydantic import BaseModel, ConfigDict -from datetime import datetime +from datetime import datetime, time, date from typing import TypeVar, Generic from fastapi import status import json @@ -10,6 +10,10 @@ class CustomJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') + if isinstance(obj, time): + return obj.strftime('%H:%M:%S') + elif isinstance(obj, date): + return obj.strftime('%Y-%m-%d') elif isinstance(obj, Decimal): return float(obj) return super().default(obj)