Эх сурвалжийг харах

完善云分配uid上传uid功能

locky 4 жил өмнө
parent
commit
dc26262db0

+ 32 - 34
Controller/SerialNumberController.py

@@ -57,50 +57,48 @@ class SerialNumberView(View):
                 return response.json(404)
                 return response.json(404)
 
 
     def do_create(self, request_dict, response):
     def do_create(self, request_dict, response):
-        quantity = request_dict.get('quantity', None)
+        quantity = int(request_dict.get('quantity', None))
 
 
-        if quantity:
-            start_time = time.strftime('%Y-%m-%d %H:%M:%S')
-            print('start create ' + start_time)
-            quantity = int(quantity)
-            tmp = []
-            algorithm = AlgorithmBaseOn35()
+        if not quantity:
+            return response.json(444)
+        start_time = time.strftime('%Y-%m-%d %H:%M:%S')
+        print('start create ' + start_time)
+        tmp = []
+        algorithm = AlgorithmBaseOn35()
 
 
-            sum = SerialNumberModel.objects.count()
+        sum = SerialNumberModel.objects.count()
 
 
-            for i in range(quantity):
-                serial_number = algorithm.getLetter(sum)
-                tmp_len = 6 - len(serial_number)
-                # 前面补0
-                for j in range(tmp_len):
-                    serial_number = '0' + serial_number
+        for i in range(quantity):
+            serial_number = algorithm.getLetter(sum)
+            tmp_len = 6 - len(serial_number)
+            # 前面补0
+            for j in range(tmp_len):
+                serial_number = '0' + serial_number
 
 
-                tmp.append(serial_number)
-                sum += 1
+            tmp.append(serial_number)
+            sum += 1
 
 
-            # 把序列号的顺序打乱
-            random.shuffle(tmp)
+        # 把序列号的顺序打乱
+        random.shuffle(tmp)
 
 
-            data = []
-            now_time = int(time.time())
-            for item in tmp:
-                data.append(SerialNumberModel(serial_number=item, add_time=now_time))
+        data = []
+        now_time = int(time.time())
+        for item in tmp:
+            data.append(SerialNumberModel(serial_number=item, add_time=now_time))
 
 
-                if len(data) == 10000:
-                    SerialNumberModel.objects.bulk_create(data)
-                    data.clear()
-
-            if len(data) > 0:
+            if len(data) == 10000:
                 SerialNumberModel.objects.bulk_create(data)
                 SerialNumberModel.objects.bulk_create(data)
                 data.clear()
                 data.clear()
-            start_time = time.strftime('%Y-%m-%d %H:%M:%S')
-            print('start create ' + start_time)
 
 
-            redis = RedisObject()
-            redis.del_data(key='serial_number_count')
-            return response.json(0)
-        else:
-            return response.json(444)
+        if len(data) > 0:
+            SerialNumberModel.objects.bulk_create(data)
+            data.clear()
+        start_time = time.strftime('%Y-%m-%d %H:%M:%S')
+        print('start create ' + start_time)
+
+        redis = RedisObject()
+        redis.del_data(key='serial_number_count')
+        return response.json(0)
 
 
     # 提供给pc端获取序列号
     # 提供给pc端获取序列号
     def do_get_serial_number(self, request_dict, response):
     def do_get_serial_number(self, request_dict, response):

+ 24 - 4
Controller/VPGController.py

@@ -9,9 +9,10 @@ from django.views import View
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 
 
 from Ansjer.config import BASE_DIR
 from Ansjer.config import BASE_DIR
-from Model.models import RegionModel, CompanyModel, VPGModel, UIDModel
+from Model.models import RegionModel, CompanyModel, VPGModel, UIDModel, MacModel, UIDCompanySerialModel
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
+from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 
 
 
 
@@ -172,13 +173,20 @@ class VPGView(View):
 
 
     def do_uid_list(self, userID, request_dict, response):
     def do_uid_list(self, userID, request_dict, response):
         vpg_id = request_dict.get('vpg_id', None)
         vpg_id = request_dict.get('vpg_id', None)
-        page = request_dict.get('page', None)
-        line = request_dict.get('limit', None)
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('limit', None))
 
 
         if not vpg_id:
         if not vpg_id:
             return response.json(444)
             return response.json(444)
+
+        start = (page - 1) * line
+        end = start + line
         uid_qs = UIDModel.objects.filter(vpg_id=vpg_id).values('uid')
         uid_qs = UIDModel.objects.filter(vpg_id=vpg_id).values('uid')
+
+        count = VPGModel.objects.get(id=vpg_id).uid_count   # 从vpg表获取uid总数
+        uid_qs = uid_qs[start:end]  # 显示条数
         res = {
         res = {
+            'count': count,
             'data': list(uid_qs),
             'data': list(uid_qs),
         }
         }
         return response.json(0, res)
         return response.json(0, res)
@@ -204,6 +212,11 @@ def do_upload_uid(request):
 
 
     bulk = []
     bulk = []
     add_time = update_time = int(time.time())
     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)
+
     # path = '/'.join((BASE_DIR, 'static/uid')).replace('\\', '/') + '/'
     # path = '/'.join((BASE_DIR, 'static/uid')).replace('\\', '/') + '/'
     # if not os.path.exists(path):
     # if not os.path.exists(path):
     #     os.makedirs(path)
     #     os.makedirs(path)
@@ -220,7 +233,7 @@ def do_upload_uid(request):
             for uid in uid_list:
             for uid in uid_list:
                 bulk.append(UIDModel(
                 bulk.append(UIDModel(
                     uid=uid,
                     uid=uid,
-                    mac='74:19:F8:DC:CA:C9',  # mac['value']
+                    mac=current_mac,
                     uid_extra='',
                     uid_extra='',
                     status=0,
                     status=0,
                     add_time=add_time,
                     add_time=add_time,
@@ -228,10 +241,17 @@ def do_upload_uid(request):
                     area=0, # 关联vgp表已有区域信息,可以考虑去掉
                     area=0, # 关联vgp表已有区域信息,可以考虑去掉
                     vpg_id=vpg_id
                     vpg_id=vpg_id
                 ))
                 ))
+                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
         with transaction.atomic():
         with transaction.atomic():
             UIDModel.objects.bulk_create(bulk)  # 批量写入uid数据
             UIDModel.objects.bulk_create(bulk)  # 批量写入uid数据
             uid_count = UIDModel.objects.filter(vpg_id=vpg_id).count()  # 获取族群下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
             VPGModel.objects.filter(id=vpg_id).update(uid_count=uid_count)   # 更新vgp表的uid_count
+            MacModel.objects.filter().update(value=temp_mac)  # 更新mac表的mac地址值
         return response.json(0)
         return response.json(0)
     except Exception as e:
     except Exception as e:
         print(e)
         print(e)

+ 2 - 1
Model/models.py

@@ -1337,6 +1337,7 @@ class RegionModel(models.Model):
 class VPGModel(models.Model):
 class VPGModel(models.Model):
     id = models.AutoField(primary_key=True)
     id = models.AutoField(primary_key=True)
     name = models.CharField(max_length=32, default='', verbose_name='群组名称')
     name = models.CharField(max_length=32, default='', verbose_name='群组名称')
+    uid_count = models.IntegerField(default=0, verbose_name='uid数量')
     region = models.ForeignKey(RegionModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='群组用于的地区')
     region = models.ForeignKey(RegionModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='群组用于的地区')
     company = models.ForeignKey(CompanyModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联企业表')
     company = models.ForeignKey(CompanyModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联企业表')
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
@@ -1353,7 +1354,7 @@ class UIDModel(models.Model):
     uid = models.CharField(max_length=20, null=False, db_index=True, unique=True, verbose_name='设备id')
     uid = models.CharField(max_length=20, null=False, db_index=True, unique=True, verbose_name='设备id')
     mac = models.CharField(max_length=17, null=False, default='', verbose_name='设备id对应的mac地址')
     mac = models.CharField(max_length=17, null=False, default='', verbose_name='设备id对应的mac地址')
     uid_extra = models.TextField(default='', verbose_name='uid的额外描述')
     uid_extra = models.TextField(default='', verbose_name='uid的额外描述')
-    status = models.SmallIntegerField(default=0, verbose_name='使用状态')
+    status = models.SmallIntegerField(default=0, verbose_name='使用状态')   # 0:未分配,1:已分配,2:已使用
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
     update_time = models.IntegerField(default=0, verbose_name='更新时间')
     update_time = models.IntegerField(default=0, verbose_name='更新时间')
     area = models.SmallIntegerField(default=0, verbose_name='区域')  #0:国内;1:国外
     area = models.SmallIntegerField(default=0, verbose_name='区域')  #0:国内;1:国外