Forráskód Böngészése

新增消息提醒设置API

zhangdongming 3 éve
szülő
commit
9e4fae55e5
1 módosított fájl, 176 hozzáadás és 0 törlés
  1. 176 0
      SensorGateway/EquipmentFamilyManager.py

+ 176 - 0
SensorGateway/EquipmentFamilyManager.py

@@ -0,0 +1,176 @@
+# -*- encoding: utf-8 -*-
+"""
+@File    : EquipmentFamilyManager.py
+@Time    : 2022/5/13 15:50
+@Author  : stephen
+@Email   : zhangdongming@asj6.wecom.work
+@Software: PyCharm
+"""
+
+import time
+
+import oss2
+from django.db import transaction
+from django.db.models import Q
+from django.views.generic.base import View
+
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Controller.DeviceConfirmRegion import Device_Region
+from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
+    iotdeviceInfoModel, UIDModel
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Service.CommonService import CommonService
+
+
+class EquipmentFamilyManager(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):
+
+        token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+        lang = request_dict.get('lang', None)
+        if lang:
+            response = ResponseObject(lang)
+        else:
+            response = ResponseObject(token.lang) if token.lang else ResponseObject()
+
+        if token.code != 0:
+            return response.json(token.code)
+        user_id = token.userID
+
+        # 手机端添加设备,查询,修改
+        if operation == 'add':
+            return self.do_save(user_id, request_dict, response, request)
+        if operation == 'page':
+            return self.do_device_page(user_id, request_dict, response)
+        else:
+            return response.json(414)
+
+    @classmethod
+    def do_save(cls, user_id, request_dict, response, request):
+        """
+        添加设备
+        @param request:
+        @param user_id:
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        nick_name = request_dict.get('nickName', None)
+        serial_number = request_dict.get('serialNumber', None)
+        device_type = request_dict.get('deviceType', None)
+        version = request_dict.get('version', None)
+        # type 可能为0
+        if not all([nick_name, serial_number, device_type]):
+            return response.json(444, {'param': 'nick_name, serial_number, device_type'})
+        device_info_qs = Device_Info.objects.filter(serial_number=serial_number, userID_id=user_id)
+        if device_info_qs:
+            # 判断设备是否已存在
+            if device_info_qs[0].isExist == 1:
+                return response.json(174)
+            else:
+                device_info_qs.delete()
+        try:
+            with transaction.atomic():
+                # 格式化后的日期时间
+                now_time = CommonService.timestamp_to_str(int(time.time()))
+                device_id = CommonService.getUserID(getUser=False)
+                Device_Info.objects.create(id=device_id, userID_id=user_id, NickName=nick_name,
+                                           Type=device_type,
+                                           serial_number=serial_number, data_joined=now_time,
+                                           update_time=now_time)
+
+                # 判断是否有用户绑定
+                us_qs = UidSetModel.objects.filter(uid=serial_number)
+                if not us_qs:
+                    n_time = int(time.time())
+                    ip = CommonService.get_ip_address(request)
+                    region_id = Device_Region().get_device_region(ip)
+                    region_alexa = 'CN' if region_id == 1 else 'ALL'
+                    uid_set_create_dict = {
+                        'uid': serial_number,
+                        'addTime': n_time,
+                        'updTime': n_time,
+                        'ip': CommonService.get_ip_address(request_dict),
+                        'nickname': nick_name,
+                        'version': version,
+                        'region_alexa': region_alexa,
+                    }
+                    UidSetModel.objects.create(**uid_set_create_dict)
+                return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(177, repr(e))
+
+    @classmethod
+    def do_device_page(cls, user_id, request_dict, response):
+        """
+        查询设备列表
+        @param user_id:
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+        device_info_qs = Device_Info.objects.filter(userID=user_id)
+        device_info_qs = device_info_qs.filter(~Q(isExist=0))
+        total = device_info_qs.count()
+        device_info_qs = device_info_qs.values("id", "userID_id", "NickName", "Type", "serial_number",
+                                               "data_joined",
+                                               "update_time")[(page - 1) * line: page * line]
+        data = []
+        for item in device_info_qs:
+            data.append({
+                'id': item['id'],
+                'userId': item['userID_id'],
+                'nickName': item['NickName'],
+                'type': item['Type'],
+                'serialNumber': item['serial_number'],
+                'dataJoined': item['data_joined'].strftime("%Y-%m-%d %H:%M:%S"),
+                'updateTime': item['update_time'].strftime("%Y-%m-%d %H:%M:%S")
+            })
+        return response.json(0, {'list': data, 'total': total})
+
+
+
+    # @classmethod
+    # def family_save(cls, user_id, save_type, lang):
+    #     # 0:默认创建家庭,1:新增,2:修改
+    #     n_time = int(time.time())
+    #     if save_type == 0:
+    #         device_qs = Device_User.objects.filter(userID=user_id)
+    #         if device_qs.exists():
+    #             device_user = device_qs.first()
+    #             family_name = device_user.username if device_user.username else device_user.userEmail
+    #             family_name = family_name + "的家" if lang == 'cn' else family_name + " home"
+    #             user_family = LoocamUserFamily.objects.create(name=family_name, updated_time=n_time,
+    #                                                           created_time=n_time)
+    #             if user_family.id:
+    #                 pass
+    #
+    #     return ''
+
+    # @classmethod
+    # def family_query(cls, user_id):
+    #     family_qs = LoocamFamilyMember.objects.filter(user_id=user_id)
+    #     if family_qs.exists():
+    #         return True
+    #     else:
+    #         return False