UnicomManageController.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. # Copyright (C) 2022 #
  2. # @Time : 2022/7/18 16:16
  3. # @Author : ghl
  4. # @Email : Guanhailogn@asj6.wecom.work
  5. # @File : UnicomManageController.py
  6. # @Software: PyCharm
  7. from django.db import transaction
  8. from django.views import View
  9. from Model.models import UnicomComboOrderInfo, UnicomCombo, UnicomDeviceInfo, Pay_Type
  10. from Object.ResponseObject import ResponseObject
  11. class UnicomComboView(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. response = ResponseObject()
  22. print(request)
  23. # 编辑套餐信息
  24. if operation == 'get/info':
  25. return self.get_unicom_info(request_dict, response)
  26. # 获取套餐表
  27. elif operation == 'get/pay':
  28. return self.get_pay_type(request_dict, response)
  29. # 编辑卡套餐
  30. elif operation == 'edit/combo':
  31. return self.edit_combo(request_dict, response)
  32. # 新增套餐
  33. elif operation == 'add/combo':
  34. return self.add_combo(response, request_dict)
  35. # 获取设备套餐信息
  36. elif operation == 'order/info':
  37. return self.get_order_info(response, request_dict)
  38. # 获取用户信息
  39. elif operation == 'user/info':
  40. return self.get_user_info(response, request_dict)
  41. @staticmethod
  42. def get_user_info(response, request_dict):
  43. pass
  44. @staticmethod
  45. def get_order_info(response, request_dict):
  46. serial_no = request_dict.get('serialNo', None)
  47. if not all([serial_no]):
  48. return response.json(444)
  49. get_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_no).values('iccid')
  50. iccid = get_info_qs[0]['iccid']
  51. combo_info_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid).values()
  52. if not combo_info_qs.exists():
  53. return response.json(173)
  54. try:
  55. combo_list = []
  56. for combo_info in combo_info_qs:
  57. combo_list.append(combo_info)
  58. return response.json(0, combo_list)
  59. except Exception as e:
  60. return response.json(500, e)
  61. @classmethod
  62. def edit_combo(cls, request_dict, response):
  63. """
  64. """
  65. combo_id = request_dict.get('comboID', None)
  66. package_id = request_dict.get('packageId', None)
  67. combo_name = request_dict.get('comboName', None)
  68. status = request_dict.get('status', None)
  69. combo_type = request_dict.get('comboType', None)
  70. flow_total = request_dict.get('flowTotal', None)
  71. expiration_days = request_dict.get('expirationDays', None)
  72. expiration_type = request_dict.get('expirationType', None)
  73. pay_type = request_dict.get('payType', None)
  74. price = request_dict.get('price', None)
  75. remark = request_dict.get('remark', None)
  76. updated_time = request_dict.get('updatedTime', None)
  77. created_time = request_dict.get('createdTime', None)
  78. is_show = request_dict.get('show', None)
  79. if not all([combo_id]):
  80. return response.json(444)
  81. UnicomCombo.objects.filter(id=combo_id).values()
  82. try:
  83. with transaction.atomic():
  84. re_data = {
  85. 'package_id': package_id,
  86. 'combo_name': combo_name,
  87. 'status': status,
  88. 'combo_type': combo_type,
  89. 'flow_total': flow_total,
  90. 'expiration_days': expiration_days,
  91. 'expiration_type': expiration_type,
  92. 'price': price,
  93. 'remark': remark,
  94. 'updated_time': updated_time,
  95. 'created_time': created_time,
  96. 'is_show': is_show
  97. }
  98. UnicomCombo.objects.filter(id=combo_id).update(**re_data)
  99. UnicomCombo.objects.get(id=combo_id).pay_type.set(pay_type)
  100. # UnicomCombo.objects.create(**re_data).pay_type.set(pay_type)
  101. return response.json(0)
  102. except Exception as e:
  103. return response.json(500, repr(e))
  104. @staticmethod
  105. def add_combo(response, request_dict):
  106. """
  107. 新增卡套餐
  108. """
  109. combo_id = request_dict.get('ID', None)
  110. package_id = request_dict.get('packageId', None)
  111. combo_name = request_dict.get('comboName', None)
  112. status = request_dict.get('status', None)
  113. combo_type = request_dict.get('comboType', None)
  114. flow_total = request_dict.get('flowTotal', None)
  115. expiration_days = request_dict.get('expirationDays', None)
  116. expiration_type = request_dict.get('expirationDays', None)
  117. pay_type = request_dict.get('payType', None)
  118. price = request_dict.get('price', None)
  119. remark = request_dict.get('remark', None)
  120. updated_time = request_dict.get('updatedTime', None)
  121. created_time = request_dict.get('createdTime', None)
  122. is_show = request_dict.get('show', None)
  123. pageNo = request_dict.get('pageNO', None)
  124. pageSize = request_dict.get('pageSize', None)
  125. if not all([pageNo, pageSize]):
  126. return response.json(444)
  127. try:
  128. with transaction.atomic():
  129. re_data = {
  130. 'package_id': package_id,
  131. 'combo_name': combo_name,
  132. 'status': status,
  133. 'combo_type': combo_type,
  134. 'flow_total': flow_total,
  135. 'expiration_days': expiration_days,
  136. 'expiration_type': expiration_type,
  137. 'price': price,
  138. 'remark': remark,
  139. 'updated_time': updated_time,
  140. 'created_time': created_time,
  141. 'is_show': is_show
  142. }
  143. UnicomCombo.objects.filter(id=combo_id).update(**re_data)
  144. UnicomCombo.objects.get(id=combo_id).pay_type.set(pay_type)
  145. UnicomCombo.objects.create(**re_data).pay_type.set(pay_type)
  146. return response.json(0)
  147. except Exception as e:
  148. return response.json(500, repr(e))
  149. @staticmethod
  150. def get_unicom_info(request_dict, response):
  151. """
  152. 获取套餐详细表
  153. @param request_dict:
  154. @param response:
  155. @return:
  156. """
  157. pageNo = request_dict.get('pageNo', None)
  158. pageSize = request_dict.get('pageSize', None)
  159. if not all([pageNo, pageSize]):
  160. return response.json(444)
  161. page = int(pageNo)
  162. line = int(pageSize)
  163. try:
  164. combo_qs = UnicomCombo.objects.filter(is_del=False) \
  165. .order_by('sort').values('id', 'combo_name',
  166. 'flow_total',
  167. 'expiration_days',
  168. 'expiration_type', 'price',
  169. 'remark')[(page - 1) * line:page * line]
  170. if not combo_qs.exists():
  171. return response.json(0, [])
  172. total = combo_qs.count()
  173. combo_list = []
  174. for item in combo_qs:
  175. # 获取支付方式列表
  176. pay_type_qs = Pay_Type.objects.filter(unicomcombo=item['id']).values('id', 'payment')
  177. combo_list.append({
  178. 'id': item['id'],
  179. 'comboName': item['combo_name'],
  180. 'flowTotal': item['flow_total'],
  181. 'expirationDays': item['expiration_days'],
  182. 'expirationType': item['expiration_type'],
  183. 'price': item['price'],
  184. 'remark': item['remark'],
  185. 'payTypes': list(pay_type_qs),
  186. })
  187. return response.json(0, {'list': combo_list, 'total': total})
  188. except Exception as e:
  189. return response.json(177, repr(e))
  190. @classmethod
  191. def get_pay_type(cls, request_dict, response):
  192. """
  193. 获取套餐表
  194. @param request_dict:
  195. @param response:
  196. @return:
  197. """
  198. combo_id = request_dict.get('comboID', None)
  199. if not all([combo_id]):
  200. return response.json(444)
  201. combo_id_qs = UnicomCombo.objects.filter(id=combo_id).values('pay_type')
  202. if combo_id_qs.exists():
  203. pass
  204. pay_type_qs = Pay_Type.objects.all().values('id', 'payment')
  205. if not pay_type_qs.exists():
  206. return response.json(444)
  207. try:
  208. pay_type_list = []
  209. for pay_type in pay_type_qs:
  210. pay_type_qs.exists()
  211. pay_type_list.append(pay_type)
  212. return response.json(0, pay_type_list)
  213. except Exception as e:
  214. return response.json(500, e)