| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | #!/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/10/9 11:50@Version: python3.6@MODIFY DECORD:ansjer dev@file: AliPayObject.py@Contact: pzb3076@163.com"""from django.views.generic.base import Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_exemptfrom Service.ModelService import ModelServicefrom Model.models import User_Brand,Device_Userfrom django.utils import timezoneimport traceback,time,json,urllib.requestfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom Service.CommonService import CommonServicefrom collections import Counterfrom Ansjer.config import DOMAIN_HOST,AWS_DynamoDB_REGION,AWS_DynamoDB_ACCESS_KEY,AWS_DynamoDB_SECRET_KEYfrom Object.RedisObject import RedisObjectfrom Service.MiscellService import MiscellServiceimport datetime, simplejson as jsonimport time'''http://192.168.136.39:8000/dynamoDBLog/searchByAdmin?search_value=154390905041313800138000&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzMyNjc3OTR9.YWNEHKKrzFfEc4liz6N8ANQl8C1VfhhLv_MEOqf3yV4&page=1&line=12http://192.168.136.39:8000/dynamoDBLog/connector?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzMyNjc3OTR9.YWNEHKKrzFfEc4liz6N8ANQl8C1VfhhLv_MEOqf3yV4 '''class DynamoDBLog(View):    @method_decorator(csrf_exempt)    def dispatch(self, *args, **kwargs):        return super(DynamoDBLog, 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):        self.clientIP = CommonService.get_ip_address(request)        response = ResponseObject()        token = request_dict.get('token', None)        tko = TokenObject(token)        response.lang = tko.lang        if tko.code == 0:            userID = tko.userID            if operation == 'searchByAdmin':                return self.search_info(request_dict, userID, response)            elif operation == 'connector':                return self.connector_info(request_dict, userID, response)            elif operation == 'daySearch':                return self.get_day_search(request_dict, userID, response)            else:                return response.json(444)        else:            return response.json(tko.code)    # 查询搜索表(可以通过用户名,和接口名称,ip地址搜索等)    def search_info(self, request_dict, userID,response):        search_value = request_dict.get('search_value',None)        check_perm = ModelService.check_perm(userID=userID,permID=30)        if check_perm is True:            if search_value is None or search_value is '':                return response.json(0, {'datas': {}, 'count': 0})            else:                if DOMAIN_HOST == 'www.dvema.com':                    user_brand = 'access_log'                else:                    user_brand = 'test_access_log'                # 查询                user_ID = Device_User.objects.filter(username=search_value).values('userID', 'NickName')                try:                    search_value = user_ID[0]['userID']                except Exception:                    search_value = search_value                items = MiscellService.get_item_log( user_brand ,search_value)                for k, v in enumerate(items):                    user_ID = Device_User.objects.filter(userID=items[k]['userID']).values('username')                    try:                        items[k]['userID'] = user_ID[0]['username']                    except Exception:                        items[k]['userID'] = ''                return response.json(0, {'datas': items, 'count': len(items)})        else:            return response.json(404)    # 查询接口的访问量的对应数量    def connector_info(self, request_dict, userID,response):        check_perm = ModelService.check_perm(userID=userID,permID=30)        if check_perm is True:            if DOMAIN_HOST == 'www.dvema.com':                user_brand = 'access_log'            else:                user_brand = 'test_access_log'            table_value = MiscellService.item_get_brand(user_brand)            send_jsons = []            counts = 0            for i in table_value:                send_jsons.append(table_value[counts]['operation'])                counts = counts + 1            send_jsons = Counter(send_jsons)            return response.json(0, {'datas': send_jsons,'counts':counts})        else:            return response.json(404)    # 通过传过来日期天来搜索,访问量,并返回对应小时的访问数量    def get_day_search(self, request_dict,userID, response):        check_perm = ModelService.check_perm(userID=userID, permID=30)        if DOMAIN_HOST == 'www.dvema.com':            user_brand = 'access_log'        else:            user_brand = 'test_access_log'        time_stamp = int(request_dict.get('timestamp', None))        if check_perm is True:            # 分割小时再去搜索            times = datetime.datetime.fromtimestamp(time_stamp)            time_dict = CommonService.getTimeDict(times)            res = {}            for k, v in time_dict.items():                start_date = time_dict[k]                end_date = time_dict[k] + datetime.timedelta(hours=1)                start_date = int(start_date.timestamp())                end_date = int(end_date.timestamp())                count = MiscellService.get_item_time(user_brand,start_date, end_date)                if count:                    res[k] = count                else:                    res[k] = 0            # res = MiscellService.get_item_date(user_brand,time_stamp)            return response.json(0, {'count': res})        else:            return response.json(404)
 |