+ coupon_limit_model_ids = JSONField(_(u'coupon_limit_model_ids'), blank=True, null=True, help_text=u'券限制使用 model_ids')
|
64
|
64
|
|
65
|
65
|
has_used = models.BooleanField(_(u'has_used'), default=False, help_text=u'是否已核销', db_index=True)
|
66
|
66
|
admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'核销员唯一标识', db_index=True)
|
|
|
@@ -82,6 +82,18 @@ class UserCouponInfo(BaseModelMixin):
|
82
|
82
|
return upload_file_url(self.coupon_image)
|
83
|
83
|
|
84
|
84
|
@property
|
|
85
|
+ def has_actived(self):
|
|
86
|
+ if not self.active_at:
|
|
87
|
+ return True
|
|
88
|
+ return tc.utc_datetime() > self.active_at
|
|
89
|
+
|
|
90
|
+ @property
|
|
91
|
+ def has_expired(self):
|
|
92
|
+ if not self.expire_at:
|
|
93
|
+ return False
|
|
94
|
+ return tc.utc_datetime() > self.expire_at
|
|
95
|
+
|
|
96
|
+ @property
|
85
|
97
|
def data(self):
|
86
|
98
|
return {
|
87
|
99
|
'user_coupon_id': self.user_coupon_id,
|
|
|
@@ -94,7 +106,9 @@ class UserCouponInfo(BaseModelMixin):
|
94
|
106
|
'active_at': tc.local_string(self.active_at, format='%Y%m%d'),
|
95
|
107
|
'expire_at': tc.local_string(self.expire_at, format='%Y-%m-%d'),
|
96
|
108
|
'coupon_valid_period': self.coupon_valid_period,
|
97
|
|
- 'coupon_limit_brand_ids': self.coupon_limit_brand_ids,
|
|
109
|
+ 'coupon_limit_model_ids': self.coupon_limit_model_ids,
|
|
110
|
+ 'has_actived': self.has_actived,
|
|
111
|
+ 'has_expired': self.has_expired,
|
98
|
112
|
'has_used': self.has_used,
|
99
|
113
|
'admin_id': self.admin_id,
|
100
|
114
|
'used_at': self.used_at,
|
|
|
@@ -81,6 +81,15 @@ class MemberActivityStatusCode(BaseStatusCode):
|
81
|
81
|
ACTIVITY_NOT_FOUND = StatusCodeField(503701, 'Activity Not Found', description=u'活动不存在')
|
82
|
82
|
|
83
|
83
|
|
|
84
|
+class MemberCouponStatusCode(BaseStatusCode):
|
|
85
|
+ """ 会员优惠券相关错误码 5040xx """
|
|
86
|
+ USER_COUPON_NOT_FOUND = StatusCodeField(504001, 'User Coupon Not Found', description=u'用户优惠券不存在')
|
|
87
|
+
|
|
88
|
+ USER_COUPON_HAS_USED = StatusCodeField(504010, 'User Coupon Has Used', description=u'用户优惠券已使用')
|
|
89
|
+ USER_COUPON_NOT_ACTIVED = StatusCodeField(504011, 'User Coupon Not Actived', description=u'用户优惠券未生效')
|
|
90
|
+ USER_COUPON_HAS_EXPIRED = StatusCodeField(504012, 'User Coupon Has Expired', description=u'用户优惠券已过期')
|
|
91
|
+
|
|
92
|
+
|
84
|
93
|
class LensmanStatusCode(BaseStatusCode):
|
85
|
94
|
""" 摄影师相关错误码 4000xx """
|
86
|
95
|
LENSMAN_NOT_FOUND = StatusCodeField(400001, 'Lensman Not Found', description=u'摄影师不存在')
|
|
|
@@ -6,7 +6,7 @@ from utils.redis.rkeys import MEMBER_SHOT_DATA
|
6
|
6
|
|
7
|
7
|
def update_member_shot_data():
|
8
|
8
|
from member.models import ShotTypeInfo
|
9
|
|
- shots_types = ShotTypeInfo.objects.filter(status=True).order_by('position')
|
|
9
|
+ shots_types = ShotTypeInfo.objects.filter(status=True).order_by('position', '-pk')
|
10
|
10
|
shots_types = [st.data for st in shots_types]
|
11
|
11
|
r.setjson(MEMBER_SHOT_DATA, shots_types)
|
12
|
12
|
return shots_types
|