Ver Fonte

Revert "推送分库提交到正式"

This reverts commit d4f3aba8f412c83eea62ae4149d3aafa6d8167c6.
tanghongbin há 4 anos atrás
pai
commit
b0755cc5dd

+ 0 - 80
AnsjerPush/database_router.py

@@ -1,80 +0,0 @@
-# database_router.py
-from django.conf import settings
-
-DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
-
-
-class DatabaseAppsRouter(object):
-    """
-    A router to control all database operations on models for different
-    databases.
-DATABASE_ROUTERS DATABASE_ROUTERS
-    In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
-    will fallback to the `default` database.
-
-    Settings example:
-
-    DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
-    """
-
-    def db_for_read(self, model, **hints):
-        """"Point all read operations to the specific database."""
-        if model._meta.app_label in DATABASE_MAPPING:
-            return DATABASE_MAPPING[model._meta.app_label]
-        return None
-
-    def db_for_write(self, model, **hints):
-        """Point all write operations to the specific database."""
-        if model._meta.app_label in DATABASE_MAPPING:
-            return DATABASE_MAPPING[model._meta.app_label]
-        return None
-
-    def allow_relation(self, obj1, obj2, **hints):
-        """Allow any relation between apps that use the same database."""
-        db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
-        db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
-        if db_obj1 and db_obj2:
-            if db_obj1 == db_obj2:
-                return True
-            else:
-                return False
-        return None
-
-    def allow_syncdb(self, db, model):
-        """Make sure that apps only appear in the related database."""
-
-        if db in DATABASE_MAPPING.values():
-            return DATABASE_MAPPING.get(model._meta.app_label) == db
-        elif model._meta.app_label in DATABASE_MAPPING:
-            return False
-        return None
-
-    def allow_migrate(self, db, app_label, model=None, **hints):
-        """
-        Make sure the auth app only appears in the 'auth_db'
-        database.
-        """
-        if db in DATABASE_MAPPING.values():
-            return DATABASE_MAPPING.get(app_label) == db
-        elif app_label in DATABASE_MAPPING:
-            return False
-        return None
-
-    # for Django 1.4 - Django 1.6
-    def allow_syncdb(self, db, model):
-        """Make sure that apps only appear in the related database."""
-
-        if db in DATABASE_MAPPING.values():
-            return DATABASE_MAPPING.get(model._meta.app_label) == db
-        elif model._meta.app_label in DATABASE_MAPPING:
-            return False
-        return None
-
-    # Django 1.7 - Django 1.11
-    def allow_migrate(self, db, app_label, model_name=None, **hints):
-
-        if db in DATABASE_MAPPING.values():
-            return DATABASE_MAPPING.get(app_label) == db
-        elif app_label in DATABASE_MAPPING:
-            return False
-        return None

+ 11 - 34
AnsjerPush/formal_settings.py

@@ -49,6 +49,7 @@ TEMPLATES = [
 
 WSGI_APPLICATION = 'AnsjerPush.wsgi.application'
 
+
 # Database
 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
 # formal
@@ -57,40 +58,16 @@ SERVER_HOST = 'database-2.clraczw4p0yj.us-west-1.rds.amazonaws.com'
 DATABASES_USER = 'azrds'
 DATABASES_PASS = 'azrds.x.x'
 
-DATABASE_DATA2 = 'Ansjer81'
-SERVER_HOST2 = 'ansjerpush.clraczw4p0yj.us-west-1.rds.amazonaws.com'
-DATABASES_USER2 = 'azrds'
-DATABASES_PASS2 = 'azrds.x.x'
-
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA,
-        'USER': DATABASES_USER,
-        'PASSWORD': DATABASES_PASS,
-        'HOST': SERVER_HOST,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    },
-    'mysql02': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA2,
-        'USER': DATABASES_USER2,
-        'PASSWORD': DATABASES_PASS2,
-        'HOST': SERVER_HOST2,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    }
-}
-DATABASE_ROUTERS = ['AnsjerPush.database_router.DatabaseAppsRouter']
-DATABASE_APPS_MAPPING = {
-    'db1': 'default',
-    'db2': 'mysql02',
-}
-
-
+DATABASES = {'default': {
+    'ENGINE': 'django.db.backends.mysql',
+    'NAME': DATABASE_DATA,
+    'USER': DATABASES_USER,
+    'PASSWORD': DATABASES_PASS,
+    'HOST': SERVER_HOST,
+    'PORT': '3306',
+    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+    'AUTOCOMMIT': True
+}}
 
 
 # Password validation

+ 15 - 37
AnsjerPush/local_settings.py

@@ -62,43 +62,21 @@ WSGI_APPLICATION = 'AnsjerPush.wsgi.application'
 # SERVER_HOST = '13.56.215.252'
 # DATABASES_USER = 'ansjer'
 # DATABASES_PASS = '1234'
-DATABASE_DATA = 'ansjerlocal'
-SERVER_HOST = '127.0.0.1'
-DATABASES_USER = 'root'
-DATABASES_PASS = '123456'
-
-DATABASE_DATA2 = 'asjl'
-SERVER_HOST2 = '127.0.0.1'
-DATABASES_USER2 = 'root'
-DATABASES_PASS2 = '123456'
-
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA,
-        'USER': DATABASES_USER,
-        'PASSWORD': DATABASES_PASS,
-        'HOST': SERVER_HOST,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    },
-    'mysql02': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA2,
-        'USER': DATABASES_USER2,
-        'PASSWORD': DATABASES_PASS2,
-        'HOST': SERVER_HOST2,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    }
-}
-DATABASE_ROUTERS = ['AnsjerPush.database_router.DatabaseAppsRouter']
-DATABASE_APPS_MAPPING = {
-    'db1': 'default',
-    'db2': 'mysql02',
-}
+DATABASE_DATA = 'AnsjerLocal'
+SERVER_HOST = '192.168.136.99'
+DATABASES_USER = 'ansjer'
+DATABASES_PASS = 'ansjer.x.x'
+
+DATABASES = {'default': {
+    'ENGINE': 'django.db.backends.mysql',
+    'NAME': DATABASE_DATA,
+    'USER': DATABASES_USER,
+    'PASSWORD': DATABASES_PASS,
+    'HOST': SERVER_HOST,
+    'PORT': '3306',
+    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+    'AUTOCOMMIT': True
+}}
 
 
 # Password validation

+ 11 - 34
AnsjerPush/test_settings.py

@@ -54,45 +54,22 @@ WSGI_APPLICATION = 'AnsjerPush.wsgi.application'
 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
 
 # test
-
-# 服务器类型
 DATABASE_DATA = 'AnsjerTest'
 SERVER_HOST = 'database-2.clraczw4p0yj.us-west-1.rds.amazonaws.com'
 DATABASES_USER = 'azrds'
 DATABASES_PASS = 'azrds.x.x'
 
-DATABASE_DATA2 = 'AnsjerTest'
-SERVER_HOST2 = 'ansjerpush.clraczw4p0yj.us-west-1.rds.amazonaws.com'
-DATABASES_USER2 = 'azrds'
-DATABASES_PASS2 = 'azrds.x.x'
-
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA,
-        'USER': DATABASES_USER,
-        'PASSWORD': DATABASES_PASS,
-        'HOST': SERVER_HOST,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    },
-    'mysql02': {
-        'ENGINE': 'django.db.backends.mysql',
-        'NAME': DATABASE_DATA2,
-        'USER': DATABASES_USER2,
-        'PASSWORD': DATABASES_PASS2,
-        'HOST': SERVER_HOST2,
-        'PORT': '3306',
-        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-        'AUTOCOMMIT': True
-    }
-}
-DATABASE_ROUTERS = ['AnsjerPush.database_router.DatabaseAppsRouter']
-DATABASE_APPS_MAPPING = {
-    'db1': 'default',
-    'db2': 'mysql02',
-}
+
+DATABASES = {'default': {
+    'ENGINE': 'django.db.backends.mysql',
+    'NAME': DATABASE_DATA,
+    'USER': DATABASES_USER,
+    'PASSWORD': DATABASES_PASS,
+    'HOST': SERVER_HOST,
+    'PORT': '3306',
+    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+    'AUTOCOMMIT': True
+}}
 
 
 # Password validation

+ 0 - 320
Controller/EquipmentInfo.py

@@ -1,320 +0,0 @@
-import json
-import time
-import traceback
-import requests
-
-import oss2
-from django.utils.decorators import method_decorator
-from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView
-from django.views.generic.base import View
-
-from AnsjerPush.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
-from AnsjerPush.config import SERVER_DOMAIN
-from Model.models import Device_Info, VodHlsModel, Equipment_Info
-from Model.models import Device_User
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from Object.UidTokenObject import UidTokenObject
-from Service.CommonService import CommonService
-from Service.ModelService import ModelService
-
-
-'''
-http://192.168.136.45:8077/equipment/info?token=test&operation=add&devUid=2N1K3LE78TYJ38CE111A&Channel=0&eventType=1&eventTime=1234567890&operation=add&alarm=21342134&receiveTime=1234567891234567
-http://test.dvema.com/equipment/info?token=test&operation=query&page=1&line=10
-http://192.168.136.45:8077/equipment/info?token=test&operation=delete&devUid=UKPAH63V23U4ZHEB111A&id=5&id=6&id=7
-http://192.168.136.40:8077/equipment/info?token=test&operation=update&devUid=UKPAH63V23U4ZHEB111A&id=3&id=4
-http://192.168.136.45:8077/equipment/info?token=test&operation=queryByAdmin&page=1&line=10&userID_id=151547867345163613800138001
-http://192.168.136.45:8077/equipment/info?token=test&operation=deleteByAdmin&id=5&id=6&id=7
-
-'''
-
-
-class EquipmentInfo(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(EquipmentInfo, self).dispatch(*args, **kwargs)
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
-
-    def validation(self, request_dict, *args, **kwargs):
-        token = request_dict.get('token', None)
-        response = ResponseObject()
-        tko = TokenObject(token)
-        if tko.code != 0:
-            return response.json(tko.code)
-        userID = tko.userID
-        operation = request_dict.get('operation', None)
-        if not userID:
-            return response.json(309)
-        if operation == 'query':
-            return self.query_info(request_dict, userID, response)
-        elif operation == 'add':
-            return self.add_info(request_dict, userID, response)
-        elif operation == 'update':
-            return self.update_info(request_dict, userID, response)
-        elif operation == 'delete':
-            return self.delete_info(request_dict, userID, response)
-        elif operation == 'findByTime':
-            return self.findByTime_info(request_dict, userID, response)
-        if operation == 'queryByAdmin':
-            return self.query_all_info(request_dict, userID, response)
-        if operation == 'deleteByAdmin':
-            return self.delete_by_admin(request_dict, userID, response)
-        if operation == 'delete_ByApi':
-            return self.delete_api(request_dict, userID, response)
-        else:
-            return response.json(444, {"parm": "operation"})
-
-    def add_info(self, request_dict, userID, response):
-        devUid = request_dict.get('devUid', None)
-        Channel = request_dict.get('Channel', None)
-        eventType = request_dict.get('eventType', None)
-        eventTime = request_dict.get('eventTime', None)
-        receiveTime = request_dict.get('receiveTime', None)
-        alarm = request_dict.get('alarm', None)
-        if not devUid or not Channel or not eventType or not eventTime or not alarm or not receiveTime:
-            return response.json(444, 'devUid, Channel, eventType, eventTime, alarm, receiveTime')
-        own_device = ModelService.check_own_device(userID, UID=devUid)
-        if own_device is not True:
-            return response.json(14)
-        device_info = Device_Info.objects.filter(UID=devUid, userID_id=userID)
-        if not device_info.exists():
-            return response.json(14)
-        try:
-            nowTime = int(time.time())
-            equipment_info = Equipment_Info(
-                userID=Device_User.objects.get(userID=userID),
-                devUid=devUid,
-                Channel=Channel,
-                eventType=eventType,
-                receiveTime=receiveTime,
-                eventTime=eventTime,
-                devNickName=device_info[0].NickName,
-                addTime=nowTime,
-                alarm=alarm)
-            equipment_info.save()
-        except Exception:
-            errorInfo = traceback.format_exc()
-            print(errorInfo)
-            return response.json(500, errorInfo)
-        else:
-            if equipment_info.id:
-                return response.json(0, {'infoID': equipment_info.id,
-                                         'devUid': devUid,
-                                         'Channel': Channel,
-                                         'alarm': alarm,
-                                         'eventType': eventType,
-                                         'eventTime': eventTime,
-                                         'receiveTime': receiveTime,
-                                         'devNickName': equipment_info.devNickName})
-            else:
-                return response.json(500)
-
-    def query_info(self, request_dict, userID, response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if not page or not line:
-            return response.json(444, 'page,line')
-        qs = Equipment_Info.objects.filter(userID_id=userID)
-        uid = request_dict.get('uid', None)
-        if uid:
-            qs = qs.filter(devUid=uid)
-            dvqs = Device_Info.objects.filter(UID=uid).values('Type', 'NickName')
-            uid_type_dict = {uid: {'type': dvqs[0]['Type'], 'NickName': dvqs[0]['NickName']}}
-        else:
-            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type', 'NickName')
-            uid_type_dict = {}
-            for dv in dvqs:
-                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
-        if not qs.exists():
-            return response.json(0, {'datas': [], 'count': 0})
-        count = qs.count()
-        res = qs[(page - 1) * line:page * line]
-        send_json = CommonService.qs_to_dict(res)
-        res = []
-        for p in send_json['datas']:
-            p['fields']['viewAccont'] = ''
-            p['fields']['viewPwd'] = ''
-            devUid = p['fields']['devUid']
-            if devUid in uid_type_dict.keys():
-                p['fields']['uid_type'] = uid_type_dict[devUid]['type']
-                p['fields']['devNickName'] = uid_type_dict[devUid]['NickName']
-            else:
-                p['uid_type'] = ''
-            res.append(p)
-        return response.json(0, {'datas': res, 'count': count})
-
-
-    def update_info(self, request_dict, userID, response):
-        is_update_all = request_dict.get('is_update_all', 0)
-        eventType = request_dict.get('eventType', None)
-        if int(is_update_all) == 1:
-            try:
-                eq = Equipment_Info.objects.filter(userID_id=userID)
-                if eventType:
-                    eq = eq.filter(eventType=int(eventType))
-                is_update = eq.update(status=1)
-                return response.json(0, {'update_count': is_update})
-            except Exception as e:
-                print(repr(e))
-            return response.json(0, {'update_success': 'all'})
-        else:
-            id_list = request_dict.getlist('id[]', None)
-            if id_list is None or len(id_list) < 1:
-                id_list = request_dict.getlist('id', None)
-            param_flag = CommonService.get_param_flag(data=[id_list])
-            if param_flag is True:
-                count = 0
-                for id in id_list:
-                    try:
-                        eq = Equipment_Info.objects.filter(id=int(id))
-                        if eq.exists():
-                            own_dev = ModelService.check_own_device(userID, eq[0].devUid)
-                            if own_dev is True:
-                                count += 1
-                                eq.update(status=1)
-                    except Exception as e:
-                        print(repr(e))
-                return response.json(0, {'update_success': count})
-            else:
-                return response.json(444)
-
-    def delete_info(self, request_dict, userID, response):
-        id_list = request_dict.getlist('id[]', None)
-        if id_list is None or len(id_list) < 1:
-            id_list = request_dict.getlist('id', None)
-        param_flag = CommonService.get_param_flag(data=[id_list])
-        if param_flag is True:
-            try:
-                for id in id_list:
-                    eq = Equipment_Info.objects.filter(id=id)
-                    if eq.exists():
-                        own_dev = ModelService.check_own_device(userID, eq[0].devUid)
-                        if own_dev is True:
-                            eq.delete()
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print(errorInfo)
-                return response.json(424, repr(e))
-            else:
-                return response.json(0)
-        else:
-            return response.json(444)
-
-    def findByTime_info(self, request_dict, userID, response):
-        startTime = request_dict.get('startTime')
-        endTime = request_dict.get('endTime')
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if not startTime or not endTime or not page or not line:
-            return response.json(444, 'startTime, endTime, page, line')
-        uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
-        if not len(uid_list):
-            return response.json(0, {'datas': [], 'count': 0})
-        qs = Equipment_Info.objects.filter(userID_id=userID,
-                                           eventTime__range=(startTime, endTime)).order_by('-id')
-        if qs.exists():
-            count = qs.count()
-            res = qs[(page - 1) * line:page * line]
-            send_json = CommonService.qs_to_dict(res)
-            send_json['count'] = count
-            return response.json(0, send_json)
-
-    # 管理员查询指定用户的推送信息接口
-    def query_all_info(self, request_dict, userID, response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        username = request_dict.get('username', None)
-        uid = request_dict.get('uid', None)
-        devNickName = request_dict.get('devNickName', None)
-        Channel = request_dict.get('Channel', None)
-        if not page or not line:
-            return response.json(444, 'page,line')
-        check_perm = ModelService.check_perm(userID=userID, permID=30)
-        if not check_perm:
-            return response.json(404)
-
-        if not username and not uid and not devNickName and not Channel:
-            qs = Equipment_Info.objects.all().order_by('-id')
-        elif username:
-            user = Device_User.objects.filter(username=username)
-            users = CommonService.qs_to_dict(user)
-            # 从字典类型中找到对应的pk值,即是userID
-            user_id = users.get('datas')[0].get('pk')
-            if not user.exists():
-                return response.json(104)
-
-            uid_list = Device_Info.objects.filter(userID_id=user_id).values_list('UID', flat=True)
-            if not len(uid_list):
-                return response.json(0, {'datas': [], 'count': 0})
-            qs = Equipment_Info.objects.filter(userID_id=user_id).order_by('-id')
-        elif uid:
-            qs = Equipment_Info.objects.filter(devUid=uid).order_by('-id')
-        elif devNickName:
-            qs = Equipment_Info.objects.filter(devNickName=devNickName).order_by('-id')
-        elif Channel:
-            qs = Equipment_Info.objects.filter(Channel=Channel).order_by('-id')
-        if not qs.exists():
-            return response.json(0, {'datas': [], 'count': 0})
-        count = qs.count()
-        res = qs[(page - 1) * line:page * line]
-        send_json = CommonService.qs_to_dict(res)
-        send_json['count'] = count
-        return response.json(0, send_json)
-
-    # 管理员的删除推送信息的接口
-    def delete_by_admin(self, request_dict, userID, response):
-        id_list = request_dict.getlist('id', None)
-        if not len(id_list):
-            return response.json(444, 'id is None or not list')
-        check_perm = ModelService.check_perm(userID=userID, permID=10)
-        if check_perm is True:
-            try:
-                is_delete = Equipment_Info.objects.filter(id__in=id_list).delete()
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print(errorInfo)
-                return response.json(424, {'details': repr(e)})
-            else:
-                return response.json(0, {'delete_count': is_delete[0]})
-        else:
-            return response.json(404)
-
-
-    def delete_api(self, request_dict, userID, response):
-        equipment_info = request_dict.get('equipment_info', None)
-        content = json.loads(equipment_info)
-        search_kwargs = CommonService.get_kwargs(data=content)
-        # qs = Equipment_Info.objects.filter(**search_kwargs)
-        ei_qs = Equipment_Info.objects.filter(**search_kwargs)
-        ei_qs.delete()
-        ei_count = ei_qs.count()
-        while (ei_count > 1000):
-            ei_qs[0:1000].delete()
-'''
-use information_schema;
-select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='Ansjer81';
-'''
-# 按季度删除访问日志
-def deleteExpireEquipmentInfo(request):
-    response = ResponseObject()
-    i = int(request.GET.get('i', 5))
-
-    import time
-    nowTime = int(time.time())
-    for i in range(i):
-        ei = Equipment_Info.objects.filter(addTime__lte=str(nowTime - 3600 * 24 * 7))[0:10000]
-        id_list = ei.values_list("id", flat=True)
-        print(id_list)
-        Equipment_Info.objects.filter(id__in=list(id_list)).delete()
-    return response.json(0)
-
-

+ 9 - 79
Model/models.py

@@ -75,7 +75,7 @@ class Permissions(models.Model):
         verbose_name = u'role permission'
         verbose_name_plural = verbose_name
         unique_together = (('permName'),)
-        app_label = "db1"
+
     def natural_key(self):
         return (self.permName)
 
@@ -94,7 +94,6 @@ class Role(models.Model):
         db_table = 'role'
         verbose_name = u'用户角色'
         verbose_name_plural = verbose_name
-        app_label = "db1"
 
     def __str__(self):
         return self.roleName
@@ -159,7 +158,6 @@ class Device_User(AbstractBaseUser):
         verbose_name = u'用户信息'
         db_table = 'device_user'
         get_latest_by = 'last_login'
-        app_label = "db1"
 
     def __str__(self):
         return self.username
@@ -259,7 +257,6 @@ class Device_Info(models.Model):
         ordering = ('-data_joined',)
         verbose_name = u'用户设备信息表'
         verbose_name_plural = verbose_name
-        app_label = "db1"
 
 
 class Equipment_Info(models.Model):
@@ -272,8 +269,12 @@ class Equipment_Info(models.Model):
     alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
     eventTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'设备报警时间')
     receiveTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    userID_id =  models.CharField(default='', blank=True, max_length=32, verbose_name=u'用户ID')
+    userID = models.ForeignKey(Device_User, null=True, blank=True, to_field='userID', on_delete=models.CASCADE)
     is_st = models.SmallIntegerField(default=0, verbose_name='是否截图')  # 0 否,1 是图,2,视频
+    # message_id = models.CharField(max_length=32, default='', verbose_name='第三方推送服务器返回的id')
+    # push_type = models.SmallIntegerField(default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
+    # push_server_status = models.IntegerField(default=200, verbose_name='是否成功推送到第三方服务器。200:成功,other:失败')
+    # push_device_status = models.SmallIntegerField(default=-1, verbose_name='是否成功推送到目标设备。0:失败,1:成功')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
 
     def __str__(self):
@@ -284,15 +285,13 @@ class Equipment_Info(models.Model):
         verbose_name = u'设备信息推送表'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
-        app_label = "db2"
 
 
 # 系统发送信息新到用户
 class SysMsgModel(models.Model):
-    #更新
     id = models.AutoField(primary_key=True, verbose_name='自增id')
-    userID_id =  models.CharField(default='', blank=True, max_length=32, verbose_name=u'用户ID')
-    msg = models.TextField(blank=True, default='', verbose_name=u'消息发送内容')
+    userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)  # 用户信息
+    msg = models.TextField(blank=True, default='', verbose_name=u'发送内容')
     status = models.SmallIntegerField(verbose_name='是否已读', default=0)  # 0:否,1:是
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
@@ -304,7 +303,6 @@ class SysMsgModel(models.Model):
         verbose_name = '系统消息'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
-        app_label = "db2"
 
 # 设备推送重构
 # 设备配置表,新
@@ -347,7 +345,6 @@ class UidSetModel(models.Model):
         verbose_name = u'设备配置表'
         verbose_name_plural = verbose_name
         ordering = ('id',)
-        app_label = "db1"
 
 
 # 设备关联用户推送
@@ -370,7 +367,6 @@ class UidPushModel(models.Model):
         verbose_name = '设备绑定'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
-        app_label = "db1"
 
 
 class UID_Preview(models.Model):
@@ -384,70 +380,4 @@ class UID_Preview(models.Model):
         db_table = 'uid_preview'
         verbose_name = '设备预览图'
         verbose_name_plural = verbose_name
-        ordering = ('id',)
-        app_label = "db1"
-
-class Access_Log(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    user = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'用户')
-    operation = models.CharField(max_length=100, db_index=True, default='', blank=True, verbose_name=u'操作')
-    ip = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
-    url = models.CharField(max_length=150, default='', blank=True, verbose_name=u'访问路径')
-    status = models.IntegerField(default=0, blank=True, verbose_name=u'状态')
-    time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name=u'访问时间')
-    content = models.TextField(blank=True, default='', verbose_name=u'参数内容')
-
-    class Meta:
-        db_table = 'access_log'
-        verbose_name = u'访问日志表'
-        verbose_name_plural = verbose_name
-        app_label = "db1"
-
-# 存储通表
-class VodBucketModel(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name='主键')
-    bucket = models.CharField(max_length=30, verbose_name='设备UID')
-    storeDay = models.IntegerField(default=0, verbose_name='存储生命周期(天)')
-    content = models.TextField(verbose_name='描述', default='')
-    endpoint = models.CharField(max_length=125, default='', verbose_name='存储节点')
-    area = models.CharField(max_length=16, default='', verbose_name='区域')
-    region = models.CharField(max_length=16, default='', verbose_name='regionID')
-
-    addTime = models.IntegerField(verbose_name='添加时间', default=0)
-    updTime = models.IntegerField(verbose_name='更新时间', default=0)
-
-    mold = models.SmallIntegerField(default=0, verbose_name='存储区域类型')  # 0:国内阿里 1:国外aws
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'vod_bucket'
-        verbose_name = u'存储通信息'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "db1"
-
-
-class VodHlsModel(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name='回放列表主键')
-    uid = models.CharField(max_length=20, verbose_name='设备UID')
-    channel = models.SmallIntegerField(default=0, verbose_name='通道')
-    time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0, db_index=True)
-    endTime = models.IntegerField(verbose_name='删除时间', default=0)
-    sec = models.IntegerField(verbose_name='秒数', default=0)
-    bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, default=1,
-                               verbose_name='存储空间')
-    fg = models.SmallIntegerField(default=0,verbose_name='时间片段数') # 0为阿里云存储方案 >0为亚马逊方案
-
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'vod_hls'
-        verbose_name = u'云存回放信息表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "db1"
-
+        ordering = ('id',)

+ 0 - 126
Object/TokenObject.py

@@ -1,126 +0,0 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerOA
-@software: PyCharm
-@DATE: 2018/8/13 15:36
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: TokenObject.py
-@Contact: chanjunkai@163.com
-"""
-from AnsjerPush.config import OAUTH_ACCESS_TOKEN_SECRET, OAUTH_REFRESH_TOKEN_SECRET, OAUTH_ACCESS_TOKEN_TIME, \
-    OAUTH_REFRESH_TOKEN_TIME
-import jwt, time
-from Object.RedisObject import RedisObject
-
-
-class TokenObject:
-
-    def __init__(self, token=None):
-        if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTg0MzUxODk2MjgyMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM2ODAzMTc1OTYiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1ODcyNzcwNjB9.c0LV_XyxwbzUlYqMJqx7vw9f19Jv-0kGnUHuu_go-mo'
-        if token == 'test':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1Njk5OTg4OTYsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSIsImxhbmciOiJlbiIsIm1fY29kZSI6IjEyMzQxMzI0MzIxNCJ9.VAQtT9AbCCfXcrNj9DL5cvVasMDoI7AP8ptgU1GoMu8'
-        self.token = token
-        self.lang = None
-        self.userID = None
-        self.user = ''
-        self.code = 0
-        # 令牌校验
-        self.valid()
-
-    def valid(self):
-        if self.token is None:
-            self.code = 309
-            return
-        try:
-            res = jwt.decode(self.token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256')
-            # print(res)
-            self.userID = res.get('userID', None)
-            self.lang = res.get('lang', None)
-            self.user = res.get('user', '')
-            # 刷新登录时间
-            if self.userID:
-                print(self.user)
-                redisObj = RedisObject(db=3)
-                redisObj.set_data(key=self.userID, val=self.user, expire=300)
-
-        except jwt.ExpiredSignatureError as e:
-            print('过期')
-            print(repr(e))
-            self.code = 309
-            return
-        except Exception as e:
-            self.code = 309
-            return
-        else:
-            if not self.userID:
-                self.code = 309
-                return
-            else:
-                if self.userID:
-                    self.code = 0
-                    return res
-                else:
-                    self.code = 309
-                    return
-    # token加密
-    def generate(self, data={}):
-        try:
-            access_expire = int(OAUTH_ACCESS_TOKEN_TIME.total_seconds())
-            refresh_expire = int(OAUTH_REFRESH_TOKEN_TIME.total_seconds())
-            now_stamp = int(time.time())
-            access_data = data
-            refresh_data = data
-            access_data['exp'] = access_expire + now_stamp
-            refresh_data['exp'] = refresh_expire + now_stamp
-            access_token = jwt.encode(access_data,
-                                      OAUTH_ACCESS_TOKEN_SECRET,
-                                      algorithm='HS256')
-            refresh_token = jwt.encode(
-                refresh_data,
-                OAUTH_REFRESH_TOKEN_SECRET,
-                algorithm='HS256')
-            res = {
-                'access_token': access_token.decode('utf-8'),
-                'access_expire': access_expire,
-                'refresh_expire': refresh_expire,
-                'refresh_token': refresh_token.decode('utf-8'),
-            }
-        except Exception as e:
-            self.code = 309
-            print(repr(e))
-        else:
-            self.code = 0
-            return res
-
-    def refresh(self):
-        if not self.token:
-            self.code = 309
-            return
-        try:
-            res = jwt.decode(self.token, OAUTH_REFRESH_TOKEN_SECRET, algorithms='HS256')
-        except jwt.ExpiredSignatureError as e:
-            print('过期')
-            print(repr(e))
-            self.code = 309
-        except Exception as e:
-            self.code = 309
-            print(repr(e))
-        else:
-            self.code = 0
-            userID = res.get('userID', '')
-            user = res.get('user', '')
-            lang = self.lang
-            refreshRes = self.generate(data={'userID': userID, 'lang': lang, 'user': user})
-            return refreshRes
-
-# import jwt
-#
-#
-# token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySUQiOiIxNTMzODg0NDE4NTE5MTM4MDAxMzgwMDAiLCJleHAiOjE1NTU1NTEwNjUsInVzZXIiOiIxMTFAcXEuY29tIiwibGFuZyI6ImVuIn0.waPlfIBucSA7rFfnsxOKIVJ_cL6xiP33cAiz1IDoteY'
-# res = jwt.decode(token, 'a+jbgnw%@1%zy^=@dn62%', algorithms='HS256')
-# print(res)

+ 0 - 195
Service/ModelService.py

@@ -1,195 +0,0 @@
-import logging
-import time
-
-import requests
-
-from AnsjerPush.config import BASE_DIR
-from Model.models import *
-from Service.CommonService import CommonService
-import json
-from django.db.models import Q
-
-
-# 针对模型封装的复用性代码
-class ModelService:
-    # 获取当前用户角色名
-    @staticmethod
-    def getRole(rid):
-        return Role.objects.get(rid=rid).roleName
-
-    # 获取用户所有权限
-    @staticmethod
-    def own_permission(userID):
-        permission = Device_User.objects.get(userID=userID).role.values_list('permission', flat=True)
-        if permission:
-            return list(permission)
-        return []
-
-    # 获取用户角色相关
-    @staticmethod
-    def own_role(userID):
-        try:
-            role_qs = Device_User.objects.get(userID=userID).role.values('rid', 'roleName')
-            if role_qs.exists():
-                return {'rid': role_qs[0]['rid'], 'roleName': role_qs[0]['roleName']}
-        except Exception as e:
-            pass
-        return {'rid': '', 'roleName': ''}
-
-    # 检测权限有无
-    @staticmethod
-    def check_perm(userID, permID):
-        try:
-            perm_list = Device_User.objects.get(userID=userID).role.values_list('permission', flat=True)
-            if perm_list:
-                if permID in perm_list:
-                    return True
-        except Exception as e:
-            return False
-        return False
-
-    # 根据设备主键ID判断是否拥有该设备
-    @staticmethod
-    def check_user_own_device(userID, deviceID):
-        try:
-            dvqs = Device_Info.objects.filter(userID_id=userID).values_list('id', flat=True)
-            if dvqs:
-                if deviceID in dvqs:
-                    return True
-        except Exception as e:
-            return False
-        return False
-
-    # 根据设设备唯一名称UID判断是否拥有该设备
-    @staticmethod
-    def check_own_device(userID, UID):
-        dvqs = Device_Info.objects.filter(userID_id=userID, UID=UID)
-        if dvqs.exists():
-            return True
-        return False
-
-    # 根据userID获取用户名
-    @staticmethod
-    def get_user_name(userID):
-        try:
-            if userID:
-                device_user = Device_User.objects.get(userID=userID)
-                return device_user.username
-            else:
-                return ''
-        except Exception as e:
-            return ''
-
-    @staticmethod
-    def get_user_mark(userID):
-        if userID:
-            qs = Device_User.objects.filter(userID=userID).values('username', 'userEmail', 'phone')
-            if qs[0]['username']:
-                return qs[0]['username']
-            elif qs[0]['userEmail']:
-                return qs[0]['userEmail']
-            elif qs[0]['phone']:
-                return qs[0]['phone']
-            else:
-                return ''
-        else:
-            return ''
-
-    # 根据username获取userID
-    @staticmethod
-    def get_userID_byname(username):
-        try:
-            device_user = Device_User.objects.get(Q(username=username) | Q(userEmail=username) | Q(phone=username))
-        except Exception as e:
-            return None
-        else:
-            return device_user.userID
-
-    # 访问日志添加
-    @staticmethod
-    def addAccessLog(data):
-        try:
-            access_log = Access_Log.objects.create(**data)
-        except Exception as e:
-            return False
-        else:
-            return True
-
-    # 访问日志批量添加
-    @staticmethod
-    def add_batch_log(data_list):
-        try:
-            if data_list:
-                querysetlist = []
-                for i in data_list:
-                    data = json.loads(i.decode('utf-8'))
-                    querysetlist.append(Access_Log(**data))
-                Access_Log.objects.bulk_create(querysetlist)
-            else:
-                return
-        except Exception as e:
-            print('ggga')
-            print(repr(e))
-            return False
-        else:
-            return True
-
-
-    # 通过用户名获取userIDLIST
-    @staticmethod
-    def get_user_list_by_username(username):
-        userID_list = Device_User.objects.filter(Q(username=username) | Q(userEmail=username) | Q(phone=username)). \
-            values_list('userID', flat=True)
-        return userID_list
-
-    @staticmethod
-    def del_eq_info(userID, uid):
-        notify_alexa_delete(userID, uid)
-        ei_qs = Equipment_Info.objects.filter(userID_id=userID, devUid=uid)
-        ei_qs.delete()
-        # ei_count = ei_qs.count()
-        # while (ei_count > 1000):
-        #     ei_qs[0:1000].delete()
-
-        # 根据设备主键ID判断是否拥有该设备
-
-    # 获取绑定用户设备列表
-    @staticmethod
-    def get_uid_list(userID):
-        uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
-        return list(uid_list)
-
-    @staticmethod
-    def notify_alexa_add(uid, userID, nickname):
-        url = 'https://www.zositech.xyz/deviceStatus/addOrUpdate'
-        data = {
-            'UID': uid,
-            'userID': userID,
-            'uid_nick': nickname
-        }
-        try:
-            requests.post(url, data=data, timeout=5)
-        except Exception as e:
-            print(repr(e))
-
-    @staticmethod
-    def add_log(ip, userID, operation):
-        file_path = '/'.join((BASE_DIR, 'static/delete_device.log'))
-        file = open(file_path, 'a+')
-        file.write(ip + "; username:" + userID + "; time:" + time.strftime(
-                "%Y-%m-%d %H:%M:%S", time.localtime()) + "; " + operation)
-        file.write('\n')
-        file.flush()
-        file.close()
-
-
-def notify_alexa_delete(userID, UID):
-    url = 'https://www.zositech.xyz/deviceStatus/delete'
-    data = {
-        'userID': userID,
-        'UID': UID
-    }
-    try:
-        requests.post(url=url, data=data, timeout=5)
-    except Exception as e:
-        print(repr(e))