+    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,

+ 9 - 0
utils/error/errno_utils.py

@@ -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'摄影师不存在')

+ 1 - 1
utils/redis/rshot.py

@@ -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

Kodo/kodo - Gogs: Go Git Service

3 Commity (acf403b9250d2bcc7b37a02ad7fce6d6ed2c4825)

Autor SHA1 Wiadomość Data
  Brightcells 6cc1a44274 Change curtail_uuid to django_curtail_uuid 7 lat temu
  Brightcells 246a9ff4b8 Change to 'from utils.redis.connect import r' 8 lat temu
  Brightcells d73fdb7cd2 async/multi_pop uuids 9 lat temu