| @@ -804,7 +804,6 @@ def member_activity_list(request): | ||
| 804 | 804 | count = logs.count() | 
| 805 | 805 | logs, left = pagination(logs, page, num) | 
| 806 | 806 | logs = [log.admindata for log in logs] | 
| 807 | - print logs | |
| 808 | 807 |      return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={ | 
| 809 | 808 | 'logs': logs, | 
| 810 | 809 | 'left': left, | 
| @@ -937,4 +936,36 @@ def member_activity_create(request): | ||
| 937 | 936 | activity_state=activity_state | 
| 938 | 937 | ) | 
| 939 | 938 |  | 
| 940 | - return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功') | |
| 939 | + return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功') | |
| 940 | + | |
| 941 | +def member_activity_share_list(request): | |
| 942 | +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) | |
| 943 | +    admin_id = request.POST.get('admin_id', '') | |
| 944 | +    activity_id = request.POST.get('activity_id', '') | |
| 945 | +    page = int(request.POST.get('page', 1)) | |
| 946 | +    num = int(request.POST.get('num', 20)) | |
| 947 | + | |
| 948 | + if brand_id != settings.KODO_DEFAULT_BRAND_ID: | |
| 949 | + return response(ProductBrandStatusCode.BRAND_NOT_MATCH) | |
| 950 | + | |
| 951 | + try: | |
| 952 | + administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) | |
| 953 | + except AdministratorInfo.DoesNotExist: | |
| 954 | + return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) | |
| 955 | + | |
| 956 | + logs = MemberActivityGroupShareInfo.objects.filter(activity_id=activity_id, status=True) | |
| 957 | + | |
| 958 | +    total_integral = logs.aggregate(Sum('integral'))['integral__sum'] | |
| 959 | + | |
| 960 | +    logs = logs.values('share_user_id').annotate(integral_sum=Sum('integral'), group_count=Count('open_gid'), user_count=Count('click_user_id')).order_by('-user_count') | |
| 961 | + | |
| 962 | + count = logs.count() | |
| 963 | + logs, left = pagination(logs, page, num) | |
| 964 | + | |
| 965 | +    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={ | |
| 966 | + 'logs': list(logs), | |
| 967 | + 'count': count, | |
| 968 | + 'left': left, | |
| 969 | + 'total_integral': total_integral | |
| 970 | + }) | |
| 971 | + | 
| @@ -331,6 +331,8 @@ urlpatterns += [ | ||
| 331 | 331 | url(r'^admin/member/activity/details$', admin_views.member_activity_details, name='member_activity_details'), | 
| 332 | 332 | url(r'^admin/member/activity/update$', admin_views.member_activity_update, name='member_activity_update'), | 
| 333 | 333 | url(r'^admin/member/activity/create$', admin_views.member_activity_create, name='member_activity_create'), | 
| 334 | + url(r'^admin/member/activity/share/list$', admin_views.member_activity_share_list, name='member_activity_share_list'), | |
| 335 | + | |
| 334 | 336 | ] | 
| 335 | 337 |  | 
| 336 | 338 | urlpatterns += [ | 
| @@ -0,0 +1,24 @@ | ||
| 1 | +# -*- coding: utf-8 -*- | |
| 2 | +# Generated by Django 1.11.26 on 2020-12-04 10:31 | |
| 3 | +from __future__ import unicode_literals | |
| 4 | + | |
| 5 | +from django.db import migrations, models | |
| 6 | + | |
| 7 | + | |
| 8 | +class Migration(migrations.Migration): | |
| 9 | + | |
| 10 | + dependencies = [ | |
| 11 | +        ('member', '0023_memberactivityinfo_activity_state'), | |
| 12 | + ] | |
| 13 | + | |
| 14 | + operations = [ | |
| 15 | + migrations.AlterField( | |
| 16 | + model_name='memberactivityinfo', | |
| 17 | + name='activity_state', | |
| 18 | + field=models.IntegerField(choices=[(0, '\u8349\u7a3f'), (1, '\u5df2\u53d1\u5e03'), (2, '\u4e0b\u7ebf')], db_index=True, default=0, help_text='\u6d3b\u52a8\u72b6\u6001', verbose_name='activity_state'), | |
| 19 | + ), | |
| 20 | + migrations.AlterUniqueTogether( | |
| 21 | + name='memberactivitygroupshareinfo', | |
| 22 | +            unique_together=set([('activity_id', 'share_user_id', 'click_user_id', 'open_gid', 'brand_id')]), | |
| 23 | + ), | |
| 24 | + ] | 
| @@ -540,6 +540,10 @@ class MemberActivityGroupShareInfo(BaseModelMixin): | ||
| 540 | 540 | class Meta: | 
| 541 | 541 | verbose_name = _(u'会员活动群组分享信息') | 
| 542 | 542 | verbose_name_plural = _(u'会员活动群组分享信息') | 
| 543 | + | |
| 544 | + unique_together = ( | |
| 545 | +            ('activity_id', 'share_user_id', 'click_user_id', 'open_gid', 'brand_id'), | |
| 546 | + ) | |
| 543 | 547 |  | 
| 544 | 548 | def __unicode__(self): | 
| 545 | 549 | return '%d' % self.pk |