@@ -0,0 +1,20 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Generated by Django 3.2.16 on 2024-04-10 08:12  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('account', '0061_auto_20240327_1550'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='lensmaninfo',  | 
            |
| 17 | 
                + name='remark',  | 
            |
| 18 | 
                + field=models.CharField(blank=True, help_text='备注', max_length=255, null=True, verbose_name='remark'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + ]  | 
            
                @@ -384,6 +384,8 @@ class LensmanInfo(BaseModelMixin):  | 
            ||
| 384 | 384 | 
                name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'摄影师姓名')  | 
            
| 385 | 385 | 
                phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'摄影师联系电话')  | 
            
| 386 | 386 | 
                integral = models.IntegerField(_(u'integral'), default=0, help_text=u'摄影师积分')  | 
            
| 387 | 
                + remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')  | 
            |
| 388 | 
                +  | 
            |
| 387 | 389 | 
                 | 
            
| 388 | 390 | 
                lensman_status = models.IntegerField(_(u'lensman_status'), choices=LENSMAN_STATUS, default=UNVERIFIED, help_text=u'摄影师状态', db_index=True)  | 
            
| 389 | 391 | 
                 | 
            
                @@ -432,6 +434,7 @@ class LensmanInfo(BaseModelMixin):  | 
            ||
| 432 | 434 | 
                'start_date': self.start_date,  | 
            
| 433 | 435 | 
                'end_date': self.end_date,  | 
            
| 434 | 436 | 
                'is_expired': self.is_expired,  | 
            
| 437 | 
                + 'remark': self.remark,  | 
            |
| 435 | 438 | 
                'created_at': tc.local_string(utc_dt=self.created_at),  | 
            
| 436 | 439 | 
                }  | 
            
| 437 | 440 | 
                 | 
            
                @@ -65,6 +65,7 @@ def lensman_update(request, administrator):  | 
            ||
| 65 | 65 | 
                     end_date = tc.to_date(request.POST.get('end_date', ''))
               | 
            
| 66 | 66 | 
                     name = request.POST.get('name', '')
               | 
            
| 67 | 67 | 
                     phone = request.POST.get('phone', '')
               | 
            
| 68 | 
                +    remark = request.POST.get('remark', '')
               | 
            |
| 68 | 69 | 
                 | 
            
| 69 | 70 | 
                try:  | 
            
| 70 | 71 | 
                lensman = LensmanInfo.objects.get(lensman_id=lensman_id, status=True)  | 
            
                @@ -75,6 +76,7 @@ def lensman_update(request, administrator):  | 
            ||
| 75 | 76 | 
                lensman.end_date = end_date  | 
            
| 76 | 77 | 
                lensman.name = name  | 
            
| 77 | 78 | 
                lensman.phone = phone  | 
            
| 79 | 
                + lensman.remark = remark  | 
            |
| 78 | 80 | 
                 | 
            
| 79 | 81 | 
                lensman.save()  | 
            
| 80 | 82 | 
                 | 
            
                @@ -63,8 +63,8 @@ def activity_integral_add(request, administrator):  | 
            ||
| 63 | 63 | 
                except LensmanInfo.DoesNotExist:  | 
            
| 64 | 64 | 
                         return response('400001', 'LensmanInfo Not Found', '摄影师不存在')
               | 
            
| 65 | 65 | 
                 | 
            
| 66 | 
                - user.integral += integral  | 
            |
| 67 | 
                - user.save()  | 
            |
| 66 | 
                + lensman.integral += integral  | 
            |
| 67 | 
                + lensman.save()  | 
            |
| 68 | 68 | 
                 | 
            
| 69 | 69 | 
                LensmanIntegralIncomeExpensesInfo.objects.create(  | 
            
| 70 | 70 | 
                brand_id=brand_id,  | 
            
                @@ -6,7 +6,7 @@ from django.db.models import Q  | 
            ||
| 6 | 6 | 
                from django_response import response  | 
            
| 7 | 7 | 
                 | 
            
| 8 | 8 | 
                from account.models import LensmanInfo  | 
            
| 9 | 
                -from member.models import MemberActivityInfo, MemberActivityDataInfo, MemberActivitySignupInfo  | 
            |
| 9 | 
                +from member.models import MemberActivityInfo, MemberActivityDataInfo, MemberActivitySignupInfo, MemberActivityContributionInfo  | 
            |
| 10 | 10 | 
                from utils.error.errno_utils import MemberActivityStatusCode  | 
            
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                @logit  | 
            
                @@ -58,25 +58,34 @@ def activity_data_detail(request):  | 
            ||
| 58 | 58 | 
                 | 
            
| 59 | 59 | 
                 | 
            
| 60 | 60 | 
                @logit  | 
            
| 61 | 
                -def activity_signup_message(request):  | 
            |
| 61 | 
                +def activity_message(request):  | 
            |
| 62 | 62 | 
                     user_id = request.POST.get('user_id', '')
               | 
            
| 63 | 63 | 
                 | 
            
| 64 | 64 | 
                     lensman_acts = MemberActivityInfo.objects.values_list('activity_id', flat=True).filter(activity_section=4, status=True)
               | 
            
| 65 | 
                - infos = MemberActivitySignupInfo.objects.filter(Q(user_id=user_id) & Q(activity_id__in=lensman_acts) & Q(is_read=False)).exclude(audit_status=MemberActivitySignupInfo.UNAUDITED)  | 
            |
| 65 | 
                + signup_infos = MemberActivitySignupInfo.objects.filter(Q(user_id=user_id) & Q(activity_id__in=lensman_acts) & Q(is_read=False)).exclude(audit_status=MemberActivitySignupInfo.UNAUDITED)  | 
            |
| 66 | 
                + contribution_infos = MemberActivityContributionInfo.objects.filter(Q(user_id=user_id) & Q(activity_id__in=lensman_acts) & Q(is_read=False)).exclude(audit_status=MemberActivityContributionInfo.UNAUDITED)  | 
            |
| 66 | 67 | 
                 | 
            
| 67 | 
                - infos = [info.data for info in infos]  | 
            |
| 68 | 
                + signup_infos = [signup_infos.data for info in signup_infos]  | 
            |
| 69 | 
                + contribution_infos = [contribution_infos.data for info in contribution_infos]  | 
            |
| 68 | 70 | 
                 | 
            
| 69 | 71 | 
                     return response(data={
               | 
            
| 70 | 
                - 'messages': infos  | 
            |
| 72 | 
                + 'signup_messages': signup_infos,  | 
            |
| 73 | 
                + 'contribution_messages': contribution_infos,  | 
            |
| 71 | 74 | 
                })  | 
            
| 72 | 75 | 
                 | 
            
| 76 | 
                +  | 
            |
| 73 | 77 | 
                @logit  | 
            
| 74 | 
                -def activity_signup_message_read(request):  | 
            |
| 78 | 
                +def activity_message_read(request):  | 
            |
| 75 | 79 | 
                     user_id = request.POST.get('user_id', '')
               | 
            
| 76 | 80 | 
                     signup_id = request.POST.get('signup_id', '')
               | 
            
| 81 | 
                +    contribution_id = request.POST.get('contribution_id', '')
               | 
            |
| 82 | 
                +  | 
            |
| 83 | 
                + if signup_id:  | 
            |
| 84 | 
                + MemberActivitySignupInfo.objects.filter(user_id=user_id, signup_id=signup_id).update(is_read=True)  | 
            |
| 85 | 
                +  | 
            |
| 86 | 
                + if contribution_id:  | 
            |
| 87 | 
                + MemberActivityContributionInfo.objects.filter(user_id=user_id, contribution_id=contribution_id).update(is_read=True)  | 
            |
| 77 | 88 | 
                 | 
            
| 78 | 
                - MemberActivitySignupInfo.objects.filter(user_id=user_id, signup_id=signup_id).update(is_read=True)  | 
            |
| 89 | 
                + return response(200, 'Activity Message Has Read Success', '活动消息已读')  | 
            |
| 79 | 90 | 
                 | 
            
| 80 | 
                - return response(200, 'Activity Signup Message Has Read Success', '活动报名消息已读')  | 
            |
| 81 | 91 | 
                 | 
            
| 82 | 
                -  | 
            
                @@ -0,0 +1,25 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Generated by Django 3.2.16 on 2024-04-10 08:12  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('member', '0070_auto_20240327_1550'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='memberactivitycontributioninfo',  | 
            |
| 17 | 
                + name='is_read',  | 
            |
| 18 | 
                + field=models.BooleanField(default=False, help_text='审核消息是否已读', verbose_name='is_read'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + migrations.AlterField(  | 
            |
| 21 | 
                + model_name='memberactivitycontributioninfo',  | 
            |
| 22 | 
                + name='audit_status',  | 
            |
| 23 | 
                + field=models.IntegerField(choices=[(0, '未审核'), (1, '已通过'), (2, '未通过')], db_index=True, default=0, help_text='审批状态', verbose_name='audit_status'),  | 
            |
| 24 | 
                + ),  | 
            |
| 25 | 
                + ]  | 
            
                @@ -913,11 +913,14 @@ class MemberActivityContributionInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 913 | 913 | 
                # (2, u'入围'),  | 
            
| 914 | 914 | 
                )  | 
            
| 915 | 915 | 
                 | 
            
| 916 | 
                - AUDIT_PASS = 1  | 
            |
| 916 | 
                + UNAUDITED = 0  | 
            |
| 917 | 
                + PASSED = 1  | 
            |
| 918 | 
                + UNPASSED = 2  | 
            |
| 919 | 
                +  | 
            |
| 917 | 920 | 
                AUDIT_STATUS = (  | 
            
| 918 | 
                - (0, u'未审批'),  | 
            |
| 919 | 
                - (1, u'已通过'),  | 
            |
| 920 | 
                - (2, u'未通过'),  | 
            |
| 921 | 
                + (UNAUDITED, '未审核'),  | 
            |
| 922 | 
                + (PASSED, '已通过'),  | 
            |
| 923 | 
                + (UNPASSED, '未通过'),  | 
            |
| 921 | 924 | 
                )  | 
            
| 922 | 925 | 
                 | 
            
| 923 | 926 | 
                contribution_id = ShortUUIDField(_(u'contribution_id'), max_length=32, blank=True, null=True, help_text=u'投稿唯一标识', db_index=True, unique=True)  | 
            
                @@ -946,6 +949,9 @@ class MemberActivityContributionInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 946 | 949 | 
                audit_status = models.IntegerField(_(u'audit_status'), choices=AUDIT_STATUS, default=0, help_text=u'审批状态', db_index=True)  | 
            
| 947 | 950 | 
                is_selected = models.BooleanField(_(u'is_selected'), default=False, help_text=u'是否入围')  | 
            
| 948 | 951 | 
                 | 
            
| 952 | 
                + is_read = models.BooleanField(_(u'is_read'), default=False, help_text=u'审核消息是否已读')  | 
            |
| 953 | 
                +  | 
            |
| 954 | 
                +  | 
            |
| 949 | 955 | 
                class Meta:  | 
            
| 950 | 956 | 
                verbose_name = _(u'会员活动投稿信息')  | 
            
| 951 | 957 | 
                verbose_name_plural = _(u'会员活动投稿信息')  | 
            
                @@ -39,6 +39,6 @@ urlpatterns += [  | 
            ||
| 39 | 39 | 
                 | 
            
| 40 | 40 | 
                #activity message  | 
            
| 41 | 41 | 
                urlpatterns += [  | 
            
| 42 | 
                - url(r'^member/activity/signup/message$', lensman_activity_mp_views.activity_signup_message, name='mp_member_activity_signup_message'),  | 
            |
| 43 | 
                - url(r'^member/activity/signup/message/read$', lensman_activity_mp_views.activity_signup_message_read, name='mp_member_activity_signup_message_read'),  | 
            |
| 42 | 
                + url(r'^member/activity/message$', lensman_activity_mp_views.activity_message, name='mp_member_activity_message'),  | 
            |
| 43 | 
                + url(r'^member/activity/message/read$', lensman_activity_mp_views.activity_message_read, name='mp_member_activity_message_read'),  | 
            |
| 44 | 44 | 
                ]  |