123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import json
- import time
- from django.db.models import Count
- from django.views.decorators.csrf import csrf_exempt
- from Model.models import UserAppFrequencyModel, AppFrequencyStatisticsModel, Device_User, \
- AppFrequencyYearStatisticsModel
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- @csrf_exempt
- def statistcsAppFrequency(request):
- request.encoding = 'utf-8'
- response = ResponseObject()
- if request.method == 'POST':
- request_dict = request.POST
- elif request.method == 'GET':
- request_dict = request.GET
- else:
- return response.json(444)
- token = TokenObject(request_dict.get('token', None))
- if token.code != 0:
- return response.json(token.code)
- target_year = request_dict.get('year', None)
- target_month = request_dict.get('month', None)
- localtime = time.localtime()
- current_month = localtime.tm_mon
- current_year = localtime.tm_year
- if target_year and target_month:
- current_year = int(target_year)
- current_month = int(target_month)
- time_struct = [current_year, 1, 1, 0, 0, 0, 0, 0, 0]
- # 该月的开始时间
- time_struct[1] = current_month
- start_time = time.mktime(tuple(time_struct))
- # 该月的结束时间
- time_struct[1] = current_month + 1
- end_time = time.mktime(tuple(time_struct))
- # 统计该月的数据
- uaf_qs = UserAppFrequencyModel.objects.filter(data_time__gte=start_time, data_time__lt=end_time) \
- .values('type').annotate(quantity=Count('id')).order_by()
- afs_qs = AppFrequencyStatisticsModel.objects.filter(year=current_year, month=current_month)
- if afs_qs.exists():
- afs_qs.update(data=json.dumps(uaf_qs))
- else:
- data = {
- 'data': json.dumps(list(uaf_qs)),
- 'month': current_month,
- 'year': current_year
- }
- AppFrequencyStatisticsModel.objects.create(**data)
- return response.json(0)
- @csrf_exempt
- def statistcsAppFrequencyYear(request):
- request.encoding = 'utf-8'
- response = ResponseObject()
- if request.method == 'POST':
- request_dict = request.POST
- elif request.method == 'GET':
- request_dict = request.GET
- else:
- return response.json(444)
- token = TokenObject(request_dict.get('token', None))
- if token.code != 0:
- return response.json(token.code)
- year = request_dict.get('year', None)
- localtime = time.localtime()
- current_year = localtime.tm_year
- if year:
- current_year = int(year)
- afs_qs = AppFrequencyStatisticsModel.objects.filter(year=current_year).values('data', 'month')
- # num = Device_User.objects.count()
- num = 300000
- res = []
- result = {
- 0: 0,
- 1: 0,
- 2: 0,
- 3: 0,
- 4: 0,
- 5: 0,
- 6: 0
- }
- quantity = 0
- for afs in afs_qs:
- data = json.loads(afs['data'])
- for item in data:
- result[item['type']] += item['quantity']
- quantity += item['quantity']
- tmps = []
- for k, v in result.items():
- tmp = {
- 'type': k,
- 'value': round(v / 12 / num, 3)
- }
- tmps.append(tmp)
- res.append({
- 'year': current_year,
- 'data': tmps
- })
- print(res)
- afys_qs = AppFrequencyYearStatisticsModel.objects.filter(year=current_year)
- #
- if afys_qs.exists():
- afys_qs.update(data=json.dumps(res))
- else:
- data = {
- 'data': json.dumps(res),
- 'year': current_year,
- 'num': num
- }
- AppFrequencyYearStatisticsModel.objects.create(**data)
- return response.json(0)
|