pengzhibo168 5 роки тому
батько
коміт
ec5f77115b

+ 6 - 4
Ansjer/local_settings.py

@@ -77,10 +77,12 @@ DATABASE_DATA = 'AnsjerLocal'
 SERVER_HOST = '192.168.136.45'
 DATABASES_USER = 'ansjer'
 DATABASES_PASS = 'ansjer.x.x'
-DATABASE_DATA = 'AnsjerLocal'
-SERVER_HOST = 'localhost'
-DATABASES_USER = 'root'
-DATABASES_PASS = '123456'
+
+# DATABASE_DATA = 'AnsjerLocal'
+# SERVER_HOST = 'localhost'
+# DATABASES_USER = 'root'
+# DATABASES_PASS = '123456'
+
 DATABASES = {'default': {
     'ENGINE': 'django.db.backends.mysql',
     'NAME': DATABASE_DATA,

+ 3 - 1
Ansjer/urls.py

@@ -8,7 +8,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     UserManger, CheckUserData, \
     UserController, CloudVod, OrderContrller, VodBucket, DetectController, DeviceShare, UserBrandController, \
     StsOssController, UIDPreview, OssCrd, SysMsg, UidUser, EquipmentManagerV2, PushDeploy, AppSetController,\
-    ApplicationController
+    ApplicationController, UserExController
 
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -183,6 +183,8 @@ urlpatterns = [
     url(r'^application/(?P<operation>.*)$', ApplicationController.ApplicationView.as_view()),
     url(r'^login/oauth/(?P<operation>.*)$', ApplicationController.AuthView.as_view()),
     url(r'^grant/code/(?P<operation>.*)$', ApplicationController.GrantCodeView.as_view()),
+    url(r'^user/ex/(?P<operation>.*)$', UserExController.UserExView.as_view()),
+
 
     # app 设备消息模板
     # 路由加参数参考

+ 8 - 2
Controller/AdminManage.py

@@ -3,7 +3,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password  # 对密码加密模块
-from Model.models import Device_Info, Role
+from Model.models import Device_Info, Role, UserExModel
 from Service.ModelService import ModelService
 from django.utils import timezone
 from Model.models import Access_Log, Device_User
@@ -55,7 +55,7 @@ class AdminManage(TemplateView):
             return self.getAllOnLine(userID, response)
         if operation == 'getOnLine':
             return self.getRedisOnline(userID, response)
-            return self.getOnLine(userID, response)
+            # return self.getOnLine(userID, response)
         if operation == 'getAllUserName':
             return self.getAllUserName(userID, response)
         if operation == 'getStatisAccess':
@@ -152,6 +152,7 @@ class AdminManage(TemplateView):
             count = int(Device_User.objects.count())
             redisObj = RedisObject(db=3)
             onlines = int(redisObj.get_size())
+            print(onlines)
             return response.json(0, {"onlinenum": onlines, "no_onlinenum": count - onlines})
         else:
             return response.json(404)
@@ -290,6 +291,11 @@ def search_user_by_content(request):
                         now_time = timezone.localtime(timezone.now())
                         if now_time > dl_time:
                             sqlDict["datas"][k]['fields']['online'] = False
+            ue = UserExModel.objects.filter(userID=v['pk'])
+            if ue.exists():
+                sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
+            else:
+                sqlDict["datas"][k]['fields']['appBundleId'] = ''
         sqlDict['count'] = count
         return response.json(0, sqlDict)
     return response.json(0, {'datas': [], 'count': 0})

+ 1 - 1
Controller/OssCrd.py

@@ -61,7 +61,7 @@ class OssCrdView(View):
 
     # 管理员删除
     def do_admin_delete(self, request_dict, userID, response):
-        own_perm = ModelService.check_perm(userID, 20)
+        own_perm = ModelService.check_perm(userID, 10)
         if own_perm is True:
             id = request_dict.getlist('id', None)
             uid_user_qs = OssCrdModel.objects.filter(id__in=id)

+ 1 - 1
Controller/UidSetController.py

@@ -297,7 +297,7 @@ class UidSetView(View):
             timestamp = int(time.time())
             uid_set = UidSetModel.objects.filter(uid=uid)
             if uid_set.exists():
-                uid_set.update(updTime=timestamp,region_alexa=region_alexa,is_alexa=is_alexa )
+                uid_set.update(updTime=timestamp,region_alexa=region_alexa,is_alexa=is_alexa)
                 return response.json(0)
             else:
                 return response.json(173)

+ 173 - 0
Controller/UserExController.py

@@ -0,0 +1,173 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD019
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2019/12/17 15:50
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: AliPayObject.py
+@Contact: pzb3076@163.com
+"""
+
+import re
+import time
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+from django.utils import timezone
+from django.views.generic.base import View
+import datetime, simplejson as json
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Model.models import Device_Info, Role, UserExModel, Device_User
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject, RedisObject
+from Service.CommonService import CommonService
+from Service.ModelService import ModelService
+class UserExView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(UserExView, self).dispatch(*args, **kwargs)
+
+    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):
+        response = ResponseObject()
+        if operation is None:
+            return response.json(444, 'error path')
+        token = request_dict.get('token', None)
+        # 设备主键uid
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if operation == 'adminDelete':
+            return self.do_admin_delete(request_dict, userID, response)
+        elif operation == 'adminQuery':
+            return self.do_admin_query(request_dict, userID, response)
+        else:
+            return response.json(444, 'error path')
+
+    # 管理员删除
+    def do_admin_delete(self, request_dict, userID, response):
+        own_perm = ModelService.check_perm(userID, 10)
+        if own_perm is True:
+            id = request_dict.getlist('id', None)
+            ue = UserExModel.objects.filter(id=id)
+            if ue.exists():
+                ue.delete()
+                return response.json(0)
+            else:
+                return response.json(173)
+        else:
+            return response.json(404)
+
+    # 管理员查询接口
+    def do_admin_query(self, request_dict, userID, response):
+        own_perm = ModelService.check_perm(userID, 20)
+        if own_perm is not True:
+            return response.json(404)
+        page = request_dict.get('page', None)
+        line = request_dict.get('line', None)
+        content = request_dict.get('content', None)
+        rstime = request_dict.get('rstime', None)
+        retime = request_dict.get('retime', None)
+        app_id = request_dict.get('app_id', '')
+
+        response = ResponseObject()
+        if page is not None and line is not None:
+            page = int(page)
+            line = int(line)
+        else:
+            return response.json(10, 'page,line is none')
+
+        if app_id == "":
+            if content is None:
+                queryset = Device_User.objects.all().order_by('-data_joined')
+            else:
+                try:
+                    content = json.loads(content)
+                    search_kwargs = CommonService.get_kwargs(data=content)
+                    queryset = Device_User.objects.filter(**search_kwargs)
+                except Exception as e:
+                    return response.json(444, repr(e))
+            if rstime is not None and rstime != '' and retime is not None and retime != '':
+                startt = datetime.datetime.fromtimestamp(int(rstime))
+                rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                endt = datetime.datetime.fromtimestamp(int(retime))
+                retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                queryset = queryset.filter(data_joined__range=(rstime, retime))
+            elif rstime is not None and rstime != '':
+                startt = datetime.datetime.fromtimestamp(int(rstime))
+                rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                queryset = queryset.filter(data_joined__gte=rstime)
+            elif retime is not None and retime != '':
+                endt = datetime.datetime.fromtimestamp(int(retime))
+                retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                queryset = queryset.filter(data_joined__lte=retime)
+            if queryset.exists():
+                count = queryset.count()
+                res = queryset[(page - 1) * line:page * line]
+                sqlDict = CommonService.qs_to_dict(res)
+                for k, v in enumerate(sqlDict["datas"]):
+                    if len(v['fields']['role']) > 0:
+                        role_query_set = Role.objects.get(rid=v['fields']['role'][0])
+                        sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
+                    for val in res:
+                        if v['pk'] == val.userID:
+                                redisObj = RedisObject(db=3)
+                                if redisObj.get_data(key=val.userID):
+                                    sqlDict["datas"][k]['fields']['online'] = True
+                                else:
+                                    sqlDict["datas"][k]['fields']['online'] = False
+
+                    ue = UserExModel.objects.filter(userID=v['pk'])
+                    if ue.exists():
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
+                    else:
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ''
+                sqlDict['count'] = count
+                return response.json(0, sqlDict)
+            return response.json(0, {'datas': [], 'count': 0})
+        else:
+            ue = UserExModel.objects.filter(appBundleId=app_id)
+            if ue.exists():
+                count = ue.count()
+                res = ue[(page - 1) * line:page * line]
+                sqlDict1 = CommonService.qs_to_dict(res)
+                user_id=[]
+                for k1, v1 in enumerate(sqlDict1["datas"]):
+                    user_id.extend([v1['fields']['userID']])
+                print(user_id)
+                queryset = Device_User.objects.filter(userID__in=user_id)
+                sqlDict = CommonService.qs_to_dict(queryset)
+                for k, v in enumerate(sqlDict["datas"]):
+                    if len(v['fields']['role']) > 0:
+                        role_query_set = Role.objects.get(rid=v['fields']['role'][0])
+                        sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
+                    for val in queryset:
+                        if v['pk'] == val.userID:
+                            redisObj = RedisObject(db=3)
+                            if redisObj.get_data(key=val.userID):
+                                sqlDict["datas"][k]['fields']['online'] = True
+                            else:
+                                sqlDict["datas"][k]['fields']['online'] = False
+                    ue = UserExModel.objects.filter(userID=v['pk'])
+                    if ue.exists():
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
+                    else:
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ''
+                sqlDict['count'] = count
+                return response.json(0, sqlDict)
+            return response.json(0, {'datas': [], 'count': 0})
+

+ 7 - 1
Controller/UserManger.py

@@ -12,7 +12,7 @@ from django.views.generic import TemplateView, View
 
 from Ansjer.config import BASE_DIR
 from Ansjer.config import SERVER_DOMAIN
-from Model.models import Role, Device_User, UserOauth2Model
+from Model.models import Role, Device_User, UserOauth2Model, UserExModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -288,6 +288,12 @@ def showAllUserInterface(request):
                 sqlDict["datas"][k]['fields']['online'] = True
             else:
                 sqlDict["datas"][k]['fields']['online'] = False
+
+            ue = UserExModel.objects.filter(userID=sqlDict["datas"][k]['pk'])
+            if ue.exists():
+                sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
+            else:
+                sqlDict["datas"][k]['fields']['appBundleId'] = ''
         sqlDict['count'] = device_user_count
         return response.json(0, sqlDict)
     else:

+ 7 - 1
Controller/shareUserPermission.py

@@ -5,7 +5,7 @@ import traceback, simplejson as json
 from django.views.generic.base import View
 from django.views.decorators.csrf import csrf_exempt
 from django.utils.decorators import method_decorator
-from Model.models import Device_User, Device_Info, Role
+from Model.models import Device_User, Device_Info, Role, UserExModel
 from Service.CommonService import CommonService
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -59,6 +59,7 @@ class searchUserView(View):
                     device_Info_dict['Type'] = eachJson1['fields']['Type']
                     device_Info_dict['UID'] = eachJson1['fields']['UID']
                     device_Info_dict['pk'] = eachJson1['pk']
+
                     device_Info_dict['NickName'] = eachJson1['fields']['NickName']
                     device_Info_dict['View_Password'] = eachJson1['fields']['View_Password']
                     device_Info_dict['View_Account'] = eachJson1['fields']['View_Account']
@@ -117,6 +118,11 @@ class searchUserView(View):
                         sqlDict["datas"][k]['fields']['online'] = True
                     else:
                         sqlDict["datas"][k]['fields']['online'] = False
+                    ue = UserExModel.objects.filter(userID=v['pk'])
+                    if ue.exists():
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
+                    else:
+                        sqlDict["datas"][k]['fields']['appBundleId'] = ''
                 sqlDict['count'] = device_user_count
                 return response.json(0, sqlDict)
             else: