瀏覽代碼

套餐信息支持多语言

locky 4 年之前
父節點
當前提交
99b56c16cc
共有 2 個文件被更改,包括 87 次插入11 次删除
  1. 66 8
      Controller/MealManage.py
  2. 21 3
      Model/models.py

+ 66 - 8
Controller/MealManage.py

@@ -18,7 +18,7 @@ from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
-from Model.models import Store_Meal, VodBucketModel, Pay_Type
+from Model.models import Store_Meal, VodBucketModel, Pay_Type, Lang
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -68,15 +68,22 @@ class MealManage(View):
             return self.delete(request_dict, userID, response)
         elif operation == 'find':
             return self.find(request_dict, userID, response)
+        elif operation == 'query_language':
+            return self.query_language(request_dict, response)
+        elif operation == 'add_language':
+            return self.add_language(request_dict, response)
+        elif operation == 'delete_language':
+            return self.delete_language(request_dict, response)
         else:
             return response.json(444, 'operation')
 
     def add(self, request_dict, userID, response):
-        title = request_dict.get('title', None)
+        # title = request_dict.get('title', None)
         id = request_dict.get('id', None)
         price = request_dict.get('price', None)
-        content = request_dict.get('content', None)
+        # content = request_dict.get('content', None)
         day = request_dict.get('day', None)
+        commodity_code = request_dict.get('commodity_code', None)
         currency = request_dict.get('currency', None)
         bucketID = request_dict.get('bucketID', None)
         paytype = request_dict.get('paytype', None)
@@ -87,7 +94,8 @@ class MealManage(View):
         expire = request_dict.get('expire', None)
         symbol = request_dict.get('symbol', None)
 
-        if not title or not id or not price or not day or not content:
+        # if not title or not id or not price or not day or not content:
+        if not id or not price or not day:
             return response.json(444, 'title,id,price,content,day,bucketID')
         own_perm = ModelService.check_perm(userID=userID, permID=40)
         if own_perm is not True:
@@ -96,7 +104,7 @@ class MealManage(View):
             bucketQs = VodBucketModel.objects.filter(id=bucketID)
             if Store_Meal.objects.filter(id=id):
                 return response.json(10, '已存在')
-            store_meal = Store_Meal(id=id, title=title, price=price, content=content, day=day, bucket_id=bucketID,
+            store_meal = Store_Meal(id=id, price=price, day=day, bucket_id=bucketID, commodity_code = commodity_code,
                                     currency=currency, virtual_price=virtual_price, is_discounts=is_discounts,
                                     discount_price=discount_price, discount_content=discount_content, expire=expire, symbol=symbol)
             store_meal.save()
@@ -113,9 +121,7 @@ class MealManage(View):
                     'bucket__bucket': bucketQs[0].bucket,
                     'bucket__storeDay': bucketQs[0].storeDay,
                     'id': id,
-                    'title': title,
                     'price': price,
-                    'content': content,
                     'currency': currency,
                     'day': day,
                     'add_time': str(store_meal.add_time),
@@ -128,7 +134,7 @@ class MealManage(View):
         if page is None or line is None:
             return response.json(444)
 
-        qs = Store_Meal.objects.values("id", "title", "price", "content", "day", "add_time", "update_time", "currency"
+        qs = Store_Meal.objects.values("id", "price", "day", "add_time", "update_time", "currency"
                                        , "bucket_id", "commodity_type", "commodity_code", "virtual_price", "is_discounts"
                                        , "discount_price", "discount_content", "expire", "symbol"
                                        , "bucket__bucket", "bucket__area", "bucket__storeDay")
@@ -238,6 +244,58 @@ class MealManage(View):
             return response.json(0, send_json)
         return response.json(0)
 
+    def query_language(self, request_dict, response):
+        # 查询套餐语言
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        if page is None or line is None:
+            return response.json(444)
+
+        # lang_qs = Lang.objects.values('id', 'lang', 'title', 'content', 'store_meal__id')
+        storeMeal_qs = Store_Meal.objects.values('id', 'lang__id', 'lang__lang', 'lang__title', 'lang__content')
+        count = storeMeal_qs.count()
+        lang_qs = storeMeal_qs[(page - 1) * line:page * line]
+        res = {
+            'datas': list(lang_qs),
+            'count': count
+        }
+        return response.json(0, res)
+
+    def add_language(self, request_dict, response):
+        # 添加套餐语言
+        store_meal_id = request_dict.get('store_meal_id', None)
+        # lang_id = request_dict.get('lang_id', None)
+        lang = request_dict.get('lang', None)
+        title = request_dict.get('title', None)
+        content = request_dict.get('content', None)
+        if not store_meal_id or not lang or not title or not content:
+            return response.json(444, 'store_meal_id,lang,title,content')
+        # 查询该套餐是否存在
+        storeMeal_qs = Store_Meal.objects.get(id=store_meal_id)
+        if not storeMeal_qs:
+            return response.json(500)
+        lang_obj = Lang.objects.filter(lang=lang, title=title, content=content)
+        if not lang_obj.exists():
+            # 数据不存在,lang表创建数据
+            lang_obj = Lang.objects.create(lang=lang, title=title, content=content)
+        storeMeal_qs.lang.add(*lang_obj)    # store_meal表添加语言数据
+        # count = lang_obj.count()
+        # res = {
+        #     'datas': list(lang_obj),
+        #     'count': count
+        # }
+        return response.json(0)
+
+    def delete_language(self, request_dict, response):
+        # 删除套餐语言
+        store_meal_id = request_dict.get('store_meal_id', None)
+        lang_id = request_dict.get('lang_id', None)
+
+        storeMeal_qs = Store_Meal.objects.get(id=store_meal_id)
+        lang_qs = Lang.objects.get(id=lang_id)
+        storeMeal_qs.lang.remove(*lang_qs)
+        return response.json(0)
+
 
 '''
 用户获取全部套餐信息

+ 21 - 3
Model/models.py

@@ -416,7 +416,7 @@ class VodBucketModel(models.Model):
 
 class Store_Meal(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
-    title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
+    # title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
     currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币符号')
     symbol = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'符号')
     price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
@@ -426,7 +426,7 @@ class Store_Meal(models.Model):
     discount_content = models.CharField(blank=True, max_length=320, verbose_name=u'优惠信息描述')
     day = models.IntegerField(default=0, blank=True, verbose_name=u'云存录像保存天数(循环)')   # 7,30,180,360
     expire = models.IntegerField(default=0, blank=True, verbose_name=u'有效期') #单位月
-    content = models.TextField(blank=True, null=True, verbose_name=u'描述')
+    # content = models.TextField(blank=True, null=True, verbose_name=u'描述')
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     # type = models.SmallIntegerField(default=0, verbose_name='付款类型')  # 0是paypal,1为支付宝
     pay_type = models.ManyToManyField(to='Pay_Type', verbose_name='付款类型', db_table='store_meal_pay')
@@ -435,7 +435,8 @@ class Store_Meal(models.Model):
                                default=1, verbose_name='存储空间')
     commodity_type = models.SmallIntegerField(default=0, verbose_name='云存储套餐类型')  # 0:事件型 1:连续型
     commodity_code = models.CharField(default='', max_length=32, verbose_name='套餐规格码')
-    lang = models.CharField(default='', max_length=20, verbose_name='语言/国家')
+    # lang = models.CharField(default='', max_length=20, verbose_name='语言/国家')
+    lang = models.ManyToManyField(to='Lang', verbose_name='套餐语言', db_table='store_meal_lang')
 
     def __str__(self):
         return self.id
@@ -461,6 +462,23 @@ class Pay_Type(models.Model):
         ordering = ('id',)
 
 
+# 套餐语言表
+class Lang(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增ID')
+    lang = models.CharField(default='', max_length=20, verbose_name='语言/国家')
+    title = models.CharField(blank=True, max_length=32, verbose_name='标题')
+    content = models.TextField(blank=True, null=True, verbose_name='描述')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'lang'
+        verbose_name = '套餐语言'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+
 class Equipment_Version(models.Model):
     eid = models.CharField(blank=True, max_length=32, primary_key=True)
     ESN = models.CharField(blank=True, max_length=32, verbose_name=u'设备规格名称')