123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- # -*- coding: utf-8 -*-
- import simplejson as json
- from django.core import serializers
- from pyipip import IPIPDatabase
- import redis,time,base64
- from pathlib import Path
- from django.utils import timezone
- from Ansjer.settings import SERVER_HOST
- from django_global_request.middleware import get_request
- from Ansjer.settings import BASE_DIR
- from random import Random
- # 复用性且公用较高封装代码在这
- class CommonService:
- # 返回数据格式化
- @staticmethod
- def response_formal(data={'code': '', 'reason': '', 'result': {}}):
- resJSON = json.dumps(
- {
- "result_code": data['code'],
- "reason": data['reason'],
- "result": data['result'],
- "error_code": data['code'],
- }, ensure_ascii=False)
- return resJSON
- # 添加模糊搜索
- @staticmethod
- def get_kwargs(data={}):
- kwargs = {}
- for (k, v) in data.items():
- if v is not None and v != u'':
- kwargs[k + '__icontains'] = v
- return kwargs
- # 定义静态方法
- # 格式化query_set转dict
- @staticmethod
- def qs_to_dict(query_set):
- sqlJSON = serializers.serialize('json', query_set)
- sqlList = json.loads(sqlJSON)
- sqlDict = dict(zip(["datas"], [sqlList]))
- return sqlDict
- @staticmethod
- def set_redis_data(key, val, expire=0):
- POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
- CONN = redis.Redis(connection_pool=POOL)
- CONN.set(key, val)
- if expire > 0:
- CONN.expire(key, expire)
- return True
- @staticmethod
- def get_redis_data(key):
- POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
- CONN = redis.Redis(connection_pool=POOL)
- try:
- val = CONN.get(key)
- except Exception as e:
- return False
- else:
- if val == b'False':
- return False
- if val:
- return val
- else:
- return False
- @staticmethod
- def del_redis_data(key):
- POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
- CONN = redis.Redis(connection_pool=POOL)
- val = CONN.delete(key)
- if val:
- return True
- else:
- return False
- # 获取文件大小
- @staticmethod
- def get_file_size(file_path='', suffix_type='', decimal_point=0):
- # for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
- # path = Path() / 'D:/TestServer/123444.mp4'
- path = Path() / file_path
- size = path.stat().st_size
- mb_size = 0.0
- if suffix_type == 'MB':
- mb_size = size / 1024.0 / 1024.0
- if decimal_point != 0:
- mb_size = round(mb_size, decimal_point)
- return mb_size
- @staticmethod
- def get_param_flag(data=[]):
- print(data)
- flag = True
- for v in data:
- if v is None:
- flag = False
- break
- return flag
- @staticmethod
- def get_ip_address(request):
- """
- 获取ip地址
- :param request:
- :return:
- """
- ip = request.META.get("HTTP_X_FORWARDED_FOR", "")
- if not ip:
- ip = request.META.get('REMOTE_ADDR', "")
- client_ip = ip.split(",")[-1].strip() if ip else ""
- return client_ip
- # @获取一天每个小时的datetime.datetime
- @staticmethod
- def getTimeDict(times):
- time_dict = {}
- t = 0
- for x in range(24):
- if x < 10:
- x = '0' + str(x)
- else:
- x = str(x)
- a = times.strftime("%Y-%m-%d") + " " + x + ":00:00"
- time_dict[t] = timezone.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
- t += 1
- return time_dict
- #根据ip获取地址
- @staticmethod
- def getAddr(ip):
- base_dir = BASE_DIR
- # ip数据库
- db = IPIPDatabase(base_dir+'/DB/17monipdb.dat')
- addr = db.lookup(ip)
- ts = addr.split('\t')[0]
- return ts
- #getMoreID
- @staticmethod
- def getMoreID(uPhone='13800138000', μs='uID'):
- if μs == 'uID':
- userID = str(round(time.time() * 1000000)) + uPhone
- return userID
- elif μs == 'otaID':
- otaID = '13800138000' + str(round(time.time() * 1000000))
- return otaID
- elif μs == 'eID':
- eID = '13800' + str(round(time.time() * 1000000)) + '138000'
- return eID
- elif μs == 'ID':
- eID = '13800' + str(round(time.time() * 1000000)) + '138000'
- return eID
- elif μs == 'gID':
- gID = '10000' + str(round(time.time() * 1000000)) + '100001'
- return gID
- elif μs == 'rID':
- rID = '10010' + str(round(time.time() * 1000000)) + '100011'
- return rID
- else:
- defaultID = '10000100001' + str(round(time.time() * 1000000))
- return defaultID
- # getMoreID
- @staticmethod
- def getUserID(userPhone='13800138000', getUser=True, setOTAID=False, μs=True):
- if μs == True:
- if getUser == True:
- timeID = str(round(time.time() * 1000000))
- userID = timeID + userPhone
- return userID
- else:
- if setOTAID == False:
- timeID = str(round(time.time() * 1000000))
- ID = userPhone + timeID
- return ID
- else:
- timeID = str(round(time.time() * 1000000))
- eID = '13800' + timeID + '138000'
- return eID
- else:
- if getUser == True:
- timeID = str(round(time.time() * 1000))
- userID = timeID + userPhone
- return userID
- else:
- if setOTAID == False:
- timeID = str(round(time.time() * 1000))
- ID = userPhone + timeID
- return ID
- else:
- timeID = str(round(time.time() * 1000))
- eID = '13800' + timeID + '138000'
- return eID
- # 生成随机数
- @staticmethod
- def RandomStr(randomlength=8, number=True):
- str = ''
- if number == False:
- characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \
- 'tUuVvWwXxYyZz0123456789'
- else:
- characterSet = '0123456789'
- length = len(characterSet) - 1
- random = Random()
- for index in range(randomlength):
- str += characterSet[random.randint(0, length)]
- return str
|