AiServeController.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from django.views.generic.base import View
  4. from Model.models import Lang, AiStoreMeal
  5. from Object.ResponseObject import ResponseObject
  6. from Object.TokenObject import TokenObject
  7. from Service.CommonService import CommonService
  8. class AiServeView(View):
  9. def get(self, request, *args, **kwargs):
  10. request.encoding = 'utf-8'
  11. operation = kwargs.get('operation')
  12. return self.validation(request.GET, request, operation)
  13. def post(self, request, *args, **kwargs):
  14. request.encoding = 'utf-8'
  15. operation = kwargs.get('operation')
  16. return self.validation(request.POST, request, operation)
  17. def validation(self, request_dict, request, operation):
  18. language = request_dict.get('language', 'en')
  19. response = ResponseObject(language, 'pc')
  20. if operation == 'xxx': # 不认证token接口
  21. pass
  22. else:
  23. tko = TokenObject(
  24. request.META.get('HTTP_AUTHORIZATION'),
  25. returntpye='pc')
  26. if tko.code != 0:
  27. return response.json(tko.code)
  28. response.lang = tko.lang
  29. userID = tko.userID
  30. if operation == 'getAiStoreMealList':
  31. return self.getAiStoreMealList(request_dict, response)
  32. elif operation == 'addOrEditAiStoreMeal':
  33. return self.addOrEditAiStoreMeal(request_dict, response)
  34. elif operation == 'deleteAiStoreMeal':
  35. return self.deleteAiStoreMeal(request_dict, response)
  36. elif operation == 'getAiMealLanguage':
  37. return self.getAiMealLanguage(request_dict, response)
  38. elif operation == 'addOrEditAiMealLanguage':
  39. return self.addOrEditAiMealLanguage(request_dict, response)
  40. elif operation == 'deleteAiMealLanguage':
  41. return self.deleteAiMealLanguage(request_dict, response)
  42. else:
  43. return response.json(404)
  44. def getAiStoreMealList(self, request_dict, response):
  45. # 获取ai套餐信息数据
  46. print('request_dict: ', request_dict)
  47. isSelect = request_dict.get('isSelect', None)
  48. if isSelect:
  49. # 获取套餐ID作为选项
  50. ai_meal_qs = AiStoreMeal.objects.filter(
  51. lang__lang='cn').values(
  52. 'id', 'lang__title')
  53. return response.json(
  54. 0, {'list': CommonService.qs_to_list(ai_meal_qs)})
  55. pageNo = request_dict.get('pageNo', None)
  56. pageSize = request_dict.get('pageSize', None)
  57. if not all([pageNo, pageSize]):
  58. return response.json(444)
  59. page = int(pageNo)
  60. line = int(pageSize)
  61. try:
  62. ai_meal_qs = AiStoreMeal.objects.filter()
  63. ai_meal_val = ai_meal_qs.values(
  64. 'id',
  65. 'price',
  66. 'virtual_price',
  67. 'symbol',
  68. 'currency',
  69. 'currency',
  70. 'is_show',
  71. 'is_discounts',
  72. 'discount_price',
  73. 'effective_day',
  74. 'add_time',
  75. 'update_time')
  76. total = len(ai_meal_val)
  77. ai_meals = ai_meal_val[(page - 1) * line:page * line]
  78. ai_meal_list = []
  79. for ai_meal in ai_meals:
  80. # 获取支付方式列表
  81. pay_type_list = [
  82. pay_type['id'] for pay_type in AiStoreMeal.objects.get(
  83. id=ai_meal['id']).pay_type.values('id')]
  84. # 组织响应数据
  85. ai_meal_list.append({
  86. 'aiMealID': ai_meal['id'],
  87. 'price': ai_meal['price'],
  88. 'virtual_price': ai_meal['virtual_price'],
  89. 'symbol': ai_meal['symbol'],
  90. 'currency': ai_meal['currency'],
  91. 'is_show': ai_meal['is_show'],
  92. 'is_discounts': ai_meal['is_discounts'],
  93. 'discount_price': ai_meal['discount_price'],
  94. 'effective_day': ai_meal['effective_day'],
  95. 'pay_type': pay_type_list,
  96. 'addTime': ai_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
  97. 'updTime': ai_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
  98. })
  99. print('store_meal_list: ', ai_meal_list)
  100. return response.json(
  101. 0, {'list': ai_meal_list, 'total': total})
  102. except Exception as e:
  103. print(e)
  104. return response.json(500, repr(e))
  105. def addOrEditAiStoreMeal(self, request_dict, response):
  106. # 添加/编辑套餐
  107. print('request_dict: ', request_dict)
  108. aiMealID = request_dict.get('aiMealID', None)
  109. effective_day = int(request_dict.get('effective_day', 0))
  110. price = request_dict.get('price', '')
  111. virtual_price = request_dict.get('virtual_price', '')
  112. currency = request_dict.get('currency', '')
  113. symbol = request_dict.get('symbol', '')
  114. pay_type = request_dict.get(
  115. 'pay_type', '')[
  116. 1:-1].split(',') # '[1,2]' -> ['1','2']
  117. is_discounts = int(request_dict.get('is_discounts', 0))
  118. discount_price = request_dict.get('discount_price', '')
  119. is_show = int(request_dict.get('is_show', 1))
  120. isEdit = request_dict.get('isEdit', None)
  121. if not all([effective_day, price, currency, symbol, pay_type]):
  122. return response.json(444)
  123. try:
  124. ai_store_meal_data = {
  125. 'effective_day': effective_day,
  126. 'price': price,
  127. 'virtual_price': virtual_price,
  128. 'currency': currency,
  129. 'symbol': symbol,
  130. 'is_discounts': is_discounts,
  131. 'discount_price': discount_price,
  132. 'is_show': is_show,
  133. }
  134. if isEdit:
  135. if not aiMealID:
  136. return response.json(444)
  137. AiStoreMeal.objects.filter(
  138. id=aiMealID).update(
  139. **ai_store_meal_data)
  140. AiStoreMeal.objects.get(id=aiMealID).pay_type.set(pay_type)
  141. else:
  142. AiStoreMeal.objects.create(
  143. **ai_store_meal_data).pay_type.set(pay_type)
  144. return response.json(0)
  145. except Exception as e:
  146. print(e)
  147. return response.json(500, repr(e))
  148. def deleteAiStoreMeal(self, request_dict, response):
  149. # 删除ai套餐
  150. print('request_dict: ', request_dict)
  151. aiMealID = request_dict.get('aiMealID', None)
  152. if not aiMealID:
  153. return response.json(444)
  154. try:
  155. AiStoreMeal.objects.filter(id=aiMealID).delete()
  156. return response.json(0)
  157. except Exception as e:
  158. print(e)
  159. return response.json(500, repr(e))
  160. def getAiMealLanguage(self, request_dict, response):
  161. # 获取ai套餐语言
  162. print('request_dict: ', request_dict)
  163. aiMealID = request_dict.get('aiMealID', None)
  164. pageNo = request_dict.get('pageNo', None)
  165. pageSize = request_dict.get('pageSize', None)
  166. if not all([pageNo, pageSize]):
  167. return response.json(444)
  168. page = int(pageNo)
  169. line = int(pageSize)
  170. try:
  171. if aiMealID: # 条件查询
  172. store_meal_lang_qs = AiStoreMeal.objects.filter(id=aiMealID)
  173. else: # 查询全部
  174. store_meal_lang_qs = AiStoreMeal.objects.filter(
  175. lang__isnull=False)
  176. ai_meal_lang_val = store_meal_lang_qs.values(
  177. 'id',
  178. 'lang__id',
  179. 'lang__lang',
  180. 'lang__title',
  181. 'lang__content',
  182. 'lang__discount_content',
  183. )
  184. total = len(ai_meal_lang_val)
  185. ai_meal_langs = ai_meal_lang_val[(
  186. page - 1) * line:page * line]
  187. ai_meal_lang_list = []
  188. for ai_meal_lang in ai_meal_langs:
  189. ai_meal_lang_list.append({
  190. 'aiMealID': ai_meal_lang['id'],
  191. 'langID': ai_meal_lang['lang__id'],
  192. 'lang': ai_meal_lang['lang__lang'],
  193. 'title': ai_meal_lang['lang__title'],
  194. 'content': ai_meal_lang['lang__content'],
  195. 'discountContent': ai_meal_lang['lang__discount_content'],
  196. })
  197. print('ai_meal_lang_list: ', ai_meal_lang_list)
  198. return response.json(
  199. 0, {'list': ai_meal_lang_list, 'total': total})
  200. except Exception as e:
  201. print(e)
  202. return response.json(500, repr(e))
  203. def addOrEditAiMealLanguage(self, request_dict, response):
  204. # 添加/编辑套餐语言
  205. print('request_dict: ', request_dict)
  206. aiMealID = request_dict.get('aiMealID', None)
  207. lang = request_dict.get('lang', None)
  208. title = request_dict.get('title', None)
  209. content = request_dict.get('content', None)
  210. discount_content = request_dict.get('discountContent', '')
  211. isEdit = request_dict.get('isEdit', None)
  212. if not all([aiMealID, lang, title, content]):
  213. return response.json(444)
  214. try:
  215. # 查询套餐是否存在
  216. ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
  217. if not ai_meal_qs:
  218. return response.json(173)
  219. if isEdit: # 编辑
  220. langID = request_dict.get('langID', None)
  221. if not langID:
  222. return response.json(444)
  223. Lang.objects.filter(
  224. id=langID).update(
  225. lang=lang,
  226. title=title,
  227. content=content,
  228. discount_content=discount_content)
  229. else: # 添加
  230. lang_obj = Lang.objects.filter(
  231. lang=lang,
  232. title=title,
  233. content=content,
  234. discount_content=discount_content)
  235. if not lang_obj.exists():
  236. # 数据不存在,lang表创建数据
  237. Lang.objects.create(
  238. lang=lang,
  239. title=title,
  240. content=content,
  241. discount_content=discount_content)
  242. lang_obj = Lang.objects.filter(
  243. lang=lang,
  244. title=title,
  245. content=content,
  246. discount_content=discount_content)
  247. ai_meal_qs.lang.add(*lang_obj) # store_meal表添加语言数据
  248. return response.json(0)
  249. except Exception as e:
  250. print(e)
  251. return response.json(500, repr(e))
  252. def deleteAiMealLanguage(self, request_dict, response):
  253. # 删除套餐语言
  254. aiMealID = request_dict.get('aiMealID', None)
  255. langID = request_dict.get('langID', None)
  256. if not all([aiMealID, langID]):
  257. return response.json(444)
  258. try:
  259. ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
  260. if not ai_meal_qs:
  261. return response.json(173)
  262. lang_qs = Lang.objects.filter(id=langID)
  263. ai_meal_qs.lang.remove(*lang_qs)
  264. return response.json(0)
  265. except Exception as e:
  266. print(e)
  267. return response.json(500, repr(e))