Browse Source

Merge branch 'pzb' of ssh://192.168.136.45:10022/SERVER/AnsjerServer into pzb

# Conflicts:
#	Ansjer/urls.py
chenjunkai 6 years ago
parent
commit
253fb93413
6 changed files with 230 additions and 87 deletions
  1. 5 2
      Ansjer/local_settings.py
  2. 0 2
      Ansjer/urls.py
  3. 2 2
      Controller/AppInfo.py
  4. 199 76
      Controller/UserBrandController.py
  5. 16 5
      Model/models.py
  6. 8 0
      local_manage.py

+ 5 - 2
Ansjer/local_settings.py

@@ -57,7 +57,7 @@ TEMPLATES = [
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         # 'DIRS': [BASE_DIR + '/static/templates', ],
-        'DIRS': [BASE_DIR + '/templates', ],
+        'DIRS': [BASE_DIR + '/templates'],
         'APP_DIRS': True,
         'OPTIONS': {
             'context_processors': [
@@ -77,7 +77,10 @@ DATABASE_DATA = 'AnsjerLocal'
 SERVER_HOST = '192.168.136.45'
 DATABASES_USER = 'ansjer'
 DATABASES_PASS = '1234'
-
+# DATABASE_DATA = 'AnsjerLocal'
+# SERVER_HOST = 'localhost'
+# DATABASES_USER = 'root'
+# DATABASES_PASS = '123456'
 DATABASES = {'default': {
     'ENGINE': 'django.db.backends.mysql',
     'NAME': DATABASE_DATA,

+ 0 - 2
Ansjer/urls.py

@@ -71,8 +71,6 @@ urlpatterns = [
     url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),  # 设备推送信息
     url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
-    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类
-    url(r'^userbrandinfo',UserBrandController.UserBrandInfo.as_view()), # 用户登录的手机端品牌记录统计信息表
 
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
     url(r'^accesslog', AccessLog.AccessLog.as_view()),

+ 2 - 2
Controller/AppInfo.py

@@ -68,7 +68,6 @@ class AppInfo(View):
                 app_info = App_Info.objects.get(appBundleId=appBundleId, app_type=app_type)
             except Exception:
                 errorInfo = traceback.format_exc()
-                print(errorInfo)
                 return response.json(424, {'details': errorInfo})
             else:
                 return response.json(0, {'appBundleId': app_info.appBundleId,
@@ -227,8 +226,9 @@ class AppVersionView(View):
         #     return render_to_response('appVersionLists_cn.html')
         # else:
         #     return render_to_response('appVersionLists_en.html')
-        queryset = App_Colophon.objects.filter(lang=lang,app_id__appBundleId=appBundleId,app_id__app_type=app_type).order_by('-newApp_version')
+        queryset = App_Colophon.objects.filter(lang=lang,app_id__appBundleId=appBundleId,app_id__app_type=app_type).order_by('-version_time','-newApp_version')
         queryset_dict = CommonService.qs_to_dict(queryset).get('datas')
+        print (queryset_dict)
         # 修改数据逻辑改装数据返回值
         for k, v in enumerate(queryset_dict):
             content = v['fields']['content']

+ 199 - 76
Controller/UserBrandController.py

@@ -1,20 +1,32 @@
+#!/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/5/9 11:50
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: AliPayObject.py
+@Contact: pzb3076@163.com
+"""
+
 from django.views.generic.base import View
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from Service.ModelService import ModelService
-from Model.models import User_Brand, Device_User
+from Model.models import User_Brand,Device_User
 from django.utils import timezone
-import traceback, time
+import traceback,time,json,urllib.request
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
-
+from collections import Counter
 '''
-
-http://192.168.136.45:8077/userbrandinfo?operation=query&token=test&page=1&line=10
-
-http://192.168.136.39:8000/userbrandinfo?operation=query&token=test&page=1&line=5
-http://192.168.136.39:8000/userbrandinfo?operation=queryAll&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NTk4OTY4NTd9.nhK3VSghSGjyXKjel4woz7R_3bhjgqQDlX-ypYsklNU&page=1&line=5
+http://192.168.136.45:8077/userbrandinfo/query?token=test&page=1&line=10
+http://192.168.136.39:8000/userbrandinfo/query?token=test&page=1&line=5
+http://192.168.136.39:8000/userbrandinfo/queryAll?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NTk4OTY4NTd9.nhK3VSghSGjyXKjel4woz7R_3bhjgqQDlX-ypYsklNU&page=1&line=5
 '''
 
 
@@ -25,15 +37,18 @@ class UserBrandInfo(View):
 
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
-        self.clientIP = CommonService.get_ip_address(request)
-        return self.validation(request_dict=request.GET)
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
 
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
-        self.clientIP = CommonService.get_ip_address(request)
-        return self.validation(request_dict=request.POST)
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
 
-    def validation(self, request_dict, *args, **kwargs):
+    def validation(self, request_dict, request, operation):
+        if operation is None:
+            return response.json(444, 'error path')
+        self.clientIP = CommonService.get_ip_address(request)
         response = ResponseObject()
         token = request_dict.get('token', None)
         if token is not None:
@@ -41,16 +56,22 @@ class UserBrandInfo(View):
             response.lang = tko.lang
             if tko.code == 0:
                 userID = tko.userID
-                operation = request_dict.get('operation', None)
                 if userID is not None:
-                    if operation == 'query':
-                        return self.query_info(request_dict, userID, response)
+                    if operation == 'queryByAdmin':
+                        return self.query_info(request_dict, userID,response)
                     elif operation == 'add':
-                        return self.add_info(request_dict, userID, response)
-                    elif operation == 'queryAll':
-                        return self.query_all_info(request_dict, userID, response)
+                        return self.add_info(request_dict, userID,response)
+                    elif operation == 'queryAllByAdmin':
+                        return self.query_all_info(request_dict, userID,response)
+                    elif operation == 'deleteByAdmin':
+                        return self.delete_by_admin(request_dict, userID,response)
+                    elif operation == 'queryDeviceSupplier':
+                        return self.query_deviceSupplier_info(request_dict, userID,response)
+                    elif operation == 'queryArea':
+                        return self.query_area_info(request_dict, userID,response)
+
                     else:
-                        return response.json(444, '444')
+                        return response.json(444)
                 else:
                     return response.json(309)
             else:
@@ -59,91 +80,193 @@ class UserBrandInfo(View):
             return response.json(309)
             # 获取外网IP
 
-    # http://192.168.136.39:8000/userbrandinfo?operation=add&token=test&deviceSupplier=12341234&deviceModel=deviceModel&osType=osType&osVersion=osVersion
-    def add_info(self, request_dict, userID, response):
+
+
+
+    # http://192.168.136.39:8000/userbrandinfo?operation=add&token=test&deviceSupplier=小米&deviceModel=HM NOTE 1TD&osType=WEB&osVersion=4.0.0
+    def add_info(self, request_dict, userID,response):
         deviceSupplier = request_dict.get('deviceSupplier', None)
         deviceModel = request_dict.get('deviceModel', None)
         osType = request_dict.get('osType', None)
         osVersion = request_dict.get('osVersion', None)
-
-        print(self.clientIP)
-        try:
-            user_brand = User_Brand(
-                userID=Device_User.objects.get(userID=userID),
-                deviceSupplier=deviceSupplier,
-                deviceModel=deviceModel,
-                osType=osType,
-                osVersion=osVersion,
-                ip=self.clientIP,
-                addTime=int(time.time())
-            )
-            user_brand.save()
-        except Exception:
-            errorInfo = traceback.format_exc()
-            print(errorInfo)
-            return response.json(424, {'details': errorInfo})
+        country = request_dict.get('country', None)
+        province = request_dict.get('province', None)
+        city = request_dict.get('city', None)
+        area = request_dict.get('area', None)
+        street = request_dict.get('street', None)
+        longitude = request_dict.get('longitude', None)
+        latitude = request_dict.get('latitude', None)
+        param_area = CommonService.get_param_flag(data=[country,province,city])
+        if  param_area is True:
+            status = 1
+            country = country
+            province = province
+            city = city
+            area = area
+            street = street
+            longitude = longitude
+            latitude = latitude
+        else:
+            status = 0
+            resp=urllib.request.urlopen('http://test.dvema.com/getTZ?etk=ODhVRlpMVjBZNU5VdEhVMVl6UVRsSE9URXhNVUUlM0Q4OA==&ip='+self.clientIP+'&lang=EN')
+            html=resp.read()
+            html.decode('utf-8')
+            jsonData = json.loads(html)
+            print(jsonData['data']['city_name'])
+            country = jsonData['data']['country_name']
+            province = jsonData[ 'data']['region_name']
+            city = jsonData['data']['city_name']
+            area = ''
+            street = ''
+            longitude = jsonData['data']['longitude']
+            latitude = jsonData['data']['latitude']
+        param_flag = CommonService.get_param_flag(data=[deviceSupplier, deviceModel,osType,osVersion])
+        if param_flag is True:
+            try:
+                user_brand = User_Brand(
+                    userID=Device_User.objects.get(userID=userID),
+                    deviceSupplier=deviceSupplier,
+                    deviceModel=deviceModel,
+                    osType=osType,
+                    osVersion=osVersion,
+                    ip=self.clientIP,
+                    addTime = int(time.time()),
+                    status = status,
+                    country = country,
+                    province = province,
+                    city = city,
+                    area = area,
+                    street = street,
+                    longitude = longitude,
+                    latitude = latitude
+                )
+                user_brand.save()
+            except Exception:
+                errorInfo = traceback.format_exc()
+                print(errorInfo)
+                return response.json(424, {'details': errorInfo})
+            else:
+                print(type(user_brand.addTime))
+                return response.json(0,{'id':user_brand.id})
         else:
-            print(type(user_brand.addTime))
-            return response.json(0, {'id': user_brand.id})
+            # 参数错误
+             return response.json(444)
 
-    def query_info(self, request_dict, userID, response):
+
+
+
+    def query_info(self, request_dict, userID,response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
         param_flag = CommonService.get_param_flag(data=[page, line])
         if param_flag is True:
-            user_brand_queryset = User_Brand.objects.filter(userID=userID).order_by('-id')
+            user_brand_queryset = User_Brand.objects.all().order_by('-id')
             if user_brand_queryset.exists():
                 count = user_brand_queryset.count()
                 res = user_brand_queryset[(page - 1) * line:page * line]
                 send_json = CommonService.qs_to_dict(res)
+                for k, v in enumerate(send_json["datas"]):
+                        username = ModelService.get_user_name(userID=send_json["datas"][k]['fields']['userID'])
+                        send_json["datas"][k]['fields']['username']=username
                 send_json['count'] = count
                 return response.json(0, send_json)
             return response.json(0, {'datas': [], 'count': 0})
         else:
             return response.json(444)
-
-    def query_all_info(self, request_dict, userID, response):
+    def delete_by_admin(self, request_dict, userID,response):
+        id_list = request_dict.getlist('id', None)
+        param_flag = CommonService.get_param_flag(data=[id_list])
+        if param_flag is True:
+            check_perm = ModelService.check_perm(userID=userID, permID=10)
+            if check_perm is True:
+                is_delete = User_Brand.objects.filter(id__in=id_list).delete()
+                return response.json(0, {'delete_count': is_delete[0]})
+            else:
+                return response.json(404)
+        else:
+            return response.json(444)
+    # 查询每个用户最新的一条记录统计信息
+    def query_all_info(self, request_dict, userID,response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
-        order = request_dict.get('order', '-id')
-        if order == '':
-            order = '-id'
         param_flag = CommonService.get_param_flag(data=[page, line])
         if param_flag is True:
-            check_perm = ModelService.check_perm(userID=userID, permID=30)
+            check_perm = ModelService.check_perm(userID=userID,permID=30)
             if check_perm is True:
-                user_brand_queryset = User_Brand.objects.all().order_by('userID').values_list('userID',
-                                                                                              flat=True).distinct()
-
-                print(user_brand_queryset)
-                addtime = []
-                send_jsons = []
-                counts = 0
+                # 按照用户去重复查询
+                user_brand_queryset = User_Brand.objects.all().order_by('userID').values_list('userID', flat=True).distinct()
+                print (user_brand_queryset)
+                send_jsons=[]
+                counts=0
                 for i in user_brand_queryset:
-                    counts = counts + 1
-                    user_brand_querysetlast = User_Brand.objects.filter(userID=i).order_by(order)[:1]
+                    counts=counts+1
+                    user_brand_querysetlast = User_Brand.objects.filter(userID=i).order_by('-addTime')[:1]
                     user_brand_querysetlast = CommonService.qs_to_dict(user_brand_querysetlast)
-                    addtime.append(user_brand_querysetlast["datas"][0]['fields']['addTime'])
-                    username = ModelService.get_user_name(
-                        userID=user_brand_querysetlast["datas"][0]['fields']['userID'])
-                    user_brand_querysetlast["datas"][0]['fields']['username'] = username
+                    username = ModelService.get_user_name(userID=user_brand_querysetlast["datas"][0]['fields']['userID'])
+                    user_brand_querysetlast["datas"][0]['fields']['username']=username
                     send_jsons.append(user_brand_querysetlast["datas"][0])
+                # 按照加入的日期排序
+                send_jsons = sorted(send_jsons, key=lambda x:x['fields']['addTime'], reverse=True)
+                # 分页
+                send_jsons = send_jsons[(page - 1) * line:page * line]
+                return response.json(0, {'datas': send_jsons, 'count': counts})
 
-                print(addtime)
-                print(1111111111)
-                user_brand_queryset = User_Brand.objects.filter(userID__in=user_brand_queryset,
-                                                                addTime__in=addtime).order_by(order)
-                if user_brand_queryset.exists():
-                    count = user_brand_queryset.count()
-                    res = user_brand_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
-                    for k, v in enumerate(send_json["datas"]):
-                        username = ModelService.get_user_name(userID=send_json["datas"][k]['fields']['userID'])
-                        send_json["datas"][k]['fields']['username'] = username
-                    send_json['count'] = count
-                    return response.json(0, {'datas': send_jsons, 'count': counts})
-                return response.json(0, {'datas': [], 'count': 0})
             else:
                 return response.json(404)
         else:
             return response.json(444)
+
+    # 品牌统计的接口
+    def query_deviceSupplier_info(self, request_dict, userID,response):
+        check_perm = ModelService.check_perm(userID=userID,permID=30)
+        if check_perm is True:
+            # 按照用户去重复查询
+            user_brand_queryset = User_Brand.objects.all().order_by('userID').values_list('userID', flat=True).distinct()
+            print (user_brand_queryset)
+            send_jsons=[]
+            counts=0
+            for i in user_brand_queryset:
+                counts=counts+1
+                user_brand_querysetlast = User_Brand.objects.filter(userID=i).order_by('-addTime')[:1]
+                user_brand_querysetlast = CommonService.qs_to_dict(user_brand_querysetlast)
+                username = ModelService.get_user_name(userID=user_brand_querysetlast["datas"][0]['fields']['userID'])
+                user_brand_querysetlast["datas"][0]['fields']['username']=username
+                send_jsons.append(user_brand_querysetlast["datas"][0])
+            deviceSupplier=[]
+            for k, v in enumerate(send_jsons):
+                deviceSupplier.append(v['fields']['deviceSupplier'])
+            deviceSupplier = Counter(deviceSupplier)
+            print (deviceSupplier)
+            return response.json(0, {'datas': deviceSupplier,'counts':counts})
+
+        else:
+            return response.json(404)
+    # 区域统计的接口
+    def query_area_info(self, request_dict, userID,response):
+        check_perm = ModelService.check_perm(userID=userID,permID=30)
+        if check_perm is True:
+            # 按照用户去重复查询
+            user_brand_queryset = User_Brand.objects.all().order_by('userID').values_list('userID', flat=True).distinct()
+            print (user_brand_queryset)
+            send_jsons=[]
+            counts=0
+            for i in user_brand_queryset:
+                counts=counts+1
+                user_brand_querysetlast = User_Brand.objects.filter(userID=i).order_by('-addTime')[:1]
+                user_brand_querysetlast = CommonService.qs_to_dict(user_brand_querysetlast)
+                username = ModelService.get_user_name(userID=user_brand_querysetlast["datas"][0]['fields']['userID'])
+                user_brand_querysetlast["datas"][0]['fields']['username']=username
+                send_jsons.append(user_brand_querysetlast["datas"][0])
+            deviceSupplier=[]
+            for k, v in enumerate(send_jsons):
+                deviceSupplier.append(v['fields']['city'])
+            deviceSupplier = Counter(deviceSupplier)
+            deviceSupplier = deviceSupplier
+
+            return response.json(0, {'datas': deviceSupplier,'counts':counts})
+
+        else:
+            return response.json(404)
+
+
+

+ 16 - 5
Model/models.py

@@ -381,18 +381,29 @@ class FeedBackModel(models.Model):
         ordering = ('id',)
 
 
-
+ 
 class User_Brand(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    # 关联用户
+    # 关联用户 
     userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
     deviceSupplier = models.CharField(max_length=32, default='', verbose_name='(必填)设备供应商 string  (例:华为、小米...)')
     deviceModel = models.CharField(max_length=32, default='', verbose_name='(必填)设备型号 string @mock=HM NOTE 1TD')
     osType = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统名称 string @mock=Android')
-    osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0')
-    ip = models.CharField(blank=True, max_length=20, default='', verbose_name=u'区域ip')
-    addTime = models.IntegerField(verbose_name='添加时间', default=0)
+    osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0') 
+
+    country =  models.CharField(max_length=200, default='', verbose_name='国家')
+    province =  models.CharField(max_length=150, default='', verbose_name='省')
+    city =  models.CharField(max_length=132, default='', verbose_name='市')
+    area =  models.CharField(max_length=132, default='', verbose_name='区')
+    street =  models.CharField(max_length=132, default='', verbose_name='街道')
+
+    longitude =  models.CharField(max_length=30, default='', verbose_name='经度')
+    latitude =  models.CharField(max_length=30, default='', verbose_name='纬度')
+
+    status =  models.IntegerField(default=0, verbose_name='传国家省市信息过来就为状态:1 ,不传就为状态:0')
+    ip = models.CharField(blank=True,max_length=20,default='',verbose_name=u'区域ip')
 
+    addTime = models.IntegerField( verbose_name='添加时间', default=0)
     def __str__(self):
         return self.id
 

+ 8 - 0
local_manage.py

@@ -3,6 +3,14 @@ import os
 import sys
 
 if __name__ == "__main__":
+    # import socket
+    #
+    # addrs = socket.getaddrinfo(socket.gethostname(), None)
+    # for index, item in enumerate(addrs):
+    #     if index == 5:
+    #         ip = item[4][0]
+    #
+    #         print('当前局域网ip地址为:' + ip)
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Ansjer.local_settings")
     try:
         from django.core.management import execute_from_command_line