Bläddra i källkod

Merge remote-tracking branch 'origin/master'

locky 1 år sedan
förälder
incheckning
3a48c5bf39

+ 1 - 1
AdminController/SerialManageController.py

@@ -77,7 +77,7 @@ class SerialView(View):
         try:
             # 根据vpg关联的region确定area
             region = VPGModel.objects.filter(id=vpg_id).values('region__name')[0]['region__name']
-            area = 0 if region == '中国' else 1
+            area = 0 if region in ['中国', '测试'] else 1
             uid_list = uid_list.splitlines()  # 按行('\r', '\r\n', \n')切割字符串返回列表
             bulk = []
             for uid in uid_list:

+ 11 - 4
Controller/CloudStorage.py

@@ -27,7 +27,7 @@ from Controller.CloudPhoto.CloudServiceController import CloudServiceController
 from Controller.PaymentCycle import Paypal
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, UID_Bucket, StsCrdModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMsgModel, Unused_Uid_Meal, PromotionRuleModel, \
-    VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary, VodHlsTagType
+    VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary, VodHlsTagType, UidSetModel
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.AWS.S3Email import S3Email
 from Object.AliPayObject import AliPayObject
@@ -187,7 +187,14 @@ class CloudStorageView(View):
         device_info_qs = Device_Info.objects.filter(Q(UID=uid), Q(Type__lte=4) | Q(Type=10001))
         if device_info_qs.exists():
             return response.json(0)
-
+        # 查询设备像素
+        uid_set_qs = UidSetModel.objects.filter(uid=uid).values('ucode')
+        if not uid_set_qs.exists():
+            return response.json(173)
+        ucode = uid_set_qs[0]['ucode']
+        pixel_level = 0
+        if ucode and int(ucode[-5]) >= 8:
+            pixel_level = 1
         store_qs = Store_Meal.objects.filter(Q(lang__lang=lang), Q(is_show=0), ~Q(pay_type='11'))  # 过滤激活码、隐藏套餐
         experience_context_qs = ExperienceContextModel.objects.filter(uid=uid, experience_type=0)
 
@@ -196,9 +203,9 @@ class CloudStorageView(View):
 
         # 没体验过的设备只返回体验套餐,体验过的不返回体验套餐
         if experience_context_qs.exists():
-            store_qs = store_qs.filter(~Q(pay_type='10'))
+            store_qs = store_qs.filter(~Q(pay_type='10'), Q(pixel_level=pixel_level))  # 筛选像素等级
         else:
-            store_qs = store_qs.filter(pay_type='10')
+            store_qs = store_qs.filter(pay_type='10')  # 体验套餐不区分像素等级
 
         store_qs = store_qs.annotate(title=F('lang__title'), content=F('lang__content'),
                                      discount_content=F('lang__discount_content'))

+ 13 - 35
Controller/Cron/CronTaskController.py

@@ -318,8 +318,8 @@ class CronUpdateDataView(View):
             return self.updateSerialStatus(request_dict, response)
         elif operation == 'reset-region-id':  # 重置地区id
             return self.reset_region_id(request_dict, response)
-        elif operation == 'updateExperienceMeal':  # 定时修改体验套餐有效期为1个月
-            return self.update_experience_meal(request_dict, response)
+        elif operation == 'updateVodMeal':  # 定时修改体验套餐有效期为1个月
+            return self.update_vod_meal(request_dict, response)
         else:
             return response.json(404)
 
@@ -561,49 +561,27 @@ class CronUpdateDataView(View):
             return response.json(500)
 
     @staticmethod
-    def update_experience_meal(request_dict, response):
+    def update_vod_meal(request_dict, response):
         """
         定时修改体验套餐有效期为1个月
         @param request_dict: 请求参数
         @param response: 响应对象
         """
         try:
-            meal_qs = Store_Meal.objects.filter(is_show=0, pay_type=10, expire=3, day=7).values('id', 'bucket')
-            meal_id = meal_qs[0]['id']
-            lang_qs = Lang.objects.filter(store_meal__id=meal_id).values('lang')
-            for item in lang_qs:
-                lang = item['lang']
-                if lang == 'cn':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='一个月免费套餐')
-                elif lang == 'en':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='1-Month plan (free trial)')
-                elif lang == 'es':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Plan de 1 mes (prueba gratuita)')
-                elif lang == 'fr':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Forfait de 1 mois (essai gratuit)')
-                elif lang == 'de':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='1 Monat Paket (kostenlose Testversion) ')
-                elif lang == 'cn_tw':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='一個月套餐(免費試用)')
-                elif lang == 'pt':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Plano de 1 mês (teste gratuito)')
-                elif lang == 'ru':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Тариф 1 месяц (бесплатный пробный период)')
-                elif lang == 'ja':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='1ヶ月プラン(無料試用)')
-                elif lang == 'it':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Pacchetto di 1 mese (prova gratuita)')
-                elif lang == 'pl':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='jednomiesięczny pakiet (bezpłatny próbny)')
-                elif lang == 'nl':
-                    Lang.objects.filter(lang=lang, store_meal__id=meal_id).update(content='Pakket van 1 maand (gratis proefperiode)')
-            VodBucketModel.objects.filter(id=meal_qs[0]['bucket']).update(content='国内存储桶免费体验30天,录像保存7天')
-            meal_qs.update(expire=1)
+            Store_Meal.objects.filter(is_show=0, expire=12, pixel_level=0).update(price='39.99',
+                                                                                  virtual_price='56.6',
+                                                                                  sort=1)
+            Store_Meal.objects.filter(is_show=0, cycle_config_id=1, pixel_level=0).update(price='3.65',
+                                                                                          virtual_price='5.66',
+                                                                                          sort=2)
+            Store_Meal.objects.filter(id=12).update(price='3.99', virtual_price='5.66', sort=3)
+            Store_Meal.objects.filter(id__in=(16, 17, 18)).update(is_show=0)
             return response.json(0)
         except Exception as e:
-            LOGGER.info('---修改体验套餐有效期---:{}'.format(repr(e)))
+            LOGGER.info('---修改云存套餐内容异常---:{}'.format(repr(e)))
             return response.json(500)
 
+
 class CronCollectDataView(View):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'

+ 1 - 1
Controller/WeatherControl.py

@@ -58,7 +58,7 @@ class WeatherView(View):
                 city_obj = WeatherInfo(city_id)
                 temp, humidity = city_obj.get_city_weather()
                 if temp and humidity:
-                    redis_obj.set_ex_data('city_id_{}_weather'.format(city_id), '{}/{}'.format(temp, humidity), 600)
+                    redis_obj.set_ex_data('city_id_{}_weather'.format(city_id), '{}/{}'.format(temp, humidity), 1800)
             if not all([temp, humidity]):
                 return response.json(10, '获取天气失败')
             return response.json(0, {'temp': temp, 'humidity': humidity})

+ 1 - 1
Model/models.py

@@ -755,7 +755,7 @@ class Store_Meal(models.Model):
     cycle_config_id = models.IntegerField(null=True, verbose_name='周期付款配置表id')
     sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')  # 单位月
     # 备用字段
-    spare_3 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段3')
+    pixel_level = models.SmallIntegerField(default=0, verbose_name='像素等级')  # 0:低于4k像素;1:大于等于4k像素
     spare_4 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段4')
 
     def __str__(self):

+ 20 - 1
Service/CommonService.py

@@ -19,7 +19,7 @@ from pyipip import IPIPDatabase
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
     SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR
 from Controller.CheckUserData import RandomStr
-from Model.models import iotdeviceInfoModel, Device_Info, UIDModel
+from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 
@@ -730,6 +730,25 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
         elif order_type == 2:
             pass
 
+
+    @staticmethod
+    def is_cloud_device(ucode, device_type):
+        """
+        设备是否支持云存
+        @param ucode: 设备版本
+        @param device_type: 设备类型
+        """
+        if len(ucode) > 4:
+            number = ucode[-4]
+        else:
+            return False
+        device_type_qs = AppDeviceType.objects.filter(type=device_type).values('model')
+        model = device_type_qs[0]['model'] if device_type_qs.exists() else ''
+        #  判断设备是否为ipc设备和是否支持云存
+        if model == 2 and number in ['4', '5']:
+            return True
+        return False
+
     @staticmethod
     def negative_number_judgment(number_list):
         """