Parcourir la source

统计p2p和delay次数

locky il y a 4 ans
Parent
commit
fc1f981bbb
1 fichiers modifiés avec 28 ajouts et 13 suppressions
  1. 28 13
      Controller/DeviceConfirmRegion.py

+ 28 - 13
Controller/DeviceConfirmRegion.py

@@ -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)