@@ -9,7 +9,7 @@ from django_response import response |
||
| 9 | 9 |
from TimeConvert import TimeConvert as tc |
| 10 | 10 |
|
| 11 | 11 |
from mch.models import ConsumeInfoSubmitLogInfo, AdministratorInfo |
| 12 |
-from utils.error.errno_utils import AdministratorStatusCode, ProductBrandStatusCode, ProductMachineStatusCode |
|
| 12 |
+from utils.error.errno_utils import AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode, ProductMachineStatusCode |
|
| 13 | 13 |
|
| 14 | 14 |
|
| 15 | 15 |
WECHAT = settings.WECHAT |
@@ -77,6 +77,10 @@ def usecoupon(request): |
||
| 77 | 77 |
except ConsumeInfoSubmitLogInfo.DoesNotExist: |
| 78 | 78 |
return response(ProductMachineStatusCode.SN_NOT_FOUND) |
| 79 | 79 |
|
| 80 |
+ logdata = log.data |
|
| 81 |
+ if logdata.get('coupon_info', {}).get('coupon_has_expired', True):
|
|
| 82 |
+ return response(ProductCouponStatusCode.COUPON_HAS_EXPIRED) |
|
| 83 |
+ |
|
| 80 | 84 |
log.has_used = True |
| 81 | 85 |
log.used_at = tc.utc_datetime() |
| 82 | 86 |
log.save() |
@@ -532,6 +532,7 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin): |
||
| 532 | 532 |
return {
|
| 533 | 533 |
'coupon_expire_at': '', |
| 534 | 534 |
'coupon_value': 0, |
| 535 |
+ 'coupon_has_expired': True, |
|
| 535 | 536 |
}, |
| 536 | 537 |
|
| 537 | 538 |
@property |
@@ -606,7 +607,9 @@ class ActivityInfo(BaseModelMixin): |
||
| 606 | 607 |
return (self.model_uni_names and model_name in self.model_uni_names) and (self.start_at <= tc.utc_datetime() < self.end_at) |
| 607 | 608 |
|
| 608 | 609 |
def coupon_info(self, created_at=None): |
| 610 |
+ coupon_expire_at = self.final_coupon_expire_at(created_at=created_at) |
|
| 609 | 611 |
return {
|
| 610 |
- 'coupon_expire_at': self.final_coupon_expire_at(created_at=created_at), |
|
| 612 |
+ 'coupon_expire_at': coupon_expire_at, |
|
| 611 | 613 |
'coupon_value': self.coupon_value, |
| 614 |
+ 'coupon_has_expired': tc.utc_datetime() >= coupon_expire_at, |
|
| 612 | 615 |
}, |
@@ -37,6 +37,13 @@ class ProductMachineStatusCode(BaseStatusCode): |
||
| 37 | 37 |
SN_NOT_FOUND = StatusCodeField(501301, 'SN Not Found', description=u'序列号不存在') |
| 38 | 38 |
|
| 39 | 39 |
|
| 40 |
+class ProductCouponStatusCode(BaseStatusCode): |
|
| 41 |
+ """ 优惠券相关错误码 5014xx """ |
|
| 42 |
+ COUPON_NOT_FOUND = StatusCodeField(501401, 'Coupon Not Found', description=u'优惠券不存在') |
|
| 43 |
+ |
|
| 44 |
+ COUPON_HAS_EXPIRED = StatusCodeField(501411, 'Coupon Has Expired', description=u'优惠券已过期') |
|
| 45 |
+ |
|
| 46 |
+ |
|
| 40 | 47 |
class ProductStatusCode(BaseStatusCode): |
| 41 | 48 |
""" 产品相关错误码 5020xx """ |
| 42 | 49 |
PRODUCT_NOT_FOUND = StatusCodeField(502001, 'Product Not Found', description=u'产品不存在') |