|
@@ -0,0 +1,290 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+
|
|
|
+from django.views.generic.base import View
|
|
|
+from Model.models import Lang, AiStoreMeal
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
+from Object.TokenObject import TokenObject
|
|
|
+from Service.CommonService import CommonService
|
|
|
+
|
|
|
+
|
|
|
+class AiServeView(View):
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, request, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, request, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, request, operation):
|
|
|
+ language = request_dict.get('language', 'en')
|
|
|
+ response = ResponseObject(language, 'pc')
|
|
|
+ if operation == 'xxx': # 不认证token接口
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ tko = TokenObject(
|
|
|
+ request.META.get('HTTP_AUTHORIZATION'),
|
|
|
+ returntpye='pc')
|
|
|
+ if tko.code != 0:
|
|
|
+ return response.json(tko.code)
|
|
|
+ response.lang = tko.lang
|
|
|
+ userID = tko.userID
|
|
|
+ if operation == 'getAiStoreMealList':
|
|
|
+ return self.getAiStoreMealList(request_dict, response)
|
|
|
+ elif operation == 'addOrEditAiStoreMeal':
|
|
|
+ return self.addOrEditAiStoreMeal(request_dict, response)
|
|
|
+ elif operation == 'deleteAiStoreMeal':
|
|
|
+ return self.deleteAiStoreMeal(request_dict, response)
|
|
|
+ elif operation == 'getAiMealLanguage':
|
|
|
+ return self.getAiMealLanguage(request_dict, response)
|
|
|
+ elif operation == 'addOrEditAiMealLanguage':
|
|
|
+ return self.addOrEditAiMealLanguage(request_dict, response)
|
|
|
+ elif operation == 'deleteAiMealLanguage':
|
|
|
+ return self.deleteAiMealLanguage(request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(404)
|
|
|
+
|
|
|
+ def getAiStoreMealList(self, request_dict, response):
|
|
|
+ # 获取ai套餐信息数据
|
|
|
+ print('request_dict: ', request_dict)
|
|
|
+
|
|
|
+ isSelect = request_dict.get('isSelect', None)
|
|
|
+ if isSelect:
|
|
|
+ # 获取套餐ID作为选项
|
|
|
+ ai_meal_qs = AiStoreMeal.objects.filter(
|
|
|
+ lang__lang='cn').values(
|
|
|
+ 'id', 'lang__title')
|
|
|
+ return response.json(
|
|
|
+ 0, {'list': CommonService.qs_to_list(ai_meal_qs)})
|
|
|
+
|
|
|
+ pageNo = request_dict.get('pageNo', None)
|
|
|
+ pageSize = request_dict.get('pageSize', None)
|
|
|
+
|
|
|
+ if not all([pageNo, pageSize]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ page = int(pageNo)
|
|
|
+ line = int(pageSize)
|
|
|
+ try:
|
|
|
+ ai_meal_qs = AiStoreMeal.objects.filter()
|
|
|
+ ai_meal_val = ai_meal_qs.values(
|
|
|
+ 'id',
|
|
|
+ 'price',
|
|
|
+ 'virtual_price',
|
|
|
+ 'symbol',
|
|
|
+ 'currency',
|
|
|
+ 'currency',
|
|
|
+ 'is_show',
|
|
|
+ 'is_discounts',
|
|
|
+ 'discount_price',
|
|
|
+ 'effective_day',
|
|
|
+ 'add_time',
|
|
|
+ 'update_time')
|
|
|
+ total = len(ai_meal_val)
|
|
|
+ ai_meals = ai_meal_val[(page - 1) * line:page * line]
|
|
|
+ ai_meal_list = []
|
|
|
+ for ai_meal in ai_meals:
|
|
|
+ # 获取支付方式列表
|
|
|
+ pay_type_list = [
|
|
|
+ pay_type['id'] for pay_type in AiStoreMeal.objects.get(
|
|
|
+ id=ai_meal['id']).pay_type.values('id')]
|
|
|
+ # 组织响应数据
|
|
|
+ ai_meal_list.append({
|
|
|
+ 'aiMealID': ai_meal['id'],
|
|
|
+ 'price': ai_meal['price'],
|
|
|
+ 'virtual_price': ai_meal['virtual_price'],
|
|
|
+ 'symbol': ai_meal['symbol'],
|
|
|
+ 'currency': ai_meal['currency'],
|
|
|
+ 'is_show': ai_meal['is_show'],
|
|
|
+ 'is_discounts': ai_meal['is_discounts'],
|
|
|
+ 'discount_price': ai_meal['discount_price'],
|
|
|
+ 'effective_day': ai_meal['effective_day'],
|
|
|
+ 'pay_type': pay_type_list,
|
|
|
+ 'addTime': ai_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
|
|
|
+ 'updTime': ai_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
|
|
|
+ })
|
|
|
+ print('store_meal_list: ', ai_meal_list)
|
|
|
+ return response.json(
|
|
|
+ 0, {'list': ai_meal_list, 'total': total})
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def addOrEditAiStoreMeal(self, request_dict, response):
|
|
|
+ # 添加/编辑套餐
|
|
|
+ print('request_dict: ', request_dict)
|
|
|
+ aiMealID = request_dict.get('aiMealID', None)
|
|
|
+ effective_day = int(request_dict.get('effective_day', 0))
|
|
|
+ price = request_dict.get('price', '')
|
|
|
+ virtual_price = request_dict.get('virtual_price', '')
|
|
|
+ currency = request_dict.get('currency', '')
|
|
|
+ symbol = request_dict.get('symbol', '')
|
|
|
+ pay_type = request_dict.get(
|
|
|
+ 'pay_type', '')[
|
|
|
+ 1:-1].split(',') # '[1,2]' -> ['1','2']
|
|
|
+ is_discounts = int(request_dict.get('is_discounts', 0))
|
|
|
+ discount_price = request_dict.get('discount_price', '')
|
|
|
+ is_show = int(request_dict.get('is_show', 1))
|
|
|
+ isEdit = request_dict.get('isEdit', None)
|
|
|
+
|
|
|
+ if not all([effective_day, price, currency, symbol, pay_type]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ try:
|
|
|
+ ai_store_meal_data = {
|
|
|
+ 'effective_day': effective_day,
|
|
|
+ 'price': price,
|
|
|
+ 'virtual_price': virtual_price,
|
|
|
+ 'currency': currency,
|
|
|
+ 'symbol': symbol,
|
|
|
+ 'is_discounts': is_discounts,
|
|
|
+ 'discount_price': discount_price,
|
|
|
+ 'is_show': is_show,
|
|
|
+ }
|
|
|
+ if isEdit:
|
|
|
+ if not aiMealID:
|
|
|
+ return response.json(444)
|
|
|
+ AiStoreMeal.objects.filter(
|
|
|
+ id=aiMealID).update(
|
|
|
+ **ai_store_meal_data)
|
|
|
+ AiStoreMeal.objects.get(id=aiMealID).pay_type.set(pay_type)
|
|
|
+ else:
|
|
|
+ AiStoreMeal.objects.create(
|
|
|
+ **ai_store_meal_data).pay_type.set(pay_type)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def deleteAiStoreMeal(self, request_dict, response):
|
|
|
+ # 删除ai套餐
|
|
|
+ print('request_dict: ', request_dict)
|
|
|
+ aiMealID = request_dict.get('aiMealID', None)
|
|
|
+ if not aiMealID:
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ AiStoreMeal.objects.filter(id=aiMealID).delete()
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def getAiMealLanguage(self, request_dict, response):
|
|
|
+ # 获取ai套餐语言
|
|
|
+ print('request_dict: ', request_dict)
|
|
|
+ aiMealID = request_dict.get('aiMealID', None)
|
|
|
+ pageNo = request_dict.get('pageNo', None)
|
|
|
+ pageSize = request_dict.get('pageSize', None)
|
|
|
+
|
|
|
+ if not all([pageNo, pageSize]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ page = int(pageNo)
|
|
|
+ line = int(pageSize)
|
|
|
+ try:
|
|
|
+ if aiMealID: # 条件查询
|
|
|
+ store_meal_lang_qs = AiStoreMeal.objects.filter(id=aiMealID)
|
|
|
+ else: # 查询全部
|
|
|
+ store_meal_lang_qs = AiStoreMeal.objects.filter(
|
|
|
+ lang__isnull=False)
|
|
|
+ ai_meal_lang_val = store_meal_lang_qs.values(
|
|
|
+ 'id',
|
|
|
+ 'lang__id',
|
|
|
+ 'lang__lang',
|
|
|
+ 'lang__title',
|
|
|
+ 'lang__content',
|
|
|
+ 'lang__discount_content',
|
|
|
+ )
|
|
|
+ total = len(ai_meal_lang_val)
|
|
|
+ ai_meal_langs = ai_meal_lang_val[(
|
|
|
+ page - 1) * line:page * line]
|
|
|
+ ai_meal_lang_list = []
|
|
|
+ for ai_meal_lang in ai_meal_langs:
|
|
|
+ ai_meal_lang_list.append({
|
|
|
+ 'aiMealID': ai_meal_lang['id'],
|
|
|
+ 'langID': ai_meal_lang['lang__id'],
|
|
|
+ 'lang': ai_meal_lang['lang__lang'],
|
|
|
+ 'title': ai_meal_lang['lang__title'],
|
|
|
+ 'content': ai_meal_lang['lang__content'],
|
|
|
+ 'discountContent': ai_meal_lang['lang__discount_content'],
|
|
|
+ })
|
|
|
+ print('ai_meal_lang_list: ', ai_meal_lang_list)
|
|
|
+ return response.json(
|
|
|
+ 0, {'list': ai_meal_lang_list, 'total': total})
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def addOrEditAiMealLanguage(self, request_dict, response):
|
|
|
+ # 添加/编辑套餐语言
|
|
|
+ print('request_dict: ', request_dict)
|
|
|
+ aiMealID = request_dict.get('aiMealID', None)
|
|
|
+ lang = request_dict.get('lang', None)
|
|
|
+ title = request_dict.get('title', None)
|
|
|
+ content = request_dict.get('content', None)
|
|
|
+ discount_content = request_dict.get('discountContent', '')
|
|
|
+ isEdit = request_dict.get('isEdit', None)
|
|
|
+
|
|
|
+ if not all([aiMealID, lang, title, content]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ try:
|
|
|
+ # 查询套餐是否存在
|
|
|
+ ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
|
|
|
+ if not ai_meal_qs:
|
|
|
+ return response.json(173)
|
|
|
+ if isEdit: # 编辑
|
|
|
+ langID = request_dict.get('langID', None)
|
|
|
+ if not langID:
|
|
|
+ return response.json(444)
|
|
|
+ Lang.objects.filter(
|
|
|
+ id=langID).update(
|
|
|
+ lang=lang,
|
|
|
+ title=title,
|
|
|
+ content=content,
|
|
|
+ discount_content=discount_content)
|
|
|
+ else: # 添加
|
|
|
+ lang_obj = Lang.objects.filter(
|
|
|
+ lang=lang,
|
|
|
+ title=title,
|
|
|
+ content=content,
|
|
|
+ discount_content=discount_content)
|
|
|
+ if not lang_obj.exists():
|
|
|
+ # 数据不存在,lang表创建数据
|
|
|
+ Lang.objects.create(
|
|
|
+ lang=lang,
|
|
|
+ title=title,
|
|
|
+ content=content,
|
|
|
+ discount_content=discount_content)
|
|
|
+ lang_obj = Lang.objects.filter(
|
|
|
+ lang=lang,
|
|
|
+ title=title,
|
|
|
+ content=content,
|
|
|
+ discount_content=discount_content)
|
|
|
+ ai_meal_qs.lang.add(*lang_obj) # store_meal表添加语言数据
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def deleteAiMealLanguage(self, request_dict, response):
|
|
|
+ # 删除套餐语言
|
|
|
+ aiMealID = request_dict.get('aiMealID', None)
|
|
|
+ langID = request_dict.get('langID', None)
|
|
|
+
|
|
|
+ if not all([aiMealID, langID]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ try:
|
|
|
+ ai_meal_qs = AiStoreMeal.objects.get(id=aiMealID)
|
|
|
+ if not ai_meal_qs:
|
|
|
+ return response.json(173)
|
|
|
+ lang_qs = Lang.objects.filter(id=langID)
|
|
|
+ ai_meal_qs.lang.remove(*lang_qs)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|