فهرست منبع

Merge remote-tracking branch 'remotes/origin/locky' into test

Ansjer 1 سال پیش
والد
کامیت
12703e3011
3فایلهای تغییر یافته به همراه42 افزوده شده و 12 حذف شده
  1. 9 4
      Controller/Cron/CronTaskController.py
  2. 20 8
      Controller/SerialNumberController.py
  3. 13 0
      Model/models.py

+ 9 - 4
Controller/Cron/CronTaskController.py

@@ -29,7 +29,7 @@ from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unus
     CountryModel, DeviceTypeModel, OrdersSummary, DeviceInfoSummary, CompanySerialModel, \
     CloudLogModel, UidCloudStorageCount, UserExModel, DeviceDomainRegionModel, VodHlsTag, VodHlsTagType, IcloudService, \
     Store_Meal, Lang, VodBucketModel, UnicomComboOrderInfo, UnicomDeviceInfo, AbnormalOrder, DailyReconciliation, \
-    CustomizedPush, UIDCompanySerialModel, UIDModel, LogModel, OperatingCosts, UidBucketStatistics
+    CustomizedPush, UIDCompanySerialModel, UIDModel, LogModel, OperatingCosts, UidBucketStatistics, AppScannedSerial
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
@@ -622,12 +622,17 @@ class CronUpdateDataView(View):
                     requests_failed_flag = True
                     break
 
-                # 状态为未使用,重置美洲服的地区id
-                if status == 1:  # 美洲服直接更新
+                # 状态为未使用,重置扫码记录和美洲服的地区id
+                if status == 1:
+                    # 扫码记录
+                    AppScannedSerial.objects.filter(serial__in=serial_redis_list).delete()
+                    # 地区id
+                    # 美洲服直接更新
                     if CONFIG_INFO == CONFIG_US:
                         DeviceDomainRegionModel.objects.filter(~Q(region_id=0), serial_number__in=serial_redis_list). \
                             update(region_id=0)
-                    else:  # 其他服请求到美洲服更新
+                    # 其他服请求到美洲服更新
+                    else:
                         req_url = 'https://www.dvema.com/cron/update/reset-region-id'
                         req_data = {
                             'serial_redis_list': str(serial_redis_list)

+ 20 - 8
Controller/SerialNumberController.py

@@ -15,7 +15,7 @@ from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
     iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
     Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
-    AiService, DeviceDomainRegionModel, RegionModel, UidPushModel
+    AiService, DeviceDomainRegionModel, RegionModel, UidPushModel, AppScannedSerial
 from Object.AWS.S3Email import S3Email
 from Object.RedisObject import RedisObject
 from Object.TokenObject import TokenObject
@@ -138,8 +138,8 @@ class SerialNumberView(View):
                 return response.json(5)
 
             # 查询app是否已扫码,未扫码不能进行绑定
-            scanned_key = 'app_scanned_serial_' + serial
-            if not redisObj.get_data(scanned_key):
+            app_scanned_serial_qs = AppScannedSerial.objects.filter(serial=serial)
+            if not app_scanned_serial_qs.exists():
                 return response.json(5)
 
             # 判断序列号是否已和企业关联
@@ -578,6 +578,9 @@ class SerialNumberView(View):
                 UIDModel.objects.filter(uid=uid, status=2).update(status=0, mac='', update_time=now_time)
                 uid_serial.delete()
 
+                # 重置扫码记录
+                AppScannedSerial.objects.filter(serial=serial).delete()
+
                 # 记录操作日志
                 ip = CommonService.get_ip_address(request)
                 content = json.loads(json.dumps(request_dict))
@@ -644,6 +647,20 @@ class SerialNumberView(View):
         company_serial = company_serial_qs[0]
 
         try:
+            # 添加或更新扫码记录
+            ip = CommonService.get_ip_address(request)
+            data = {
+                'ip': ip,
+                'update_time': now_time
+            }
+            app_scanned_serial_qs = AppScannedSerial.objects.filter(serial=serial)
+            if app_scanned_serial_qs.exists():
+                app_scanned_serial_qs.update(**data)
+            else:
+                data['serial'] = serial
+                data['add_time'] = now_time
+                AppScannedSerial.objects.create(**data)
+
             if company_serial.status == 0 or company_serial.status == 1:  # 未使用
                 UnicomComboView().is_4g_device(serial_number, request_dict, request)
                 return response.json(173)
@@ -707,11 +724,6 @@ class SerialNumberView(View):
         try:
             serial_number = serial_number[:6]
 
-            # 缓存扫码记录一个小时
-            redis_obj = RedisObject()
-            scanned_key = 'app_scanned_serial_' + serial_number
-            redis_obj.set_ex_data(scanned_key, 1, 60*60)
-
             # 不是美洲服,请求美洲域名保存数据
             if CONFIG_INFO != CONFIG_US:
                 # token认证

+ 13 - 0
Model/models.py

@@ -3413,6 +3413,19 @@ class DeviceDomainRegionModel(models.Model):
         verbose_name_plural = verbose_name
 
 
+class AppScannedSerial(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    serial = models.CharField(default='', max_length=9, db_index=True, verbose_name='序列号')
+    ip = models.CharField(default='', max_length=32, verbose_name='ip')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'app_scanned_serial'
+        verbose_name = 'app扫描序列号表'
+        verbose_name_plural = verbose_name
+
+
 class RequestRecordModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     method = models.CharField(max_length=10, default='', verbose_name='请求类型')