Quellcode durchsuchen

Merge branch 'test'

lang vor 3 Jahren
Ursprung
Commit
490b2e7305

+ 39 - 35
AdminController/SerialManageController.py

@@ -74,7 +74,7 @@ class SerialView(View):
         pageSize = request_dict.get('pageSize', None)
         serial_number = request_dict.get('serialNumber', None)
         status = request_dict.get('status', None)
-        use = request_dict.get('useStatus', None)
+        use_status = request_dict.get('useStatus', None)
         if not all([pageNo, pageSize]):
             return response.json(444)
         page = int(pageNo)
@@ -86,8 +86,8 @@ class SerialView(View):
             if status:
                 status = int(status)
                 query = query.filter(status=status)
-            if use:
-                use_status = int(use)
+            if use_status:
+                use_status = int(use_status)
                 query = query.filter(use_status=use_status)
             if not query.exists():
                 return response.json(0, {'list': '', 'total': 0})
@@ -144,12 +144,14 @@ class SerialView(View):
         try:
             query = UIDModel.objects.filter()
             if serial_number:
-                company_serial_vos = CompanySerialModel.objects.filter(serial_number=serial_number).values()
-                if company_serial_vos.exists():
-                    cs_id = str(company_serial_vos[0]['id'])
-                    uid_vo = UIDCompanySerialModel.objects.filter(company_serial_id=cs_id).values('uid_id')
-                    uid_id = uid_vo[0]['uid_id']
-                    query = query.filter(id=uid_id)
+                company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number).values()
+                if company_serial_qs.exists():
+                    cs_id = str(company_serial_qs[0]['id'])
+                    uid_company_serial_qs = UIDCompanySerialModel.objects.filter(company_serial_id=cs_id).values(
+                        'uid_id')
+                    if uid_company_serial_qs.exists():
+                        uid_id = uid_company_serial_qs[0]['uid_id']
+                        query = query.filter(id=uid_id)
             if status:
                 query = query.filter(status=int(status))
             if uid:
@@ -159,32 +161,34 @@ class SerialView(View):
             if not query.exists():
                 return response.json(0, {'list': '', 'total': 0})
             total = query.count()
-            uid_list = query.order_by('-add_time')[(page - 1) * line:page * line]
-            result_page = []
-            if uid_list.exists():
-                for vo in uid_list:
-                    uid_vo = UIDCompanySerialModel.objects.filter(uid_id=vo.id).values('uid_id', 'company_serial_id')
-                    serial = None
-                    if uid_vo.exists():
-                        serial_id = uid_vo[0]['company_serial_id']
-                        company_serial_vos = CompanySerialModel.objects.filter(id=serial_id).values()
-                        if company_serial_vos.exists():
-                            serial = str(company_serial_vos[0]['serial_number'])
-                    result_page.append({
-                        'id': vo.id,
-                        'uid': vo.uid,
-                        'mac': vo.mac,
-                        'extra': vo.uid_extra,
-                        'serial': serial,
-                        'status': vo.status,
-                        'area': vo.area,
-                        'p2pType': vo.p2p_type,
-                        'fullUidCode': vo.full_uid_code,
-                        'updateTime': vo.update_time,
-                        'addTime': vo.add_time
-                    })
-                return response.json(0, {'list': result_page, 'total': total})
-            return response.json(0, {'list': '', 'total': 0})
+            uid_page = query.order_by('-add_time')[(page - 1) * line:page * line]
+            result_list = []
+            if not uid_page.exists():
+                return response.json(0, {'list': '', 'total': 0})
+            for vo in uid_page:
+                uid_company_serial_qs = UIDCompanySerialModel.objects.filter(uid_id=vo.id).values('uid_id',
+                                                                                                  'company_serial_id')
+                serial = None
+                if uid_company_serial_qs.exists():
+                    company_serial_id = uid_company_serial_qs[0]['company_serial_id']
+                    company_serial_qs = CompanySerialModel.objects.filter(id=company_serial_id).values()
+                    if company_serial_qs.exists():
+                        serial = str(company_serial_qs[0]['serial_number'])
+                result_list.append({
+                    'id': vo.id,
+                    'uid': vo.uid,
+                    'mac': vo.mac,
+                    'extra': vo.uid_extra,
+                    'serial': serial,
+                    'status': vo.status,
+                    'area': vo.area,
+                    'p2pType': vo.p2p_type,
+                    'fullUidCode': vo.full_uid_code,
+                    'updateTime': vo.update_time,
+                    'addTime': vo.add_time
+                })
+            return response.json(0, {'list': result_list, 'total': total})
+
         except Exception as e:
             print(e)
             return response.json(500, repr(e))

+ 56 - 60
AdminController/SurveysManageController.py

@@ -75,9 +75,9 @@ class SurveysView(View):
         try:
             request_qs = Surveys.objects.all()
             total = request_qs.count()
-            surveys_list = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
+            surveys_page = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
             result_list = []
-            for surveys in surveys_list:
+            for surveys in surveys_page:
                 start_time = time.localtime(surveys.start_time)
                 endT_time = time.localtime(surveys.end_time)
                 created_time = time.localtime(surveys.created_time)
@@ -98,25 +98,25 @@ class SurveysView(View):
     @classmethod
     def save(cls, request_dict, response):
         no = request_dict.get('no', None)
-        if no:
-            if Surveys.objects.filter(no=no).exists():
-                return response.json(10, '已存在')
-            no = request_dict.get('no', None)
-            userType = request_dict.get('userType', None)
-            startTime = request_dict.get('dateTime[0]', None)
-            endTime = request_dict.get('dateTime[1]', None)
-            isShow = request_dict.get('isShow', None)
-            isShow = 1 if isShow == 'true' else 0
-            createdTime = int(time.time())
-            try:
-                surveys = Surveys(no=no, user_type=userType, start_time=int(startTime),
-                                  end_time=endTime, is_show=isShow, created_time=int(createdTime))
-                surveys.save()
-                return response.json(0)
-            except Exception as e:
-                print(e)
-                return response.json(500, repr(e))
-        return response.json(0)
+        if not no:
+            return response.json(0)
+        if Surveys.objects.filter(no=no).exists():
+            return response.json(10, '已存在')
+        no = request_dict.get('no', None)
+        user_type = request_dict.get('userType', None)
+        start_time = request_dict.get('dateTime[0]', None)
+        end_time = request_dict.get('dateTime[1]', None)
+        is_show = request_dict.get('isShow', None)
+        is_show = 1 if is_show == 'true' else 0
+        createdTime = int(time.time())
+        try:
+            surveys = Surveys(no=no, user_type=user_type, start_time=int(start_time),
+                              end_time=end_time, is_show=is_show, created_time=int(createdTime))
+            surveys.save()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
 
     @classmethod
     def edit(cls, request_dict, response):
@@ -124,15 +124,14 @@ class SurveysView(View):
         if not sur_id:
             return response.json(10, 'id不存在')
 
-        userType = request_dict.get('userType', None)
-        startTime = request_dict.get('dateTime[0]', None)
-        endTime = request_dict.get('dateTime[1]', None)
-        isShow = request_dict.get('isShow', None)
-        isShow = 1 if isShow == 'true' else 0
-        print(endTime)
-        Surveys.objects.filter(id=int(sur_id)).update(user_type=int(userType), start_time=int(startTime),
-                                                      end_time=int(endTime),
-                                                      is_show=int(isShow))
+        user_type = request_dict.get('userType', None)
+        start_time = request_dict.get('dateTime[0]', None)
+        end_time = request_dict.get('dateTime[1]', None)
+        is_show = request_dict.get('isShow', None)
+        is_show = 1 if is_show == 'true' else 0
+        Surveys.objects.filter(id=int(sur_id)).update(user_type=int(user_type), start_time=int(start_time),
+                                                      end_time=int(end_time),
+                                                      is_show=int(is_show))
         return response.json(0)
 
     @classmethod
@@ -145,18 +144,18 @@ class SurveysView(View):
 
     @classmethod
     def title_save(cls, request_dict, response):
-        surveyId = request_dict.get('surveyId', None)
-        if not surveyId:
+        survey_id = request_dict.get('surveyId', None)
+        if not survey_id:
             return response(10, 'surveyId is null')
         t_id = request_dict.get('id', None)
         content = request_dict.get('content', None)
-        createdTime = int(time.time())
+        created_time = int(time.time())
         try:
             title = SurveysTitle.objects.filter(id=t_id)
             if title.exists():
                 title.update(title_content=content)
             else:
-                surveys_title = SurveysTitle(surveys_id=surveyId, title_content=content, created_time=createdTime)
+                surveys_title = SurveysTitle(surveys_id=survey_id, title_content=content, created_time=created_time)
                 surveys_title.save()
             return response.json(0)
         except Exception as e:
@@ -165,11 +164,11 @@ class SurveysView(View):
 
     @classmethod
     def get_title_list(cls, request_dict, response):
-        surveyId = request_dict.get('surveyId', None)
+        survey_id = request_dict.get('surveyId', None)
         info = request_dict.get('info', None)
-        if not surveyId:
+        if not survey_id:
             return response.json(10, '问卷id不存在')
-        title_list = SurveysTitle.objects.filter(surveys_id=surveyId).order_by('-created_time')
+        title_list = SurveysTitle.objects.filter(surveys_id=survey_id).order_by('-created_time')
         if not title_list.exists():
             if info:
                 return response.json(0, {'id': None, 'content': None})
@@ -202,12 +201,12 @@ class SurveysView(View):
     def cloud_surveys_answer_page(cls, request_dict, response):
         pageNo = request_dict.get('pageNo', None)
         pageSize = request_dict.get('pageSize', None)
-        userName = request_dict.get('userName', None)
-        countryName = request_dict.get('countryName', None)
-        timeRange = request_dict.getlist('timeRange[]', None)
+        user_name = request_dict.get('userName', None)
+        country_name = request_dict.get('countryName', None)
+        time_range = request_dict.getlist('timeRange[]', None)
         num = request_dict.get('num', 0)
         num = int(num)
-        optVal = request_dict.getlist('optVal', None)
+        opt_val = request_dict.getlist('optVal', None)
         if not all([pageNo, pageSize]):
             return response.json(444)
 
@@ -215,12 +214,12 @@ class SurveysView(View):
         line = int(pageSize)
         try:
             request_qs = CloudVodSurveysAnswer.objects.all()
-            if userName:
-                request_qs = request_qs.filter(user__username__contains=userName)
-            if countryName:
-                request_qs = request_qs.filter(country_name=countryName)
-            if num >= 0 and len(optVal) > 0:
-                condition = int(optVal[0])
+            if user_name:
+                request_qs = request_qs.filter(user__username__contains=user_name)
+            if country_name:
+                request_qs = request_qs.filter(country_name=country_name)
+            if num >= 0 and len(opt_val) > 0:
+                condition = int(opt_val[0])
                 if condition == 1:
                     request_qs = request_qs.filter(answer1__gt=num)
                 elif condition == 2:
@@ -232,28 +231,25 @@ class SurveysView(View):
                 elif condition == 5:
                     request_qs = request_qs.filter(answer1__lte=num)
 
-            if timeRange:
-                startTime, endTime = int(
-                    timeRange[0][:-3]), int(timeRange[1][:-3])
-                request_qs = request_qs.filter(
-                    created_time__gte=startTime,
-                    created_time__lte=endTime)
+            if time_range:
+                startTime, endTime = int(time_range[0][:-3]), int(time_range[1][:-3])
+                request_qs = request_qs.filter(created_time__gte=startTime, created_time__lte=endTime)
             if not request_qs.exists():
-                return response.json(0, [])
+                return response.json(0)
             total = request_qs.count()
             answer_page = request_qs.order_by('-created_time')[(page - 1) * line:page * line]
             result_list = []
             for answer in answer_page:
-                d_user = Device_User.objects.filter(userID=answer.user_id)
-                if not all(d_user):
+                d_user_qs = Device_User.objects.filter(userID=answer.user_id)
+                if not all(d_user_qs):
                     return response.json(173)
-                d_user = d_user[0]
+                d_user_qs = d_user_qs[0]
                 created_time = time.localtime(answer.created_time)
                 result_list.append({
                     'id': answer.id,
-                    'uId': d_user.userID,
-                    'uName': d_user.username,
-                    'nickName': d_user.NickName,
+                    'uId': d_user_qs.userID,
+                    'uName': d_user_qs.username,
+                    'nickName': d_user_qs.NickName,
                     'answer1': answer.answer1,
                     'answer2': answer.answer2,
                     'answer3': answer.answer3,

+ 1 - 0
Ansjer/urls.py

@@ -128,6 +128,7 @@ urlpatterns = [
     url(r'^dlotapack/(?P<fullPath>[0-9\w/.\-]+)', OTAEquipment.downloadOTAInterfaceV2),
     url(r'^OTA/getDownLoadOTApackUrl$', OTAEquipment.getDownLoadOTApackUrl),
     url(r'^OTA/checkMaxVersion$', OTAEquipment.checkMaxVersion),
+    url(r'^v2/OTA/checkMaxVersion$', OTAEquipment.checkMaxVersionV2),
 
     # h获取验证码    # v2接口
     url(r'^v2/account/authcode$', UserController.v2authCodeView.as_view()),

+ 29 - 1
Controller/DeviceDebug.py

@@ -19,7 +19,7 @@ import logging
 from boto3.session import Session
 from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 from django.views.generic.base import View
-from Model.models import Device_Info
+from Model.models import Device_Info, DeviceLogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
@@ -54,6 +54,8 @@ class DeviceDebug(View):
                     return self.single_debug(request, request_dict, uid, response)
             return response.json(444, 'operation')
         else:
+            if operation == 'deviceException':
+                return self.device_exception(request, request_dict, response)
             return response.json(309)
 
     def single_debug(self,request, request_dict, uid, response):
@@ -73,3 +75,29 @@ class DeviceDebug(View):
         device_info.info("debug------------------------------------------------------------------------------------end")
         return response.json(0,'debug success')
                 # return response.json(10, '生成失败')
+
+    #c1 pro设备上传异常日志
+    def device_exception(self,request, request_dict, response):
+        uid = request_dict.get('uid', None)
+        serial_number = request_dict.get('serial_number', None)
+        error_info = request_dict.get('error_info', None)
+
+        # uid,serial_number二传一
+        if not (uid or serial_number):
+            return response.json(444)
+
+        try:
+            data_dict = {
+                'error_info': error_info,
+                'status': 3,
+                'ip': CommonService.get_ip_address(request),
+            }
+            if uid:
+                data_dict['uid'] = CommonService.decode_data(uid)
+            else:
+                data_dict['serial_number'] = CommonService.decode_data(serial_number)
+            DeviceLogModel.objects.create(**data_dict)
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))

+ 67 - 1
Controller/OTAEquipment.py

@@ -14,7 +14,7 @@ from django.views.generic import TemplateView
 from Ansjer.config import BASE_DIR
 from Ansjer.config import SERVER_DOMAIN
 from Ansjer.config import SERVER_TYPE
-from Model.models import Device_User, EquipmentVersionLimitModel, CountryIPModel
+from Model.models import Device_User, EquipmentVersionLimitModel, CountryIPModel, DeviceOTAUpgradeRecord
 from Model.models import Equipment_Version
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
@@ -753,6 +753,72 @@ def checkMaxVersion(request):
     res = {
         'url': url,
     }
+    # 记录设备OTA升级
+    createdTime = int(time.time())
+    # deviceOTA_UpgradeRecord = DeviceOTAUpgradeRecord({
+    #     Equipment_package=equipmentVersion[0].eid, created_time=createdTime, oldVersion=now_version, newVersion=softwareVersion})
+    # deviceOTA_UpgradeRecord.save()
+    DeviceOTAUpgradeRecord.objects.create(
+        equipment_package=equipmentVersion[0],
+        created_time=createdTime,
+        old_version=version,
+        new_version=equipmentVersion[0].version,
+    )
     return response.json(0, res)
 
+@csrf_exempt
+def checkMaxVersionV2(request):
+    # QT检查ota设备软件版本是否需要更新
+    response = ResponseObject()
+    if request.method == "POST":
+        request_dict = request.POST
+    elif request.method == "GET":
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    deviceType = request_dict.get('deviceType', None)
+    version = request_dict.get('version', None)  # 设备版本:当前版本+设备规格代码
+    lang = request_dict.get('lang', None)  # 'zh-Hans','en'
+    uid = request_dict.get('uid','null')
+    serial_number = request_dict.get('serial_number','null')
+
+
+    token = request_dict.get('token',None)
+    token_object = TokenObject(token)
+    if token_object.code != 0:
+        return response.json(token_object.code)
+    user_id = token_object.userID
+
+    if not deviceType or not version:
+        return response.json(444, 'deviceType or version')
+    now_version = version[1:version.rindex('.')]  # 去掉V
+    code = version[version.rindex('.') + 1:]
+    equipmentVersion = Equipment_Version.objects.filter(mci=deviceType, code=code, lang=lang,
+                                                        status=1)  # order by data_joined
+    # 判断是否有该版本存在
+    if not equipmentVersion.exists():
+        return response.json(907)
 
+    filePath = equipmentVersion[0].filePath
+    softwareVersion = equipmentVersion[0].softwareVersion  # 可用最新版本的版本号
+    maxVersion = equipmentVersion[0].max_ver
+    if now_version >= softwareVersion:
+        # 当前版本大于等于最新版本,不需要更新
+        return response.json(902)
+    url = SERVER_DOMAIN + 'OTA/downloadsPack/' + filePath  # 复用app下载ota包的方式
+    res = {
+        'url': url,
+    }
+    # 记录设备OTA升级
+    createdTime = int(time.time())
+    DeviceOTAUpgradeRecord.objects.create(
+        equipment_package=equipmentVersion[0],
+        created_time=createdTime,
+        old_version=version,
+        new_version=equipmentVersion[0].version,
+        user_id=user_id,
+        serial_number=serial_number,
+        uid=uid,
+    )
+    print('执行成功%s' % DeviceOTAUpgradeRecord.id)
+    return response.json(0, res)

+ 19 - 1
Model/models.py

@@ -1242,8 +1242,9 @@ class DeviceLogModel(models.Model):
     ip = models.CharField(default='', max_length=32, verbose_name='ip')
     uid = models.CharField(max_length=32, default='', verbose_name='设备uid')
     serial_number = models.CharField(max_length=9, default='', verbose_name='序列号')
-    status = models.SmallIntegerField(default=0, verbose_name='上传状态')   # 0: 成功,1: 失败
+    status = models.SmallIntegerField(default=0, verbose_name='上传状态')   # 0: 成功,1: 失败, 3非文件形式,与error_info相关
     filename = models.CharField(max_length=120, default='', verbose_name='文件名')
+    error_info = models.TextField(blank = True, default = '', verbose_name='设备异常信息')
     add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
 
     class Meta:
@@ -2042,3 +2043,20 @@ class CloudVodSurveysOperateLog(models.Model):
         verbose_name = '云存问卷调查—操作日志'
         verbose_name_plural = verbose_name
         ordering = ('id',)
+
+class DeviceOTAUpgradeRecord(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    equipment_package = models.ForeignKey(Equipment_Version, to_field='eid', default='', on_delete=models.CASCADE,
+                             verbose_name='关联设备OTA包ID')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+    old_version = models.CharField(max_length=22, blank=True, verbose_name='原版本号', default='')
+    new_version = models.CharField(max_length=22, blank=True, verbose_name='升级后版本号', default='')
+    user_id = models.CharField(max_length=32, blank=True, verbose_name='用户ID', default='')
+    serial_number = models.CharField(max_length=11, blank=True, verbose_name='序列号', default='')
+    uid = models.CharField(max_length=22, blank=True, verbose_name='设备UID', default='')
+
+    class Meta:
+        db_table = 'device_OTA_upgrade_record'
+        verbose_name = '设备OTA升级记录'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)