#!/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))