Browse Source

绑定uid时绑定mac地址,添加邮件提醒功能

lhq 4 years ago
parent
commit
6bdf1f8698
2 changed files with 45 additions and 14 deletions
  1. 33 2
      Controller/SerialNumberController.py
  2. 12 12
      Controller/VPGController.py

+ 33 - 2
Controller/SerialNumberController.py

@@ -11,7 +11,7 @@ from django.views import View
 from Controller.DetectController import DetectControllerView
 from Controller.DeviceConfirmRegion import Device_Region
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, CompanyModel, RegionModel, \
-    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel
+    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel, MacModel
 from Object.RedisObject import RedisObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
@@ -19,6 +19,7 @@ from Service.AlgorithmService import AlgorithmBaseOn35
 from Service.CommonService import CommonService
 from Ansjer.config import CRCKey
 from Service.ModelService import ModelService
+from Object.AWS.S3Email import S3Email
 
 
 class SerialNumberView(View):
@@ -188,6 +189,7 @@ class SerialNumberView(View):
         company_id = request_dict.get('company_id', None)
         token = request_dict.get('token', None)
         time_stamp = request_dict.get('time_stamp', None)
+        DeviceSubType = request_dict.get('DeviceSubType', None)
 
         if not all([serial_number, company_id, token, time_stamp]) or len(serial_number) != 9:
             return response.json(444)
@@ -233,6 +235,35 @@ class SerialNumberView(View):
                         return response.json(173)
 
                     uid = uid_qs[0]
+
+                    if DeviceSubType:
+                        # 获取最新的mac,判断分配到哪里,且进行绑定
+                        mac = MacModel.objects.filter().values('id', 'value', 'is_active')[0]
+                        current_mac = mac['value']
+                        username = 'cspublic@ansjer.com'
+                        if current_mac[-8:] == '1F:42:40':  # 一组一共1048576个,此mac是第100w个时
+                            sys_msg_text = "当前国外uid管理系统mac地址已分配到" + current_mac + ",此mac地址是当前组的第100w个,还剩下48576个可分配,mac地址即将用完。"
+                            S3Email().faEmail(sys_msg_text, username)
+                        elif current_mac[-8:] == '1F:90:60':  # 此mac是第102w个时
+                            sys_msg_text = "当前国外uid管理系统mac地址已分配到" + current_mac + ",此mac地址是当前组的第102w个,还剩下28576个可分配,mac地址即将用完。"
+                            S3Email().faEmail(sys_msg_text, username)
+                        elif not mac['is_active']:
+                            return response.json(175)
+                        elif current_mac[-8:] == '1F:FF:FF':
+                            MacModel.objects.filter().update(is_active=False)  # 更改mac可使用的状态,当再此调用接口时使用上面条件进行阻止
+                            sys_msg_text = "当前国外uid管理系统mac地址已分配到" + current_mac + ",mac地址已分配使用完,请更换分组。"
+                            S3Email().faEmail(sys_msg_text, username)
+                            return response.json(175)
+                        UIDModel.objects.filter(id=uid.id).update(mac=current_mac)  # 更新绑定uid的mac值
+                        # 绑定mac地址成功后更新mac表
+                        temp_mac = CommonService.updateMac(current_mac)  # mac地址值+1;后3个字节为FF时返回None
+                        if temp_mac:
+                            current_mac = temp_mac  # 更新赋值写入uid表
+                        else:
+                            temp_mac = current_mac  # 赋值为FF写入mac表
+                        MacModel.objects.filter().update(value=temp_mac, add_time=now_time,
+                                                         update_time=now_time)  # 更新mac表的mac地址值
+
                     result = UIDModel.objects.filter(id=uid.id, status=0).\
                         update(status=2, update_time=now_time)
 
@@ -388,7 +419,7 @@ class SerialNumberView(View):
                 else:
                     up_qs.delete()
 
-        UIDModel.objects.filter(uid=uid).update(status=0)    # 重置uid的使用状态为未分配
+        UIDModel.objects.filter(uid=uid).update(status=0, mac='')    # 重置uid的使用状态为未分配
         uid_serial.delete()
 
         # 记录操作日志

+ 12 - 12
Controller/VPGController.py

@@ -219,10 +219,10 @@ def do_upload_uid(request):
 
     bulk = []
     add_time = update_time = int(time.time())
-    MAC = MacModel.objects.filter().values('id', 'value', 'is_active')[0]   # 获取最新可用的mac
-    current_mac = MAC['value']
-    if (not MAC['is_active']) or (current_mac[-8:] == 'FF.FF.FF'):
-        return response.json(175)
+    # MAC = MacModel.objects.filter().values('id', 'value', 'is_active')[0]   # 获取最新可用的mac
+    # current_mac = MAC['value']
+    # if (not MAC['is_active']) or (current_mac[-8:] == 'FF.FF.FF'):
+    #     return response.json(175)
 
     area = 1 if vpg_id != '1' else 0
     # path = '/'.join((BASE_DIR, 'static/uid')).replace('\\', '/') + '/'
@@ -240,7 +240,7 @@ def do_upload_uid(request):
             uid_list = re.findall("b\'(.*)\'", str(chunk))[0].split('\\r\\n')
             for uid in uid_list:
                 UID = UIDModel(
-                    mac=current_mac,
+                    mac='',
                     uid_extra='',
                     status=0,
                     add_time=add_time,
@@ -264,12 +264,12 @@ def do_upload_uid(request):
                     UID.uid = new_uid
                     UID.full_uid_code = uid
                 bulk.append(UID)
-                temp_mac = CommonService.updateMac(current_mac)    # mac地址值+1;后3个字节为FF时返回None
-                if temp_mac:
-                    current_mac = temp_mac  # 更新赋值写入uid表
-                else:
-                    temp_mac = current_mac  # 赋值为FF写入mac表
-                    break
+                # temp_mac = CommonService.updateMac(current_mac)    # mac地址值+1;后3个字节为FF时返回None
+                # if temp_mac:
+                #     current_mac = temp_mac  # 更新赋值写入uid表
+                # else:
+                #     temp_mac = current_mac  # 赋值为FF写入mac表
+                #     break
 
         ip = CommonService.get_ip_address(request)
         content = json.loads(json.dumps(request_dict))
@@ -288,7 +288,7 @@ def do_upload_uid(request):
             UIDModel.objects.bulk_create(bulk)  # 批量写入uid数据
             uid_count = UIDModel.objects.filter(vpg_id=vpg_id).count()  # 获取族群下uid的数量
             VPGModel.objects.filter(id=vpg_id).update(uid_count=uid_count)   # 更新vgp表的uid_count
-            MacModel.objects.filter().update(value=temp_mac)  # 更新mac表的mac地址值
+            # MacModel.objects.filter().update(value=temp_mac)  # 更新mac表的mac地址值
         return response.json(0)
     except Exception as e:
         print(e)