@@ -95,3 +95,11 @@ class LensmanTypeBoolMixin(LensmanTypeChoicesMixin): |
||
95 | 95 |
|
96 | 96 |
class Meta: |
97 | 97 |
abstract = True |
98 |
+ |
|
99 |
+ |
|
100 |
+class BrandInfoMixin(models.Model): |
|
101 |
+ brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
102 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
103 |
+ |
|
104 |
+ class Meta: |
|
105 |
+ abstract = True |
@@ -6,8 +6,9 @@ from django_admin import DeleteModelAdmin |
||
6 | 6 |
|
7 | 7 |
from account.models import UserInfo |
8 | 8 |
from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityContributionInfo, |
9 |
- MemberActivityContributionWelfareInfo, MemberActivityGroupShareInfo, MemberActivityInfo, |
|
10 |
- MemberActivitySigninInfo, MemberActivitySignupInfo, RightInfo, ShotTypeInfo) |
|
9 |
+ MemberActivityContributionWelfareInfo, MemberActivityContributionWelfareUnlockingInfo, |
|
10 |
+ MemberActivityGroupShareInfo, MemberActivityInfo, MemberActivitySigninInfo, |
|
11 |
+ MemberActivitySignupInfo, RightInfo, ShotTypeInfo) |
|
11 | 12 |
from pre.custom_message import sendwxasubscribemessage |
12 | 13 |
from utils.redis.rshot import update_member_shot_data |
13 | 14 |
|
@@ -104,10 +105,15 @@ class MemberActivityContributionInfoAdmin(admin.ModelAdmin): |
||
104 | 105 |
|
105 | 106 |
|
106 | 107 |
class MemberActivityContributionWelfareInfoAdmin(admin.ModelAdmin): |
107 |
- list_display = ('activity_id', 'welfare_id', 'welfare_type', 'welfare_title', 'welfare_detail', 'welfare_value', 'welfare_image', 'status', 'created_at', 'updated_at') |
|
108 |
+ list_display = ('welfare_id', 'activity_id', 'welfare_type', 'welfare_title', 'welfare_detail', 'welfare_value', 'welfare_image', 'status', 'created_at', 'updated_at') |
|
108 | 109 |
list_filter = ('activity_id', 'welfare_type', 'status') |
109 | 110 |
|
110 | 111 |
|
112 |
+class MemberActivityContributionWelfareUnlockingInfoAdmin(admin.ModelAdmin): |
|
113 |
+ list_display = ('unlocking_id', 'admin_id', 'user_id', 'activity_id', 'contribution_id', 'welfare_id', 'name', 'phone', 'address', 'tracking_number', 'is_handled', 'status', 'created_at', 'updated_at') |
|
114 |
+ list_filter = ('admin_id', 'activity_id', 'welfare_id', 'is_handled', 'status') |
|
115 |
+ |
|
116 |
+ |
|
111 | 117 |
admin.site.register(GoodsInfo, GoodsInfoAdmin) |
112 | 118 |
admin.site.register(GoodsOrderInfo, GoodsOrderInfoAdmin) |
113 | 119 |
admin.site.register(RightInfo, RightInfoAdmin) |
@@ -118,3 +124,4 @@ admin.site.register(MemberActivitySigninInfo, MemberActivitySigninInfoAdmin) |
||
118 | 124 |
admin.site.register(MemberActivityGroupShareInfo, MemberActivityGroupShareInfoAdmin) |
119 | 125 |
admin.site.register(MemberActivityContributionInfo, MemberActivityContributionInfoAdmin) |
120 | 126 |
admin.site.register(MemberActivityContributionWelfareInfo, MemberActivityContributionWelfareInfoAdmin) |
127 |
+admin.site.register(MemberActivityContributionWelfareUnlockingInfo, MemberActivityContributionWelfareUnlockingInfoAdmin) |
@@ -0,0 +1,41 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 3.2.16 on 2022-10-25 18:16 |
|
3 |
+ |
|
4 |
+from django.db import migrations, models |
|
5 |
+import shortuuidfield.fields |
|
6 |
+ |
|
7 |
+ |
|
8 |
+class Migration(migrations.Migration): |
|
9 |
+ |
|
10 |
+ dependencies = [ |
|
11 |
+ ('member', '0041_auto_20221025_1236'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.CreateModel( |
|
16 |
+ name='MemberActivityContributionWelfareUnlockingInfo', |
|
17 |
+ fields=[ |
|
18 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
19 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')), |
|
20 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
21 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
22 |
+ ('unlocking_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='福利解锁唯一标识', max_length=22, null=True, unique=True)), |
|
23 |
+ ('brand_id', models.CharField(blank=True, db_index=True, help_text='品牌唯一标识', max_length=32, null=True, verbose_name='brand_id')), |
|
24 |
+ ('brand_name', models.CharField(blank=True, help_text='品牌名称', max_length=255, null=True, verbose_name='brand_name')), |
|
25 |
+ ('admin_id', models.CharField(blank=True, db_index=True, help_text='管理员唯一标识', max_length=32, null=True, verbose_name='admin_id')), |
|
26 |
+ ('user_id', models.CharField(blank=True, db_index=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')), |
|
27 |
+ ('activity_id', models.CharField(blank=True, db_index=True, help_text='活动唯一标识', max_length=32, null=True, verbose_name='activity_id')), |
|
28 |
+ ('contribution_id', models.CharField(blank=True, db_index=True, help_text='投稿唯一标识', max_length=32, null=True, verbose_name='contribution_id')), |
|
29 |
+ ('welfare_id', models.CharField(blank=True, db_index=True, help_text='福利唯一标识', max_length=32, null=True, verbose_name='welfare_id')), |
|
30 |
+ ('name', models.CharField(blank=True, help_text='姓名', max_length=255, null=True, verbose_name='name')), |
|
31 |
+ ('phone', models.CharField(blank=True, help_text='电话', max_length=255, null=True, verbose_name='phone')), |
|
32 |
+ ('address', models.CharField(blank=True, help_text='地址', max_length=255, null=True, verbose_name='address')), |
|
33 |
+ ('tracking_number', models.CharField(blank=True, help_text='快递单号', max_length=255, null=True, verbose_name='tracking_number')), |
|
34 |
+ ('is_handled', models.BooleanField(default=False, help_text='是否已处理', verbose_name='is_handled')), |
|
35 |
+ ], |
|
36 |
+ options={ |
|
37 |
+ 'verbose_name': '会员活动投稿福利解锁信息', |
|
38 |
+ 'verbose_name_plural': '会员活动投稿福利解锁信息', |
|
39 |
+ }, |
|
40 |
+ ), |
|
41 |
+ ] |
@@ -0,0 +1,24 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 3.2.16 on 2022-10-25 18:21 |
|
3 |
+ |
|
4 |
+from django.db import migrations, models |
|
5 |
+ |
|
6 |
+ |
|
7 |
+class Migration(migrations.Migration): |
|
8 |
+ |
|
9 |
+ dependencies = [ |
|
10 |
+ ('member', '0042_memberactivitycontributionwelfareunlockinginfo'), |
|
11 |
+ ] |
|
12 |
+ |
|
13 |
+ operations = [ |
|
14 |
+ migrations.AlterField( |
|
15 |
+ model_name='memberactivityinfo', |
|
16 |
+ name='brand_id', |
|
17 |
+ field=models.CharField(blank=True, db_index=True, help_text='品牌唯一标识', max_length=32, null=True, verbose_name='brand_id'), |
|
18 |
+ ), |
|
19 |
+ migrations.AlterField( |
|
20 |
+ model_name='memberactivityinfo', |
|
21 |
+ name='brand_name', |
|
22 |
+ field=models.CharField(blank=True, help_text='品牌名称', max_length=255, null=True, verbose_name='brand_name'), |
|
23 |
+ ), |
|
24 |
+ ] |
@@ -10,12 +10,13 @@ from shortuuidfield import ShortUUIDField |
||
10 | 10 |
from TimeConvert import TimeConvert as tc |
11 | 11 |
|
12 | 12 |
from coupon.models import CouponInfo |
13 |
+from kodo.basemodels import BrandInfoMixin |
|
13 | 14 |
from mch.models import ModelInfo |
14 | 15 |
from simditor.fields import RichTextField |
15 | 16 |
from utils.qiniucdn import qiniu_file_url |
16 | 17 |
|
17 | 18 |
|
18 |
-class GoodsInfo(BaseModelMixin): |
|
19 |
+class GoodsInfo(BaseModelMixin, BrandInfoMixin): |
|
19 | 20 |
PHYSICAL = 0 |
20 | 21 |
VIRTUAL = 1 |
21 | 22 |
|
@@ -24,9 +25,6 @@ class GoodsInfo(BaseModelMixin): |
||
24 | 25 |
(VIRTUAL, u'虚拟'), |
25 | 26 |
) |
26 | 27 |
|
27 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
28 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
29 |
- |
|
30 | 28 |
good_id = ShortUUIDField(_(u'good_id'), max_length=32, blank=True, null=True, help_text=u'商品唯一标识', db_index=True, unique=True) |
31 | 29 |
good_type = models.IntegerField(_(u'good_type'), choices=GOOD_TYPE_TUPLE, default=VIRTUAL, help_text=u'商品类型', db_index=True) |
32 | 30 |
|
@@ -151,7 +149,7 @@ class GoodsInfo(BaseModelMixin): |
||
151 | 149 |
} |
152 | 150 |
|
153 | 151 |
|
154 |
-class GoodsOrderInfo(BaseModelMixin): |
|
152 |
+class GoodsOrderInfo(BaseModelMixin, BrandInfoMixin): |
|
155 | 153 |
PHYSICAL = 0 |
156 | 154 |
VIRTUAL = 1 |
157 | 155 |
|
@@ -160,9 +158,6 @@ class GoodsOrderInfo(BaseModelMixin): |
||
160 | 158 |
(VIRTUAL, u'虚拟'), |
161 | 159 |
) |
162 | 160 |
|
163 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
164 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
165 |
- |
|
166 | 161 |
order_id = ShortUUIDField(_(u'order_id'), max_length=32, blank=True, null=True, help_text=u'订单唯一标识', db_index=True, unique=True) |
167 | 162 |
|
168 | 163 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -213,7 +208,7 @@ class GoodsOrderInfo(BaseModelMixin): |
||
213 | 208 |
} |
214 | 209 |
|
215 | 210 |
|
216 |
-class RightInfo(BaseModelMixin): |
|
211 |
+class RightInfo(BaseModelMixin, BrandInfoMixin): |
|
217 | 212 |
PHYSICAL = 0 |
218 | 213 |
VIRTUAL = 1 |
219 | 214 |
COUPON = 2 |
@@ -224,9 +219,6 @@ class RightInfo(BaseModelMixin): |
||
224 | 219 |
(COUPON, u'优惠券'), |
225 | 220 |
) |
226 | 221 |
|
227 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
228 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
229 |
- |
|
230 | 222 |
right_id = ShortUUIDField(_(u'right_id'), max_length=32, blank=True, null=True, help_text=u'权益唯一标识', db_index=True, unique=True) |
231 | 223 |
right_type = models.IntegerField(_(u'right_type'), choices=RIGHT_TYPE_TUPLE, default=VIRTUAL, help_text=u'权益类型', db_index=True) |
232 | 224 |
|
@@ -311,10 +303,7 @@ class RightInfo(BaseModelMixin): |
||
311 | 303 |
return right_detail |
312 | 304 |
|
313 | 305 |
|
314 |
-class ShotTypeInfo(BaseModelMixin): |
|
315 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
316 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
317 |
- |
|
306 |
+class ShotTypeInfo(BaseModelMixin, BrandInfoMixin): |
|
318 | 307 |
shot_type_id = ShortUUIDField(_(u'shot_type_id'), max_length=32, blank=True, null=True, help_text=u'镜头类型唯一标识', db_index=True, unique=True) |
319 | 308 |
shot_type_name = models.CharField(_(u'shot_type_name'), max_length=255, blank=True, null=True, help_text=u'镜头类型名称') |
320 | 309 |
|
@@ -341,7 +330,7 @@ class ShotTypeInfo(BaseModelMixin): |
||
341 | 330 |
} |
342 | 331 |
|
343 | 332 |
|
344 |
-class MemberActivityInfo(BaseModelMixin): |
|
333 |
+class MemberActivityInfo(BaseModelMixin, BrandInfoMixin): |
|
345 | 334 |
ACTIVITY_TYPE = ( |
346 | 335 |
(0, u'线下活动'), |
347 | 336 |
(1, u'公众号文章'), |
@@ -355,9 +344,6 @@ class MemberActivityInfo(BaseModelMixin): |
||
355 | 344 |
(2, u'下线'), |
356 | 345 |
) |
357 | 346 |
|
358 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, default='', help_text=u'品牌唯一标识', db_index=True) |
|
359 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, default='', help_text=u'品牌名称') |
|
360 |
- |
|
361 | 347 |
activity_id = ShortUUIDField(_(u'activity_id'), max_length=32, blank=True, help_text=u'活动唯一标识', db_index=True, unique=True) |
362 | 348 |
|
363 | 349 |
activity_type = models.IntegerField(_(u'activity_type'), choices=ACTIVITY_TYPE, default=0, help_text=u'活动类型', db_index=True) |
@@ -572,10 +558,7 @@ class MemberActivityInfo(BaseModelMixin): |
||
572 | 558 |
} |
573 | 559 |
|
574 | 560 |
|
575 |
-class MemberActivitySignupInfo(BaseModelMixin): |
|
576 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
577 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
578 |
- |
|
561 |
+class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin): |
|
579 | 562 |
signup_id = ShortUUIDField(_(u'signup_id'), max_length=32, blank=True, null=True, help_text=u'活动报名唯一标识', db_index=True, unique=True) |
580 | 563 |
|
581 | 564 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -610,10 +593,7 @@ class MemberActivitySignupInfo(BaseModelMixin): |
||
610 | 593 |
} |
611 | 594 |
|
612 | 595 |
|
613 |
-class MemberActivitySigninInfo(BaseModelMixin): |
|
614 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
615 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
616 |
- |
|
596 |
+class MemberActivitySigninInfo(BaseModelMixin, BrandInfoMixin): |
|
617 | 597 |
signin_id = ShortUUIDField(_(u'signin_id'), max_length=32, blank=True, null=True, help_text=u'活动签到唯一标识', db_index=True, unique=True) |
618 | 598 |
|
619 | 599 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -634,10 +614,7 @@ class MemberActivitySigninInfo(BaseModelMixin): |
||
634 | 614 |
return '%d' % self.pk |
635 | 615 |
|
636 | 616 |
|
637 |
-class MemberActivityGroupShareInfo(BaseModelMixin): |
|
638 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
639 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
640 |
- |
|
617 |
+class MemberActivityGroupShareInfo(BaseModelMixin, BrandInfoMixin): |
|
641 | 618 |
group_share_id = ShortUUIDField(_(u'group_share_id'), max_length=32, blank=True, null=True, help_text=u'活动群组分享唯一标识', db_index=True) |
642 | 619 |
|
643 | 620 |
activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
@@ -664,7 +641,7 @@ class MemberActivityGroupShareInfo(BaseModelMixin): |
||
664 | 641 |
return '%d' % self.pk |
665 | 642 |
|
666 | 643 |
|
667 |
-class MemberActivityContributionInfo(BaseModelMixin): |
|
644 |
+class MemberActivityContributionInfo(BaseModelMixin, BrandInfoMixin): |
|
668 | 645 |
CONTENT_TYPE = ( |
669 | 646 |
(0, u'投稿'), |
670 | 647 |
(1, u'创作日记'), |
@@ -678,9 +655,6 @@ class MemberActivityContributionInfo(BaseModelMixin): |
||
678 | 655 |
(2, u'未通过'), |
679 | 656 |
) |
680 | 657 |
|
681 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
682 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
683 |
- |
|
684 | 658 |
contribution_id = ShortUUIDField(_(u'contribution_id'), max_length=32, blank=True, null=True, help_text=u'投稿唯一标识', db_index=True, unique=True) |
685 | 659 |
|
686 | 660 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -715,6 +689,8 @@ class MemberActivityContributionInfo(BaseModelMixin): |
||
715 | 689 |
def data(self): |
716 | 690 |
return { |
717 | 691 |
'contribution_id': self.contribution_id, |
692 |
+ 'brand_id': self.brand_id, |
|
693 |
+ 'brand_name': self.brand_name, |
|
718 | 694 |
'user_id': self.user_id, |
719 | 695 |
'activity_id': self.activity_id, |
720 | 696 |
'content_type': self.content_type, |
@@ -730,22 +706,18 @@ class MemberActivityContributionInfo(BaseModelMixin): |
||
730 | 706 |
} |
731 | 707 |
|
732 | 708 |
|
733 |
-class MemberActivityContributionWelfareInfo(BaseModelMixin): |
|
709 |
+class MemberActivityContributionWelfareInfo(BaseModelMixin, BrandInfoMixin): |
|
734 | 710 |
WELFARE_TYPE = ( |
735 | 711 |
(0, u'实物'), |
736 | 712 |
(1, u'积分'), |
737 | 713 |
(2, u'虚拟'), |
738 | 714 |
) |
739 | 715 |
|
740 |
- brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
741 |
- brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
716 |
+ welfare_id = ShortUUIDField(_(u'welfare_id'), max_length=32, blank=True, null=True, help_text=u'福利唯一标识', db_index=True, unique=True) |
|
742 | 717 |
|
743 | 718 |
activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
744 | 719 |
|
745 |
- welfare_id = ShortUUIDField(_(u'welfare_id'), max_length=32, blank=True, null=True, help_text=u'福利唯一标识', db_index=True, unique=True) |
|
746 |
- |
|
747 | 720 |
welfare_type = models.IntegerField(_(u'welfare_type'), choices=WELFARE_TYPE, default=0, help_text=u'福利类型', db_index=True) |
748 |
- |
|
749 | 721 |
welfare_title = models.CharField(_(u'welfare_title'), max_length=255, blank=True, null=True, help_text=u'福利标题') |
750 | 722 |
welfare_detail = RichTextField(_(u'welfare_detail'), blank=True, null=True, help_text=u'福利详情') |
751 | 723 |
welfare_value = models.IntegerField(_(u'welfare_value'), default=0, help_text=_(u'福利数量')) |
@@ -771,8 +743,10 @@ class MemberActivityContributionWelfareInfo(BaseModelMixin): |
||
771 | 743 |
@property |
772 | 744 |
def data(self): |
773 | 745 |
return { |
774 |
- 'activity_id': self.activity_id, |
|
775 | 746 |
'welfare_id': self.welfare_id, |
747 |
+ 'brand_id': self.brand_id, |
|
748 |
+ 'brand_name': self.brand_name, |
|
749 |
+ 'activity_id': self.activity_id, |
|
776 | 750 |
'welfare_type': self.welfare_type, |
777 | 751 |
'welfare_type_str': dict(MemberActivityContributionWelfareInfo.WELFARE_TYPE).get(self.welfare_type), |
778 | 752 |
'welfare_title': self.welfare_title, |
@@ -781,3 +755,55 @@ class MemberActivityContributionWelfareInfo(BaseModelMixin): |
||
781 | 755 |
'welfare_image_url': self.welfare_image_url, |
782 | 756 |
'welfare_image_path': self.welfare_image_path, |
783 | 757 |
} |
758 |
+ |
|
759 |
+ |
|
760 |
+class MemberActivityContributionWelfareUnlockingInfo(BaseModelMixin, BrandInfoMixin): |
|
761 |
+ WELFARE_TYPE = ( |
|
762 |
+ (0, u'实物'), |
|
763 |
+ (1, u'积分'), |
|
764 |
+ (2, u'虚拟'), |
|
765 |
+ ) |
|
766 |
+ |
|
767 |
+ unlocking_id = ShortUUIDField(_(u'unlocking_id'), max_length=32, blank=True, null=True, help_text=u'福利解锁唯一标识', db_index=True, unique=True) |
|
768 |
+ |
|
769 |
+ admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'管理员唯一标识', db_index=True) |
|
770 |
+ user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
|
771 |
+ |
|
772 |
+ activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
|
773 |
+ |
|
774 |
+ contribution_id = models.CharField(_(u'contribution_id'), max_length=32, blank=True, null=True, help_text=u'投稿唯一标识', db_index=True) |
|
775 |
+ |
|
776 |
+ welfare_id = models.CharField(_(u'welfare_id'), max_length=32, blank=True, null=True, help_text=u'福利唯一标识', db_index=True) |
|
777 |
+ |
|
778 |
+ name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'姓名') |
|
779 |
+ phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'电话') |
|
780 |
+ address = models.CharField(_(u'address'), max_length=255, blank=True, null=True, help_text=u'地址') |
|
781 |
+ |
|
782 |
+ tracking_number = models.CharField(_(u'tracking_number'), max_length=255, blank=True, null=True, help_text=u'快递单号') |
|
783 |
+ |
|
784 |
+ is_handled = models.BooleanField(_(u'is_handled'), default=False, help_text=_(u'是否已处理')) |
|
785 |
+ |
|
786 |
+ class Meta: |
|
787 |
+ verbose_name = _(u'会员活动投稿福利解锁信息') |
|
788 |
+ verbose_name_plural = _(u'会员活动投稿福利解锁信息') |
|
789 |
+ |
|
790 |
+ def __unicode__(self): |
|
791 |
+ return '%d' % self.pk |
|
792 |
+ |
|
793 |
+ @property |
|
794 |
+ def data(self): |
|
795 |
+ return { |
|
796 |
+ 'unlocking_id': self.unlocking_id, |
|
797 |
+ 'brand_id': self.brand_id, |
|
798 |
+ 'brand_name': self.brand_name, |
|
799 |
+ 'admin_id': self.admin_id, |
|
800 |
+ 'user_id': self.user_id, |
|
801 |
+ 'activity_id': self.activity_id, |
|
802 |
+ 'contribution_id': self.contribution_id, |
|
803 |
+ 'welfare_id': self.welfare_id, |
|
804 |
+ 'name': self.name, |
|
805 |
+ 'phone': self.phone, |
|
806 |
+ 'address': self.address, |
|
807 |
+ 'tracking_number': self.tracking_number, |
|
808 |
+ 'is_handled': self.is_handled, |
|
809 |
+ } |