AiServeController.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import time
  4. from django.db.models import F
  5. from django.views.generic.base import View
  6. from Model.models import Lang, AiStoreMeal, AiService, Order_Model, Device_User, CountryModel, UidSetModel, Device_Info
  7. from Object.ResponseObject import ResponseObject
  8. from Object.TokenObject import TokenObject
  9. from Service.CommonService import CommonService
  10. class AiServeView(View):
  11. def get(self, request, *args, **kwargs):
  12. request.encoding = 'utf-8'
  13. operation = kwargs.get('operation')
  14. return self.validation(request.GET, request, operation)
  15. def post(self, request, *args, **kwargs):
  16. request.encoding = 'utf-8'
  17. operation = kwargs.get('operation')
  18. return self.validation(request.POST, request, operation)
  19. def validation(self, request_dict, request, operation):
  20. language = request_dict.get('language', 'en')
  21. response = ResponseObject(language, 'pc')
  22. if operation == 'xxx': # 不认证token接口
  23. pass
  24. else:
  25. tko = TokenObject(
  26. request.META.get('HTTP_AUTHORIZATION'),
  27. returntpye='pc')
  28. if tko.code != 0:
  29. return response.json(tko.code)
  30. response.lang = tko.lang
  31. userID = tko.userID
  32. # ai套餐信息相关
  33. if operation == 'getAiStoreMealList':
  34. return self.getAiStoreMealList(request_dict, response)
  35. elif operation == 'addOrEditAiStoreMeal':
  36. return self.addOrEditAiStoreMeal(request_dict, response)
  37. elif operation == 'deleteAiStoreMeal':
  38. return self.deleteAiStoreMeal(request_dict, response)
  39. # ai套餐语言相关
  40. elif operation == 'getAiMealLanguage':
  41. return self.getAiMealLanguage(request_dict, response)
  42. elif operation == 'addOrEditAiMealLanguage':
  43. return self.addOrEditAiMealLanguage(request_dict, response)
  44. elif operation == 'deleteAiMealLanguage':
  45. return self.deleteAiMealLanguage(request_dict, response)
  46. # 设备ai套餐相关
  47. elif operation == 'getDeviceAiMealList':
  48. return self.getDeviceAiMealList(request_dict, response)
  49. # ai用户信息相关
  50. elif operation == 'getAiUserList':
  51. return self.getAiUserList(request_dict, response)
  52. # ai服务开通数量数据
  53. elif operation == 'getAiDataList':
  54. return self.getAiDataList(request_dict, response)
  55. else:
  56. return response.json(404)
  57. def getAiStoreMealList(self, request_dict, response):
  58. # 获取ai套餐信息数据
  59. print('request_dict: ', request_dict)
  60. isSelect = request_dict.get('isSelect', None)
  61. if isSelect:
  62. # 获取套餐ID作为选项
  63. ai_meal_qs = AiStoreMeal.objects.filter().values('id')
  64. return response.json(
  65. 0, {'list': CommonService.qs_to_list(ai_meal_qs)})
  66. pageNo = request_dict.get('pageNo', None)
  67. pageSize = request_dict.get('pageSize', None)
  68. if not all([pageNo, pageSize]):
  69. return response.json(444)
  70. page = int(pageNo)
  71. line = int(pageSize)
  72. try:
  73. ai_meal_qs = AiStoreMeal.objects.filter()
  74. ai_meal_val = ai_meal_qs.values(
  75. 'id',
  76. 'price',
  77. 'virtual_price',
  78. 'symbol',
  79. 'currency',
  80. 'currency',
  81. 'is_show',
  82. 'is_discounts',
  83. 'discount_price',
  84. 'effective_day',
  85. 'add_time',
  86. 'update_time')
  87. total = len(ai_meal_val)
  88. ai_meals = ai_meal_val[(page - 1) * line:page * line]
  89. ai_meal_list = []
  90. for ai_meal in ai_meals:
  91. # 获取支付方式列表
  92. pay_type_list = [
  93. pay_type['id'] for pay_type in AiStoreMeal.objects.get(
  94. id=ai_meal['id']).pay_type.values('id')]
  95. # 组织响应数据
  96. ai_meal_list.append({
  97. 'aiMealID': ai_meal['id'],
  98. 'price': ai_meal['price'],
  99. 'virtual_price': ai_meal['virtual_price'],
  100. 'symbol': ai_meal['symbol'],
  101. 'currency': ai_meal['currency'],
  102. 'is_show': ai_meal['is_show'],
  103. 'is_discounts': ai_meal['is_discounts'],
  104. 'discount_price': ai_meal['discount_price'],
  105. 'effective_day': ai_meal['effective_day'],
  106. 'pay_type': pay_type_list,
  107. 'addTime': ai_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
  108. 'updTime': ai_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
  109. })
  110. print('store_meal_list: ', ai_meal_list)
  111. return response.json(
  112. 0, {'list': ai_meal_list, 'total': total})
  113. except Exception as e:
  114. print(e)
  115. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  116. def addOrEditAiStoreMeal(self, request_dict, response):
  117. # 添加/编辑套餐
  118. print('request_dict: ', request_dict)
  119. aiMealID = request_dict.get('aiMealID', None)
  120. effective_day = int(request_dict.get('effective_day', 0))
  121. price = request_dict.get('price', '')
  122. virtual_price = request_dict.get('virtual_price', '')
  123. currency = request_dict.get('currency', '')
  124. symbol = request_dict.get('symbol', '')
  125. pay_type = request_dict.get(
  126. 'pay_type', '')[
  127. 1:-1].split(',') # '[1,2]' -> ['1','2']
  128. is_discounts = int(request_dict.get('is_discounts', 0))
  129. discount_price = request_dict.get('discount_price', '')
  130. is_show = int(request_dict.get('is_show', 1))
  131. isEdit = request_dict.get('isEdit', None)
  132. if not all([effective_day, price, currency, symbol, pay_type]):
  133. return response.json(444)
  134. try:
  135. ai_store_meal_data = {
  136. 'effective_day': effective_day,
  137. 'price': price,
  138. 'virtual_price': virtual_price,
  139. 'currency': currency,
  140. 'symbol': symbol,
  141. 'is_discounts': is_discounts,
  142. 'discount_price': discount_price,
  143. 'is_show': is_show,
  144. }
  145. if isEdit:
  146. if not aiMealID:
  147. return response.json(444)
  148. AiStoreMeal.objects.filter(
  149. id=aiMealID).update(
  150. **ai_store_meal_data)
  151. AiStoreMeal.objects.get(id=aiMealID).pay_type.set(pay_type)
  152. else:
  153. AiStoreMeal.objects.create(
  154. **ai_store_meal_data).pay_type.set(pay_type)
  155. return response.json(0)
  156. except Exception as e:
  157. print(e)
  158. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  159. def deleteAiStoreMeal(self, request_dict, response):
  160. # 删除ai套餐
  161. print('request_dict: ', request_dict)
  162. aiMealID = request_dict.get('aiMealID', None)
  163. if not aiMealID:
  164. return response.json(444)
  165. try:
  166. AiStoreMeal.objects.filter(id=aiMealID).delete()
  167. return response.json(0)
  168. except Exception as e:
  169. print(e)
  170. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  171. def getAiMealLanguage(self, request_dict, response):
  172. # 获取ai套餐语言
  173. print('request_dict: ', request_dict)
  174. aiMealID = request_dict.get('aiMealID', None)
  175. pageNo = request_dict.get('pageNo', None)
  176. pageSize = request_dict.get('pageSize', None)
  177. if not all([pageNo, pageSize]):
  178. return response.json(444)
  179. page = int(pageNo)
  180. line = int(pageSize)
  181. try:
  182. if aiMealID: # 条件查询
  183. store_meal_lang_qs = AiStoreMeal.objects.filter(id=aiMealID)
  184. else: # 查询全部
  185. store_meal_lang_qs = AiStoreMeal.objects.filter(
  186. lang__isnull=False)
  187. ai_meal_lang_val = store_meal_lang_qs.values(
  188. 'id',
  189. 'lang__id',
  190. 'lang__lang',
  191. 'lang__title',
  192. 'lang__content',
  193. 'lang__discount_content',
  194. )
  195. total = len(ai_meal_lang_val)
  196. ai_meal_langs = ai_meal_lang_val[(
  197. page - 1) * line:page * line]
  198. ai_meal_lang_list = []
  199. for ai_meal_lang in ai_meal_langs:
  200. ai_meal_lang_list.append({
  201. 'aiMealID': ai_meal_lang['id'],
  202. 'langID': ai_meal_lang['lang__id'],
  203. 'lang': ai_meal_lang['lang__lang'],
  204. 'title': ai_meal_lang['lang__title'],
  205. 'content': ai_meal_lang['lang__content'],
  206. 'discountContent': ai_meal_lang['lang__discount_content'],
  207. })
  208. print('ai_meal_lang_list: ', ai_meal_lang_list)
  209. return response.json(
  210. 0, {'list': ai_meal_lang_list, 'total': total})
  211. except Exception as e:
  212. print(e)
  213. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  214. def addOrEditAiMealLanguage(self, request_dict, response):
  215. # 添加/编辑套餐语言
  216. print('request_dict: ', request_dict)
  217. aiMealID = request_dict.get('aiMealID', None)
  218. lang = request_dict.get('lang', None)
  219. title = request_dict.get('title', None)
  220. content = request_dict.get('content', '')
  221. discount_content = request_dict.get('discountContent', '')
  222. isEdit = request_dict.get('isEdit', None)
  223. if not all([aiMealID, lang, title]):
  224. return response.json(444)
  225. try:
  226. # 查询套餐是否存在
  227. ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
  228. if not ai_meal_qs:
  229. return response.json(173)
  230. if isEdit: # 编辑
  231. langID = request_dict.get('langID', None)
  232. if not langID:
  233. return response.json(444)
  234. Lang.objects.filter(
  235. id=langID).update(
  236. lang=lang,
  237. title=title,
  238. content=content,
  239. discount_content=discount_content)
  240. else: # 添加
  241. lang_obj = Lang.objects.filter(
  242. lang=lang,
  243. title=title,
  244. content=content,
  245. discount_content=discount_content)
  246. if not lang_obj.exists():
  247. # 数据不存在,lang表创建数据
  248. Lang.objects.create(
  249. lang=lang,
  250. title=title,
  251. content=content,
  252. discount_content=discount_content,
  253. type=1)
  254. lang_obj = Lang.objects.filter(
  255. lang=lang,
  256. title=title,
  257. content=content,
  258. discount_content=discount_content)
  259. ai_meal_qs.lang.add(*lang_obj) # store_meal表添加语言数据
  260. return response.json(0)
  261. except Exception as e:
  262. print(e)
  263. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  264. def deleteAiMealLanguage(self, request_dict, response):
  265. # 删除套餐语言
  266. aiMealID = request_dict.get('aiMealID', None)
  267. langID = request_dict.get('langID', None)
  268. if not all([aiMealID, langID]):
  269. return response.json(444)
  270. try:
  271. ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
  272. if not ai_meal_qs:
  273. return response.json(173)
  274. lang_qs = Lang.objects.filter(id=langID)
  275. ai_meal_qs.lang.remove(*lang_qs)
  276. return response.json(0)
  277. except Exception as e:
  278. print(e)
  279. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  280. def getDeviceAiMealList(self, request_dict, response):
  281. pageNo = request_dict.get('pageNo', None)
  282. pageSize = request_dict.get('pageSize', None)
  283. uid = request_dict.get('uid', None)
  284. serialNumber = request_dict.get('serialNumber', None)
  285. if not all([pageNo, pageSize]):
  286. return response.json(444)
  287. page = int(pageNo)
  288. line = int(pageSize)
  289. try:
  290. ai_service_qs = AiService.objects.all()
  291. if uid:
  292. ai_service_qs = ai_service_qs.filter(uid__contains=uid)
  293. if serialNumber:
  294. device_info_qs = Device_Info.objects.filter(serial_number=serialNumber).values('UID')
  295. uid = device_info_qs[0]['UID'] if device_info_qs.exists() else 'N/A'
  296. ai_service_qs = ai_service_qs.filter(uid__icontains=uid)
  297. if not ai_service_qs.exists():
  298. return response.json(0, [])
  299. count = ai_service_qs.count()
  300. ai_service_qs = ai_service_qs.annotate(
  301. user_name=F('orders__userID__username')).values(
  302. 'id',
  303. 'uid',
  304. 'channel',
  305. 'use_status',
  306. 'detect_status',
  307. 'detect_group',
  308. 'endTime',
  309. 'addTime',
  310. 'updTime', 'user_name').order_by('-addTime')
  311. ai_service_qs = ai_service_qs[(page - 1) * line:page * line]
  312. ai_service_list = []
  313. for ai_service in ai_service_qs:
  314. data = {
  315. 'id': ai_service['id'],
  316. 'uid': ai_service['uid'],
  317. 'channel': ai_service['channel'],
  318. 'use_status': ai_service['use_status'],
  319. 'detect_status': ai_service['detect_status'],
  320. 'detect_group': ai_service['detect_group'],
  321. 'endTime': ai_service['endTime'],
  322. 'addTime': ai_service['addTime'],
  323. 'updTime': ai_service['updTime'],
  324. 'user_name': ai_service['user_name'],
  325. 'serial_number': 'N/A'
  326. }
  327. device_info_qs = Device_Info.objects.filter(UID=ai_service['uid']).values('serial_number')
  328. if device_info_qs.exists():
  329. data['serial_number'] = device_info_qs[0]['serial_number'] if device_info_qs[0]['serial_number'] else 'N/A'
  330. ai_service_list.append(data)
  331. return response.json(
  332. 0, {'list': ai_service_list, 'total': count})
  333. except Exception as e:
  334. print(e)
  335. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  336. def getAiUserList(self, request_dict, response):
  337. username = request_dict.get('username', None)
  338. NickName = request_dict.get('NickName', None)
  339. uid = request_dict.get('uid', None)
  340. payType = request_dict.get('payType', None)
  341. status = request_dict.get('status', None)
  342. use_status = request_dict.get('use_status', None)
  343. serialNumber = request_dict.get('serialNumber', None)
  344. addTimeRange = request_dict.getlist('addTimeRange[]', None)
  345. pageNo = request_dict.get('pageNo', None)
  346. pageSize = request_dict.get('pageSize', None)
  347. if not all([pageNo, pageSize]):
  348. return response.json(444)
  349. page = int(pageNo)
  350. line = int(pageSize)
  351. try:
  352. order_qs = Order_Model.objects.filter(
  353. order_type=1).order_by('-addTime')
  354. if username or NickName or uid or payType or status or use_status or addTimeRange or serialNumber:
  355. if username:
  356. order_qs = order_qs.filter(
  357. userID__username__contains=username)
  358. if NickName:
  359. order_qs = order_qs.filter(
  360. userID__NickName__contains=NickName)
  361. if uid:
  362. order_qs = order_qs.filter(UID__contains=uid)
  363. if payType:
  364. order_qs = order_qs.filter(payType=payType)
  365. if status:
  366. order_qs = order_qs.filter(status=status)
  367. if use_status:
  368. order_qs = order_qs.filter(use_status=use_status)
  369. if serialNumber:
  370. device_info_qs = Device_Info.objects.filter(serial_number=serialNumber).values('UID')
  371. uid = device_info_qs[0]['UID'] if device_info_qs.exists() else 'N/A'
  372. order_qs = order_qs.filter(UID=uid)
  373. if addTimeRange:
  374. addStartTime, addEndTime = int(
  375. addTimeRange[0][:-3]), int(addTimeRange[1][:-3])
  376. order_qs = order_qs.filter(
  377. addTime__gte=addStartTime,
  378. addTime__lte=addEndTime)
  379. if not order_qs.exists():
  380. return response.json(0, {'list': [], 'total': 0})
  381. count = order_qs.count()
  382. else:
  383. count = Order_Model.objects.filter(order_type=1).count()
  384. order_qs = order_qs.values(
  385. 'userID__username',
  386. 'userID__NickName',
  387. 'UID',
  388. 'channel',
  389. 'orderID',
  390. 'desc',
  391. 'payType',
  392. 'price',
  393. 'status',
  394. 'refunded_amount',
  395. 'addTime',
  396. 'updTime', 'userID_id',
  397. )[(page - 1) * line:page * line]
  398. data_list = []
  399. for order in order_qs:
  400. data_dict = {
  401. 'username': order['userID__username'],
  402. 'NickName': order['userID__NickName'],
  403. 'uid': order['UID'],
  404. 'channel': order['channel'],
  405. 'orderID': order['orderID'],
  406. 'desc': order['desc'],
  407. 'payType': order['payType'],
  408. 'price': order['price'],
  409. 'status': order['status'],
  410. 'refunded_amount': order['refunded_amount'],
  411. 'addTime': order['addTime'],
  412. 'updTime': order['updTime'],
  413. }
  414. us_qs = UidSetModel.objects.filter(uid=order['UID']).values('ip')
  415. data_dict['ip'] = us_qs.first()['ip'] if us_qs.exists() else ''
  416. dev_user_qs = Device_User.objects.filter(userID=order['userID_id']).values('region_country')
  417. region_country = dev_user_qs.first()['region_country']
  418. country = '未知国家'
  419. country_qs = CountryModel.objects.filter(id=region_country).values('country_name')
  420. if country_qs.exists():
  421. country = country_qs.first()['country_name']
  422. data_dict['country'] = country
  423. data_dict['deviceCountry'] = self.get_device_country(data_dict['ip'])
  424. uid_set_qs = UidSetModel.objects.filter(uid=order['UID']).values('version')
  425. data_dict['version'] = uid_set_qs.first()['version'] if uid_set_qs.exists() else ''
  426. ai_service_qs = AiService.objects.filter(
  427. orders_id=order['orderID']).values(
  428. 'endTime', 'use_status')
  429. if ai_service_qs.exists():
  430. data_dict['endTime'] = ai_service_qs[0]['endTime']
  431. data_dict['use_status'] = ai_service_qs[0]['use_status']
  432. data_dict['serial_number'] = 'N/A'
  433. device_info_qs = Device_Info.objects.filter(UID=order['UID']).values('serial_number')
  434. if device_info_qs.exists():
  435. data_dict['serial_number'] = device_info_qs[0]['serial_number'] if device_info_qs[0][
  436. 'serial_number'] else 'N/A'
  437. data_list.append(data_dict)
  438. return response.json(
  439. 0, {'list': data_list, 'total': count})
  440. except Exception as e:
  441. print(e)
  442. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  443. @staticmethod
  444. def get_device_country(ip):
  445. """
  446. 根据IP获取国家名称
  447. """
  448. if not ip:
  449. return '未知国家'
  450. ipInfo = CommonService.getIpIpInfo(ip, 'EN')
  451. country_qs = CountryModel.objects.filter(country_code=ipInfo['country_code']).values('id', 'country_name')
  452. if not country_qs.exists():
  453. return '未知国家'
  454. return country_qs[0]['country_name']
  455. def getAiDataList(self, request_dict, response):
  456. year = request_dict.get('year', None)
  457. Jan = int(time.mktime(time.strptime(year + '-1-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  458. Feb = int(time.mktime(time.strptime(year + '-2-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  459. Mar = int(time.mktime(time.strptime(year + '-3-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  460. Apr = int(time.mktime(time.strptime(year + '-4-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  461. May = int(time.mktime(time.strptime(year + '-5-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  462. Jun = int(time.mktime(time.strptime(year + '-6-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  463. Jul = int(time.mktime(time.strptime(year + '-7-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  464. Aug = int(time.mktime(time.strptime(year + '-8-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  465. Sep = int(time.mktime(time.strptime(year + '-9-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  466. Oct = int(time.mktime(time.strptime(year + '-10-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  467. Nov = int(time.mktime(time.strptime(year + '-11-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  468. Dec = int(time.mktime(time.strptime(year + '-12-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  469. Jan_next = int(time.mktime(time.strptime(str(int(year) + 1) + '-1-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
  470. list_data = []
  471. ai_store_meal_qs = AiStoreMeal.objects.filter(lang__lang='cn').values('id', 'lang__title', 'lang__content')
  472. if not ai_store_meal_qs.exists():
  473. return response.json(173)
  474. try:
  475. for ai_store_meal in ai_store_meal_qs:
  476. name = ai_store_meal['lang__title'] + '-' + ai_store_meal['lang__content']
  477. order = Order_Model.objects.filter(order_type=1, status=1, ai_rank=ai_store_meal['id'])
  478. if not order.exists():
  479. continue
  480. Jan_count = order.filter(status=1, addTime__range=[Jan, Feb]).count()
  481. Feb_count = order.filter(status=1, addTime__range=[Feb, Mar]).count()
  482. Mar_count = order.filter(status=1, addTime__range=[Mar, Apr]).count()
  483. Apr_count = order.filter(status=1, addTime__range=[Apr, May]).count()
  484. May_count = order.filter(status=1, addTime__range=[May, Jun]).count()
  485. Jun_count = order.filter(status=1, addTime__range=[Jun, Jul]).count()
  486. Jul_count = order.filter(status=1, addTime__range=[Jul, Aug]).count()
  487. Aug_count = order.filter(status=1, addTime__range=[Aug, Sep]).count()
  488. Sep_count = order.filter(status=1, addTime__range=[Sep, Oct]).count()
  489. Oct_count = order.filter(status=1, addTime__range=[Oct, Nov]).count()
  490. Nov_count = order.filter(status=1, addTime__range=[Nov, Dec]).count()
  491. Dec_count = order.filter(status=1, addTime__range=[Dec, Jan_next]).count()
  492. data = [Jan_count, Feb_count, Mar_count, Apr_count, May_count, Jun_count, Jul_count, Aug_count,
  493. Sep_count,
  494. Oct_count, Nov_count, Dec_count]
  495. cloud_data = {
  496. 'name': name,
  497. 'type': 'line',
  498. 'data': data,
  499. }
  500. list_data.append(cloud_data)
  501. return response.json(0, {'list': list_data})
  502. except Exception as e:
  503. print(e)
  504. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))