add admin/statistic/statistic_daily and admin/statistic/statistic_model

FFIB 5 anos atrás
pai
commit
3a67ad5f19
2 arquivos alterados com 55 adições e 1 exclusões
  1. 53 1
      api/admin_views.py
  2. 2 0
      api/urls.py

+ 53 - 1
api/admin_views.py

@@ -9,9 +9,10 @@ from django_response import response
9 9
 from paginator import pagination
10 10
 from TimeConvert import TimeConvert as tc
11 11
 from django.utils import timezone
12
+from django.db.models import Sum
12 13
 
13 14
 from mch.models import AdministratorInfo
14
-from statistic.models import ConsumeModelSaleStatisticInfo
15
+from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo
15 16
 from account.models import UserInfo
16 17
 from integral.models import SaleclerkSubmitLogInfo
17 18
 from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,
@@ -230,6 +231,8 @@ def statistic_userprofile(request):
230 231
         logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
231 232
     
232 233
     sexs = {0: 0, 1: 0, 2: 0}
234
+    subscribes = {0: 0, 1: 0}
235
+    has_membercards = {0: 0, 1: 0}
233 236
     provinces = defaultdict(int)
234 237
     for log in logs:
235 238
         for user in log.users:
@@ -240,9 +243,58 @@ def statistic_userprofile(request):
240 243
 
241 244
             provinces[user.province_name] += 1
242 245
             sexs[user.sex] += 1
246
+            subscribes[user.subscribe] += 1
247
+            has_membercards[user.has_membercard] += 1
243 248
 
244 249
     return response(200, 'Get User Profile Success', u'获取用户画像成功', data={
245 250
         'provinces': provinces,
246 251
         'sexs': sexs,
252
+        'subscribe': subscribes,
253
+        'has_membercards': has_membercards,
247 254
     })
248 255
     
256
+def statistic_daily(request):
257
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
258
+    admin_id = request.POST.get('admin_id', '')
259
+    start_time = request.POST.get('start_time', '')
260
+    end_time = request.POST.get('end_time', '')
261
+
262
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
263
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
264
+
265
+    try:
266
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
267
+    except AdministratorInfo.DoesNotExist:
268
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
269
+    
270
+    sale_logs = ConsumeSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
271
+    user_logs = ConsumeUserStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
272
+
273
+    sale_logs = [log.data for log in sale_logs]
274
+    user_logs = [log.data for log in user_logs]
275
+
276
+    return response(200, 'Get User Sales Statistic Success', u'获取销量统计成功', data={
277
+        'sale_logs': sale_logs,
278
+        'user_logs': user_logs,
279
+    })
280
+
281
+def statistic_model(request):
282
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
283
+    admin_id = request.POST.get('admin_id', '')
284
+    start_time = request.POST.get('start_time', '')
285
+    end_time = request.POST.get('end_time', '')
286
+
287
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
288
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
289
+
290
+    try:
291
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
292
+    except AdministratorInfo.DoesNotExist:
293
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
294
+    
295
+    logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time).values_list('model_name').annotate(Sum('num'))
296
+
297
+    logs = [{'model_name': log[0], 'num': log[1]} for log in logs]
298
+    return response(200, 'Get Model Statistic Success', u'获取型号统计成功', data={
299
+        'logs': logs
300
+    })

+ 2 - 0
api/urls.py

@@ -296,6 +296,8 @@ urlpatterns += [
296 296
 
297 297
     #statistic
298 298
     url(r'^admin/statistic/user_profile$', admin_views.statistic_userprofile, name='statistic_userprofile'),
299
+    url(r'^admin/statistic/consumer/daily$', admin_views.statistic_daily, name='statistic_daily'),
300
+    url(r'^admin/statistic/consumer/model$', admin_views.statistic_model, name='statistic_model'),
299 301
 ]
300 302
 
301 303
 urlpatterns += [