@@ -8,7 +8,7 @@ from django_response import response |
||
8 | 8 |
from paginator import pagination |
9 | 9 |
|
10 | 10 |
from account.models import UserInfo |
11 |
-from member.models import MemberActivityContributionInfo, MemberActivityInfo, MemberActivitySignupInfo |
|
11 |
+from member.models import MemberActivityContributionInfo, MemberActivityInfo, MemberActivitySignupInfo, MemberActivityDataInfo |
|
12 | 12 |
from utils.error.errno_utils import MemberActivityContributionStatusCode, MemberActivityStatusCode, UserStatusCode |
13 | 13 |
|
14 | 14 |
|
@@ -129,6 +129,44 @@ def activity_signup_detail(request): |
||
129 | 129 |
|
130 | 130 |
|
131 | 131 |
@logit |
132 |
+def activity_data_submit(request): |
|
133 |
+ user_id = request.POST.get('user_id', '') |
|
134 |
+ lensman_id = request.POST.get('lensman_id', '') |
|
135 |
+ activity_id = request.POST.get('activity_id', '') |
|
136 |
+ data_fields = request.POST.get('data_fields', '[]') |
|
137 |
+ |
|
138 |
+ try: |
|
139 |
+ act = MemberActivityInfo.objects.get(activity_id=activity_id, status=True) |
|
140 |
+ except MemberActivityInfo.DoesNotExist: |
|
141 |
+ return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
|
142 |
+ |
|
143 |
+ MemberActivityDataInfo.objects.update_or_create(user_id=user_id, activity_id=activity_id, defaults={ |
|
144 |
+ 'title': act.title, |
|
145 |
+ 'lensman_id': lensman_id, |
|
146 |
+ 'data_fields': data_fields, |
|
147 |
+ }) |
|
148 |
+ |
|
149 |
+ return response(data={ |
|
150 |
+ 'activity': act.data(user_id), |
|
151 |
+ }) |
|
152 |
+ |
|
153 |
+ |
|
154 |
+@logit |
|
155 |
+def activity_data_detail(request): |
|
156 |
+ user_id = request.POST.get('user_id', '') |
|
157 |
+ activity_id = request.POST.get('activity_id', '') |
|
158 |
+ |
|
159 |
+ try: |
|
160 |
+ data_info = MemberActivityDataInfo.objects.get(user_id=user_id, activity_id=activity_id, status=True) |
|
161 |
+ except MemberActivityDataInfo.DoesNotExist: |
|
162 |
+ return response() |
|
163 |
+ |
|
164 |
+ return response(data={ |
|
165 |
+ 'data_info': data_info.data, |
|
166 |
+ }) |
|
167 |
+ |
|
168 |
+ |
|
169 |
+@logit |
|
132 | 170 |
def activity_contribute_create(request): |
133 | 171 |
brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID |
134 | 172 |
user_id = request.POST.get('user_id', '') |
@@ -0,0 +1,44 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+# Generated by Django 3.2.16 on 2024-03-06 06:10 |
|
4 |
+ |
|
5 |
+from django.db import migrations, models |
|
6 |
+import jsonfield.fields |
|
7 |
+import shortuuidfield.fields |
|
8 |
+ |
|
9 |
+ |
|
10 |
+class Migration(migrations.Migration): |
|
11 |
+ |
|
12 |
+ dependencies = [ |
|
13 |
+ ('member', '0067_memberactivitysignupinfo_passed'), |
|
14 |
+ ] |
|
15 |
+ |
|
16 |
+ operations = [ |
|
17 |
+ migrations.AlterField( |
|
18 |
+ model_name='memberactivitysignupinfo', |
|
19 |
+ name='lensman_id', |
|
20 |
+ field=models.CharField(blank=True, db_index=True, help_text='摄影师唯一标识', max_length=32, null=True, verbose_name='user_id'), |
|
21 |
+ ), |
|
22 |
+ migrations.CreateModel( |
|
23 |
+ name='MemberActivityDataInfo', |
|
24 |
+ fields=[ |
|
25 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
26 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')), |
|
27 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
28 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
29 |
+ ('brand_id', models.CharField(blank=True, db_index=True, help_text='品牌唯一标识', max_length=32, null=True, verbose_name='brand_id')), |
|
30 |
+ ('brand_name', models.CharField(blank=True, help_text='品牌名称', max_length=255, null=True, verbose_name='brand_name')), |
|
31 |
+ ('data_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='活动数据唯一标识', max_length=22, null=True, unique=True)), |
|
32 |
+ ('user_id', models.CharField(blank=True, db_index=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')), |
|
33 |
+ ('activity_id', models.CharField(blank=True, db_index=True, help_text='活动唯一标识', max_length=32, null=True, verbose_name='activity_id')), |
|
34 |
+ ('title', models.CharField(blank=True, help_text='活动名称', max_length=255, null=True, verbose_name='title')), |
|
35 |
+ ('lensman_id', models.CharField(blank=True, db_index=True, help_text='摄影师唯一标识', max_length=32, null=True, verbose_name='user_id')), |
|
36 |
+ ('data_fields', jsonfield.fields.JSONField(blank=True, default='[]', help_text='自定义数据表单字段', null=True, verbose_name='data_fields')), |
|
37 |
+ ], |
|
38 |
+ options={ |
|
39 |
+ 'verbose_name': '会员活动数据信息', |
|
40 |
+ 'verbose_name_plural': '会员活动数据信息', |
|
41 |
+ 'unique_together': {('user_id', 'activity_id')}, |
|
42 |
+ }, |
|
43 |
+ ), |
|
44 |
+ ] |
@@ -730,7 +730,7 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin): |
||
730 | 730 |
activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
731 | 731 |
|
732 | 732 |
title = models.CharField(_(u'title'), max_length=255, blank=True, null=True, help_text=u'活动名称') |
733 |
- lensman_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
|
733 |
+ lensman_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True) |
|
734 | 734 |
|
735 | 735 |
avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'头像') |
736 | 736 |
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'姓名') |
@@ -785,6 +785,49 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin): |
||
785 | 785 |
'is_signin': self.is_signin, |
786 | 786 |
'passed': self.passed, |
787 | 787 |
} |
788 |
+ |
|
789 |
+class MemberActivityDataInfo(BaseModelMixin, BrandInfoMixin): |
|
790 |
+ data_id = ShortUUIDField(_(u'data_id'), max_length=32, blank=True, null=True, help_text=u'活动数据唯一标识', db_index=True, unique=True) |
|
791 |
+ |
|
792 |
+ user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
|
793 |
+ |
|
794 |
+ activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
|
795 |
+ |
|
796 |
+ title = models.CharField(_(u'title'), max_length=255, blank=True, null=True, help_text=u'活动名称') |
|
797 |
+ lensman_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True) |
|
798 |
+ |
|
799 |
+ data_fields = JSONField(_(u'data_fields'), blank=True, null=True, default='[]', help_text=u'自定义数据表单字段') |
|
800 |
+ |
|
801 |
+ class Meta: |
|
802 |
+ verbose_name = _(u'会员活动数据信息') |
|
803 |
+ verbose_name_plural = _(u'会员活动数据信息') |
|
804 |
+ |
|
805 |
+ unique_together = ( |
|
806 |
+ ('user_id', 'activity_id'), |
|
807 |
+ ) |
|
808 |
+ |
|
809 |
+ def __unicode__(self): |
|
810 |
+ return '%d' % self.pk |
|
811 |
+ |
|
812 |
+ @property |
|
813 |
+ def data(self): |
|
814 |
+ return { |
|
815 |
+ 'signup_id': self.data_id, |
|
816 |
+ 'lensman_id': self.lensman_id, |
|
817 |
+ 'title': self.title, |
|
818 |
+ 'data_fields': json.loads(self.data_fields) if self.data_fields else [], |
|
819 |
+ } |
|
820 |
+ |
|
821 |
+ @property |
|
822 |
+ def admindata(self): |
|
823 |
+ return { |
|
824 |
+ 'signup_id': self.data_id, |
|
825 |
+ 'user_id': self.user_id, |
|
826 |
+ 'lensman_id': self.lensman_id, |
|
827 |
+ 'activity_id': self.activity_id, |
|
828 |
+ 'title': self.title, |
|
829 |
+ 'data_fields': json.loads(self.data_fields) if self.data_fields else [], |
|
830 |
+ } |
|
788 | 831 |
|
789 | 832 |
|
790 | 833 |
class MemberActivitySigninInfo(BaseModelMixin, BrandInfoMixin): |
@@ -20,6 +20,13 @@ urlpatterns += [ |
||
20 | 20 |
url(r'^member/activity/signin$', activity_mp_views.activity_signin, name='mp_member_activity_signin'), # 会员活动签到 |
21 | 21 |
] |
22 | 22 |
|
23 |
+# activity data |
|
24 |
+urlpatterns += [ |
|
25 |
+ url(r'^member/activity/data/submit$', activity_mp_views.activity_data_submit, name='mp_member_activity_data_submit'), # 会员活动数据提交 |
|
26 |
+ url(r'^member/activity/data/detail$', activity_mp_views.activity_data_detail, name='mp_member_activity_data_detail'), # 获取会员活动报名信息 |
|
27 |
+] |
|
28 |
+ |
|
29 |
+ |
|
23 | 30 |
# activity contribution |
24 | 31 |
urlpatterns += [ |
25 | 32 |
url(r'^member/activity/contribute/create$', activity_mp_views.activity_contribute_create, name='mp_member_activity_contribute_create'), |