Browse Source

code改为result_code; 优化获取图标接口

guanhailong 2 years ago
parent
commit
55d17ab7f5
2 changed files with 70 additions and 51 deletions
  1. 62 50
      AdminController/DeviceManagementController.py
  2. 8 1
      MiddleWare/requestRecord.py

+ 62 - 50
AdminController/DeviceManagementController.py

@@ -520,63 +520,26 @@ class DeviceManagement(View):
             return response.json(500, repr(e))
 
     def get_device_icon(self, request_dict, response):
+        """
+        查询设备信息图标
+        @parm
+        """
         lang = request_dict.get('lang', 'en')
         app_bundle_id = request_dict.get('appBundleId', None)
         version_number = request_dict.get('versionNumber', None)
         if not all([lang, app_bundle_id, version_number]):
             return response.json(444)
-        if lang != 'cn' and lang != 'cn_tw':
+        lang_list = ['cn', 'en', 'cn_tw']
+        if lang in lang_list:
+            lang = lang
+        else:
             lang = 'en'
+        # 中性app
         zhong_xin = ['com.cloudlife.commissionf', 'com.cloudlife.commissionf_a']
-        if version_number >= '2.6.2.1' or app_bundle_id in zhong_xin:  # 判断是否低于2.6.2.1版本
-            return self.newAppVersion(response, app_bundle_id, lang, version_number)  # 获取2.6.2.1及以上版本设备信息图标
+        if version_number >= '2.6.2.1' or app_bundle_id in zhong_xin:
+            return self.newAppVersion(response, app_bundle_id, lang, version_number)  # 新版app获取设备图标
         else:
-            version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id,
-                                                                version_number=version_number)
-            if not version_number_qs.exists():
-                version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id)
-                if not version_number_qs.exists():
-                    return response.json(173)
-                version_qs = version_number_qs.values('version_number')
-                test_list = [item[key] for item in version_qs for key in item]  # 判断该版本最靠进已有版本号
-                if version_number > test_list[-1] or version_number < test_list[0]:
-                    version_number_qs = version_number_qs.filter().values('id').order_by('id')
-                    total_list = [item[key] for item in version_number_qs for key in item]
-                    version_number_id = total_list[-1]
-                else:
-                    pos = bisect_left(test_list, version_number)
-                    if pos == 0:
-                        return test_list[0]
-                    if pos == len(test_list):
-                        return test_list[-1]
-                    before = test_list[pos - 1]
-                    version_number_qs = AppVersionNumber.objects.filter(version_number=before).values('id')
-                    version_number_id = version_number_qs[0]['id']
-            else:
-                version_number_qs = AppVersionNumber.objects.filter(version_number=version_number).values('id')
-                version_number_id = version_number_qs[0]['id']
-            try:
-                app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
-                                                         app_device_type__devicenamelanguage__lang=lang,
-                                                         app_device_type__app_version_number_id=version_number_id). \
-                    annotate(
-                    model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
-                    name=F('app_device_type__devicenamelanguage__name'),
-                    sort=F('app_device_type__devicenamelanguage__sort'),
-                    app_version_number_id=F('app_device_type__app_version_number_id')).values('model', 'type', 'icon',
-                                                                                              'name', 'sort',
-                                                                                              'app_device_type__app_version_number_id')
-                dvr_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 1]
-                ipc_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 2]
-                print(dvr_list, ipc_list)
-                res = {
-                    'deviceDvr': sorted(dvr_list, key=operator.itemgetter('sort')),
-                    'deviceIpc': sorted(ipc_list, key=operator.itemgetter('sort')),
-                }
-                return response.json(0, res)
-            except Exception as e:
-                print(e)
-                return response.json(500, repr(e))
+            return self.oldAppVersion(response, app_bundle_id, lang, version_number)  # 旧版app获取设备图标(无用可删)
 
     def newAppVersion(self, response, app_bundle_id, lang, version_number):
         version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id).values(
@@ -586,7 +549,8 @@ class DeviceManagement(View):
         # 获取版本号
         try:
             app_bundle_list = []
-            version_qs = version_number_qs.filter(version_number=version_number).values('version_number')  # 判断版本是否存在
+            version_qs = version_number_qs.filter(version_number=version_number).values('version_number')
+            #  判断版本是否存在, 不存在则获取输入版本范围内最接近的输入版本
             if version_qs.exists():
                 version_number = version_qs[0]['version_number']
             else:
@@ -651,6 +615,54 @@ class DeviceManagement(View):
             print(e)
             return response.json(500, repr(e))
 
+    def oldAppVersion(self, response, app_bundle_id, lang, version_number):
+        version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id,
+                                                            version_number=version_number)
+        if not version_number_qs.exists():
+            version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id)
+            if not version_number_qs.exists():
+                return response.json(173)
+            version_qs = version_number_qs.values('version_number')
+            test_list = [item[key] for item in version_qs for key in item]  # 判断该版本最靠进已有版本号
+            if version_number > test_list[-1] or version_number < test_list[0]:
+                version_number_qs = version_number_qs.filter().values('id').order_by('id')
+                total_list = [item[key] for item in version_number_qs for key in item]
+                version_number_id = total_list[-1]
+            else:
+                pos = bisect_left(test_list, version_number)
+                if pos == 0:
+                    return test_list[0]
+                if pos == len(test_list):
+                    return test_list[-1]
+                before = test_list[pos - 1]
+                version_number_qs = AppVersionNumber.objects.filter(version_number=before).values('id')
+                version_number_id = version_number_qs[0]['id']
+        else:
+            version_number_qs = AppVersionNumber.objects.filter(version_number=version_number).values('id')
+            version_number_id = version_number_qs[0]['id']
+        try:
+            app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
+                                                     app_device_type__devicenamelanguage__lang=lang,
+                                                     app_device_type__app_version_number_id=version_number_id). \
+                annotate(
+                model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
+                name=F('app_device_type__devicenamelanguage__name'),
+                sort=F('app_device_type__devicenamelanguage__sort'),
+                app_version_number_id=F('app_device_type__app_version_number_id')).values('model', 'type', 'icon',
+                                                                                          'name', 'sort',
+                                                                                          'app_device_type__app_version_number_id')
+            dvr_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 1]
+            ipc_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 2]
+            print(dvr_list, ipc_list)
+            res = {
+                'deviceDvr': sorted(dvr_list, key=operator.itemgetter('sort')),
+                'deviceIpc': sorted(ipc_list, key=operator.itemgetter('sort')),
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return  response.json(500, (repr(e)))
+
     @staticmethod
     def get_app_device_type_list(request_dict, response):
         app_bundle_id = request_dict.get('app_bundle_id', None)

+ 8 - 1
MiddleWare/requestRecord.py

@@ -31,7 +31,14 @@ class RequestRecordMiddleware(MiddlewareMixin):
                 parameter = ''
             content = eval(str(response.content, 'utf-8'))  # bytes 转为 dict
             # 请求是否成功
-            if content['result_code'] != 0 or content['code'] != 0:
+            if content['code']:
+                old_key = 'code'
+                new_key = 'result_code'
+                new_dict = {new_key: content.pop(old_key)}
+                for key, value in content.items():
+                    new_dict[key] = value
+                content = new_dict.copy()
+            if content['result_code'] != 0:
                 LOGGER.info('请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.format(url, method, parameter, content, response.status_code))
             if response.status_code == 500:  # 处理没有捕获异常的情况
                 request_record_data = {