统计会员相关数据,级别、积分、镜头数、性别、省份

FFIB 4 jaren geleden
bovenliggende
commit
5ab14efd7a
2 gewijzigde bestanden met toevoegingen van 46 en 0 verwijderingen
  1. 45 0
      api/admin_views.py
  2. 1 0
      api/urls.py

+ 45 - 0
api/admin_views.py

@@ -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)

+ 1 - 0
api/urls.py

@@ -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'),