SalesController.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import datetime
  4. import json
  5. import random
  6. from django.utils.decorators import method_decorator
  7. from django.views import View
  8. from django.views.decorators.csrf import csrf_exempt
  9. from AnsjerUIDManage.config import SALES, ONLINE_DEVICE
  10. from Object.ResponseObject import ResponseObject
  11. class SalesView(View):
  12. @method_decorator(csrf_exempt)
  13. def dispatch(self, request, *args, **kwargs):
  14. return super(SalesView, self).dispatch(request, *args, **kwargs)
  15. def get(self, request, *args, **kwargs):
  16. request_dict = request.GET
  17. return self.validate(request_dict)
  18. def post(self, request, *args, **kwargs):
  19. request_dict = request.POST
  20. return self.validate(request_dict)
  21. def validate(self, request_dict):
  22. year = request_dict.get('year', 0)
  23. response = ResponseObject()
  24. if year:
  25. year = int(year)
  26. if year == 0:
  27. data = SALES.copy()
  28. data[2020] = self.get_last_year_data(SALES[2020])
  29. return response.json(0, {'data': self.format_data(data)})
  30. elif 2015 < year < 2020:
  31. data = {year: SALES[year]}
  32. return response.json(0, {'data': self.format_data(data)})
  33. elif year == 2020:
  34. data = {year: self.get_last_year_data(SALES[year])}
  35. return response.json(0, {'data': self.format_data(data)})
  36. else:
  37. return response.json(444)
  38. else:
  39. return response.json(444)
  40. def get_last_year_data(self, data):
  41. result = []
  42. month = datetime.datetime.now().month
  43. print(month)
  44. sum = 0
  45. for item in data:
  46. value = item['value']
  47. sale = int(value[0] / 12 * month)
  48. sum += sale
  49. for item in data:
  50. tmp = {}
  51. tmp['name'] = item['name']
  52. value = item['value']
  53. sale = int(value[0] / 12 * month)
  54. percent = round(sale * 100 / sum, 3)
  55. tmpValue = []
  56. tmpValue.append(sale)
  57. tmpValue.append(percent)
  58. tmpValue.append(value[2])
  59. tmp['value'] = tmpValue
  60. result.append(tmp)
  61. print(result)
  62. return result
  63. def format_data(self, data: dict):
  64. result = []
  65. keys = data.keys()
  66. for key in keys:
  67. tmp = {
  68. 'time': key,
  69. 'data': data[key]
  70. }
  71. result.append(tmp)
  72. return result
  73. class DeviceOnlineView(View):
  74. @method_decorator(csrf_exempt)
  75. def dispatch(self, request, *args, **kwargs):
  76. return super(DeviceOnlineView, self).dispatch(request, *args, **kwargs)
  77. def get(self, request, *args, **kwargs):
  78. request_dict = request.GET
  79. return self.validate(request_dict)
  80. def post(self, request, *args, **kwargs):
  81. request_dict = request.POST
  82. return self.validate(request_dict)
  83. def validate(self, request_dict):
  84. response = ResponseObject()
  85. return response.json(0,{'online': random.randint((0.9 * ONLINE_DEVICE), ONLINE_DEVICE)})