123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import datetime
- import json
- import random
- from django.utils.decorators import method_decorator
- from django.views import View
- from django.views.decorators.csrf import csrf_exempt
- from AnsjerUIDManage.config import SALES, ONLINE_DEVICE
- from Object.ResponseObject import ResponseObject
- class SalesView(View):
- @method_decorator(csrf_exempt)
- def dispatch(self, request, *args, **kwargs):
- return super(SalesView, self).dispatch(request, *args, **kwargs)
- def get(self, request, *args, **kwargs):
- request_dict = request.GET
- return self.validate(request_dict)
- def post(self, request, *args, **kwargs):
- request_dict = request.POST
- return self.validate(request_dict)
- def validate(self, request_dict):
- year = request_dict.get('year', 0)
- response = ResponseObject()
- if year:
- year = int(year)
- if year == 0:
- data = SALES.copy()
- data[2020] = self.get_last_year_data(SALES[2020])
- return response.json(0, {'data': self.format_data(data)})
- elif 2015 < year < 2020:
- data = {year: SALES[year]}
- return response.json(0, {'data': self.format_data(data)})
- elif year == 2020:
- data = {year: self.get_last_year_data(SALES[year])}
- return response.json(0, {'data': self.format_data(data)})
- else:
- return response.json(444)
- else:
- return response.json(444)
- def get_last_year_data(self, data):
- result = []
- month = datetime.datetime.now().month
- print(month)
- sum = 0
- for item in data:
- value = item['value']
- sale = int(value[0] / 12 * month)
- sum += sale
- for item in data:
- tmp = {}
- tmp['name'] = item['name']
- value = item['value']
- sale = int(value[0] / 12 * month)
- percent = round(sale * 100 / sum, 3)
- tmpValue = []
- tmpValue.append(sale)
- tmpValue.append(percent)
- tmpValue.append(value[2])
- tmp['value'] = tmpValue
- result.append(tmp)
- print(result)
- return result
- def format_data(self, data: dict):
- result = []
- keys = data.keys()
- for key in keys:
- tmp = {
- 'time': key,
- 'data': data[key]
- }
- result.append(tmp)
- return result
- class DeviceOnlineView(View):
- @method_decorator(csrf_exempt)
- def dispatch(self, request, *args, **kwargs):
- return super(DeviceOnlineView, self).dispatch(request, *args, **kwargs)
- def get(self, request, *args, **kwargs):
- request_dict = request.GET
- return self.validate(request_dict)
- def post(self, request, *args, **kwargs):
- request_dict = request.POST
- return self.validate(request_dict)
- def validate(self, request_dict):
- response = ResponseObject()
- return response.json(0,{'online': random.randint((0.9 * ONLINE_DEVICE), ONLINE_DEVICE)})
|