IcloudManagementController.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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, ICloudStoreMeal, AiService, Order_Model, Device_User, CountryModel, UidSetModel, \
  7. Device_Info, VodBucketModel
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. class IcloudServeView(View):
  12. def get(self, request, *args, **kwargs):
  13. request.encoding = 'utf-8'
  14. operation = kwargs.get('operation')
  15. return self.validation(request.GET, request, operation)
  16. def post(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.POST, request, operation)
  20. def validation(self, request_dict, request, operation):
  21. language = request_dict.get('language', 'en')
  22. response = ResponseObject(language, 'pc')
  23. if operation == 'xxx': # 不认证token接口
  24. pass
  25. else:
  26. tko = TokenObject(
  27. request.META.get('HTTP_AUTHORIZATION'),
  28. returntpye='pc')
  29. if tko.code != 0:
  30. return response.json(tko.code)
  31. response.lang = tko.lang
  32. user_id = tko.userID
  33. # ai套餐信息相关
  34. if operation == 'getIcloudStoreMealList':
  35. return self.get_icloud_store_meal_list(request_dict, response)
  36. elif operation == 'addOrEditIcloudStoreMeal':
  37. return self.add_or_edit_icloud_store_meal(request_dict, response)
  38. elif operation == 'getMealLang':
  39. return self.get_meal_lang(request_dict, response)
  40. # ai套餐语言相关
  41. elif operation == 'getAiMealLanguage':
  42. return self.getAiMealLanguage(request_dict, response)
  43. elif operation == 'addOrEditAiMealLanguage':
  44. return self.addOrEditAiMealLanguage(request_dict, response)
  45. elif operation == 'deleteAiMealLanguage':
  46. return self.deleteAiMealLanguage(request_dict, response)
  47. # 设备ai套餐相关
  48. elif operation == 'getDeviceAiMealList':
  49. return self.getDeviceAiMealList(request_dict, response)
  50. # ai用户信息相关
  51. elif operation == 'getAiUserList':
  52. return self.getAiUserList(request_dict, response)
  53. # ai服务开通数量数据
  54. elif operation == 'getAiDataList':
  55. return self.getAiDataList(request_dict, response)
  56. else:
  57. return response.json(404)
  58. @staticmethod
  59. def get_icloud_store_meal_list(request_dict, response):
  60. is_select = request_dict.get('isSelect', None)
  61. page = request_dict.get('pageNo', None)
  62. line = request_dict.get('pageSize', None)
  63. if is_select:
  64. # 获取套餐ID作为选项
  65. icloud_meal_qs = ICloudStoreMeal.objects.filter().values('id')
  66. return response.json(0, {'list': CommonService.qs_to_list(icloud_meal_qs)})
  67. if not all([page, line]):
  68. return response.json(444)
  69. page = int(page)
  70. line = int(line)
  71. try:
  72. icloud_meal_qs = ICloudStoreMeal.objects.values()
  73. total = icloud_meal_qs.count()
  74. icloud_meals = icloud_meal_qs[(page - 1) * line:page * line]
  75. icloud_meal_list = []
  76. for icloud_meal in icloud_meals:
  77. # 获取支付方式列表
  78. pay_type_list = list(ICloudStoreMeal.objects.filter(id=icloud_meal['id']).values('pay_type__payment'))
  79. # 获取套餐语言
  80. lang_list = list(ICloudStoreMeal.objects.filter(id=icloud_meal['id']).values('lang__lang',
  81. 'lang__title',
  82. 'lang__content'))
  83. # 获取存储桶信息
  84. vod_bucket_qs = VodBucketModel.objects.filter(id=icloud_meal['bucket_id']).values('bucket')
  85. # 组织响应数据
  86. icloud_meal_list.append({
  87. 'IcloudMealID': icloud_meal['id'],
  88. 'price': icloud_meal['price'],
  89. 'symbol': icloud_meal['symbol'],
  90. 'currency': icloud_meal['currency'],
  91. 'is_show': icloud_meal['is_show'],
  92. 'is_delete': icloud_meal['is_delete'],
  93. 'expire': icloud_meal['expire'],
  94. 'pay_type': pay_type_list,
  95. 'lang': lang_list,
  96. 'size': icloud_meal['size'],
  97. 'bucket': vod_bucket_qs[0]['bucket'],
  98. 'addTime': icloud_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
  99. 'updTime': icloud_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
  100. })
  101. return response.json(0, {'list': icloud_meal_list, 'total': total})
  102. except Exception as e:
  103. return response.json(500, repr(e))
  104. @staticmethod
  105. def add_or_edit_icloud_store_meal(request_dict, response):
  106. # 添加/编辑套餐
  107. meal_id = request_dict.get('MealID', None)
  108. expire = int(request_dict.get('expire', None))
  109. price = request_dict.get('price', None)
  110. currency = request_dict.get('currency', None)
  111. symbol = request_dict.get('symbol', None)
  112. pay_type = request_dict.get('pay_type', None)
  113. lang = request_dict.get('lang', None)
  114. is_show = int(request_dict.get('is_show', 1))
  115. is_delete = int(request_dict.get('is_delete', 0))
  116. size = int(request_dict.get('size', None))
  117. is_edit = request_dict.get('isEdit', None)
  118. if not all([expire, price, currency, symbol, pay_type, lang, size]):
  119. return response.json(444)
  120. pay_type = pay_type.split(',')
  121. lang = lang.split(',')
  122. try:
  123. icloud_store_meal_data = {
  124. 'expire': expire,
  125. 'price': price,
  126. 'currency': currency,
  127. 'symbol': symbol,
  128. 'is_show': is_show,
  129. 'size': size,
  130. 'is_delete': is_delete
  131. }
  132. if is_edit:
  133. if not meal_id:
  134. return response.json(444)
  135. ICloudStoreMeal.objects.filter(id=meal_id).update(**icloud_store_meal_data)
  136. ICloudStoreMeal.objects.get(id=meal_id).pay_type.set(pay_type)
  137. ICloudStoreMeal.objects.get(id=meal_id).lang.set(lang)
  138. else:
  139. icloud_meal_qs = ICloudStoreMeal.objects.create(**icloud_store_meal_data)
  140. icloud_meal_qs.pay_type.set(pay_type)
  141. icloud_meal_qs.lang.set(lang)
  142. return response.json(0)
  143. except Exception as e:
  144. print(e)
  145. return response.json(500, repr(e))
  146. @staticmethod
  147. def get_meal_lang(request_dict, response):
  148. lang = Lang.objects.filter(type=3).values('id', 'lang', 'title', 'content')
  149. return response.json(0, list(lang))