فهرست منبع

pc端获取序列号返回mac

locky 3 سال پیش
والد
کامیت
82e9febbfc
1فایلهای تغییر یافته به همراه15 افزوده شده و 4 حذف شده
  1. 15 4
      Controller/SerialNumberController.py

+ 15 - 4
Controller/SerialNumberController.py

@@ -9,7 +9,7 @@ from django.db import transaction
 from django.db.models import Count
 from django.views import View
 
-from Model.models import SerialNumberModel, UserModel, UserSerialNumberModel, UserUIDModel, CompanySerialModel
+from Model.models import SerialNumberModel, UserModel, UserSerialNumberModel, UserUIDModel, CompanySerialModel, MacModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -238,6 +238,17 @@ class SerialNumberView(View):
         save_point = transaction.savepoint()  # 设置事务保存点
         try:
             if sn_qs.exists():
+                if not mac:     # 不传入则分配mac
+                    mac_qs = MacModel.objects.filter().values('id', 'value', 'is_active')[0]
+                    if not mac_qs['is_active']:
+                        return response.json(175)
+                    mac = mac_qs['value']
+                    # 绑定mac地址成功后更新mac表
+                    next_mac = CommonService.updateMac(mac)  # mac地址值+1;后3个字节为FF时返回None
+                    if next_mac:
+                        MacModel.objects.filter().update(value=next_mac, update_time=now_time)  # 更新mac表的mac地址值
+                    else:
+                        MacModel.objects.filter().update(is_active=False, update_time=now_time)
                 sn_qs = sn_qs[0: quantity]
                 serial_number = sn_qs[0].serial_number
                 serialNumberModel = SerialNumberModel(
@@ -250,9 +261,9 @@ class SerialNumberView(View):
                 updates = []
                 updates.append(serialNumberModel)
                 bulk_update(updates)
-
+            redisObject.rpush(key, value)
+            return response.json(0, {'serial_number': serial_number + mark, 'mac': mac})
         except Exception as e:
             if save_point:
                 transaction.savepoint_rollback(save_point)  # 事务回滚
-        redisObject.rpush(key, value)
-        return response.json(0, {'serial_number': serial_number + mark, 'mac': mac})
+