@@ -625,6 +625,51 @@ def statistic_consumer(request): |
||
625 | 625 |
'province_logs': province_logs, |
626 | 626 |
}) |
627 | 627 |
|
628 |
+def statistic_member(request): |
|
629 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
630 |
+ admin_id = request.POST.get('admin_id', '') |
|
631 |
+ start_time = request.POST.get('start_time', '') |
|
632 |
+ end_time = request.POST.get('end_time', '') |
|
633 |
+ |
|
634 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
635 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
636 |
+ |
|
637 |
+ try: |
|
638 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
639 |
+ except AdministratorInfo.DoesNotExist: |
|
640 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
641 |
+ |
|
642 |
+ # 消费者统计 |
|
643 |
+ users = ConsumeInfoSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, status=True).values('user_id').distinct() |
|
644 |
+ |
|
645 |
+ userinfos = UserInfo.objects.none() |
|
646 |
+ |
|
647 |
+ for user in users: |
|
648 |
+ userinfos |= UserInfo.objects.filter(user_id=user.get('user_id', '')) |
|
649 |
+ |
|
650 |
+ # 会员级别 |
|
651 |
+ level_logs = list(userinfos.values('level').annotate(num=Count('user_id'))) |
|
652 |
+ |
|
653 |
+ # 会员积分 |
|
654 |
+ integral_logs = list(userinfos.values('integral').annotate(num=Count('user_id'))) |
|
655 |
+ |
|
656 |
+ # 镜头数 |
|
657 |
+ shot_logs = list(userinfos.values('shots_num').annotate(num=Count('user_id'))) |
|
658 |
+ |
|
659 |
+ # 性别 |
|
660 |
+ sex_logs = list(userinfos.values('sex').annotate(num=Count('user_id'))) |
|
661 |
+ |
|
662 |
+ # 省份 |
|
663 |
+ province_logs = list(userinfos.values('province_name').annotate(num=Count('user_id')).order_by('-num')) |
|
664 |
+ |
|
665 |
+ return response(200, 'Get Consumer Statistic Success', u'获取消费者统计成功', data={ |
|
666 |
+ 'level_logs': level_logs, |
|
667 |
+ 'integral_logs': integral_logs, |
|
668 |
+ 'shot_logs': shot_logs, |
|
669 |
+ 'sex_logs': sex_logs, |
|
670 |
+ 'province_logs': province_logs, |
|
671 |
+ }) |
|
672 |
+ |
|
628 | 673 |
def record_consumer(request): |
629 | 674 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
630 | 675 |
page = request.POST.get('page', 1) |
@@ -314,6 +314,7 @@ urlpatterns += [ |
||
314 | 314 |
|
315 | 315 |
url(r'^admin/dashboard$', admin_views.dashboard, name='dashboard'), |
316 | 316 |
url(r'^admin/statistic/consumer$', admin_views.statistic_consumer, name='statistic_consumer'), |
317 |
+ url(r'^admin/statistic/member$', admin_views.statistic_member, name='statistic_member'), |
|
317 | 318 |
|
318 | 319 |
url(r'^admin/record/consumer$', admin_views.record_consumer, name='record_consumer'), |
319 | 320 |
url(r'^admin/record/sale$', admin_views.record_sale, name='record_sale'), |