|
@@ -107,24 +107,39 @@ class StatisticsIpRegion(TemplateView):
|
|
response = ResponseObject()
|
|
response = ResponseObject()
|
|
ip = request_dict.get('ip', None)
|
|
ip = request_dict.get('ip', None)
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
|
|
+ # 0 or 1
|
|
|
|
+ is_p2p = int(request_dict.get('is_p2p', 0))
|
|
|
|
+ is_relay = int(request_dict.get('is_relay', 0))
|
|
|
|
|
|
- if not all([ip, uid]):
|
|
|
|
|
|
+ if not all([ip, uid]) or (not is_p2p and not is_relay):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
|
|
|
|
try:
|
|
try:
|
|
- # 判断uid是否已记录过ip信息
|
|
|
|
- p2p_ip_qs = P2PIpModel.objects.filter(uid=uid)
|
|
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+ p2p_ip_qs = P2PIpModel.objects.filter(uid=uid).values('p2p_request_times', 'relay_request_times')
|
|
if p2p_ip_qs.exists():
|
|
if p2p_ip_qs.exists():
|
|
- return response.json(174)
|
|
|
|
-
|
|
|
|
- # 根据ip确定位置信息
|
|
|
|
- ip_info = CommonService.getIpIpInfo(ip, 'CN')
|
|
|
|
- # 获取国家,地区,城市
|
|
|
|
- country_name = ip_info['country_name']
|
|
|
|
- region_name = ip_info['region_name']
|
|
|
|
- city_name = ip_info['city_name']
|
|
|
|
- P2PIpModel.objects.create(uid=uid, ip=ip, country_name=country_name, region_name=region_name,
|
|
|
|
- city_name=city_name, add_time=int(time.time()))
|
|
|
|
|
|
+ # 已存在数据,更新p2p请求次数或relay请求次数
|
|
|
|
+ if is_p2p:
|
|
|
|
+ p2p_request_times = p2p_ip_qs[0]['p2p_request_times'] + 1
|
|
|
|
+ p2p_ip_qs.update(p2p_request_times=p2p_request_times, update_time=now_time)
|
|
|
|
+ else:
|
|
|
|
+ relay_request_times = p2p_ip_qs[0]['relay_request_times'] + 1
|
|
|
|
+ p2p_ip_qs.update(relay_request_times=relay_request_times, update_time=now_time)
|
|
|
|
+ else:
|
|
|
|
+ # 根据ip确定位置信息
|
|
|
|
+ ip_info = CommonService.getIpIpInfo(ip, 'CN')
|
|
|
|
+ # 获取大洲,国家,地区,城市
|
|
|
|
+ continent_code = ip_info['continent_code']
|
|
|
|
+ country_name = ip_info['country_name']
|
|
|
|
+ if continent_code == 'AP' and country_name != 'CN':
|
|
|
|
+ # 如果大洲代码为'AP',国家不为'CN',为亚洲
|
|
|
|
+ continent_code = 'AS'
|
|
|
|
+ continent_name = RegionModel.objects.filter(continent_code=continent_code).values('name')[0]['name']
|
|
|
|
+ region_name = ip_info['region_name']
|
|
|
|
+ city_name = ip_info['city_name']
|
|
|
|
+ P2PIpModel.objects.create(uid=uid, ip=ip, continent_name=continent_name, country_name=country_name,
|
|
|
|
+ region_name=region_name, city_name=city_name, p2p_request_times=is_p2p,
|
|
|
|
+ relay_request_times=is_relay, add_time=now_time, update_time=now_time)
|
|
return response.json(0)
|
|
return response.json(0)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(e)
|
|
print(e)
|