Explorar o código

序列号绑定和解绑uid时修改其他数据库序列号的使用状态

locky %!s(int64=3) %!d(string=hai) anos
pai
achega
8a9e8d5531

+ 6 - 0
Ansjer/config.py

@@ -78,6 +78,12 @@ AWS_ARN = ['arn:aws-cn:s3','arn:aws:s3']
 #尚云服务器CRCKey
 CRCKey = {'AUS':'CRCKey', 'ACN':'CRCKey'}   #{平台名:CRCKey值}
 
+# 各个服务器域名
+SERVER_DOMAIN_US = 'http://www.dvema.com/'
+SERVER_DOMAIN_CN = 'http://www.zositechc.cn/'
+SERVER_DOMAIN_EUR = 'http://www.zositeche.com/'
+SERVER_DOMAIN_TEST = 'http://test.zositechc.cn/'
+
 # 不同环境配置
 # 本地
 if SERVER_TYPE == 'Ansjer.local_config.local_settings':

+ 41 - 2
Controller/SerialNumberController.py

@@ -3,6 +3,7 @@
 import json
 import logging
 import random
+import requests
 import time
 
 from django.db import transaction
@@ -17,7 +18,7 @@ from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
 from Service.AlgorithmService import AlgorithmBaseOn35
 from Service.CommonService import CommonService
-from Ansjer.config import CRCKey, SERVER_TYPE
+from Ansjer.config import CRCKey, SERVER_TYPE, SERVER_DOMAIN_US, SERVER_DOMAIN_CN
 from Service.ModelService import ModelService
 from Object.AWS.S3Email import S3Email
 
@@ -48,6 +49,8 @@ class SerialNumberView(View):
             return self.do_detach_uid(request, request_dict, response)
         elif operation == 'create':
             return self.do_create(request_dict, response)
+        elif operation == 'changeSerialNumberStatus':
+            return self.changeSerialNumberStatus(request_dict, response)
         else:
             if token.code != 0:
                 return response.json(token.code)
@@ -224,10 +227,18 @@ class SerialNumberView(View):
                             'operation': '序列号{}绑定uid: {}'.format(serial, uid.uid),
                         }
                         LogModel.objects.create(**log)
+                        # 修改其他数据库的序列号使用状态为已占用
+                        company_serial_id = company_serial.id
+                        data = {'company_serial_id': company_serial_id, 'status': 3}
+                        if SERVER_TYPE == 'Ansjer.us_config.formal_settings':
+                            url = '{}serialNumber/changeSerialNumberStatus'.format(SERVER_DOMAIN_CN)
+                        elif SERVER_TYPE == 'Ansjer.cn_config.formal_settings':
+                            url = '{}serialNumber/changeSerialNumberStatus'.format(SERVER_DOMAIN_US)
+                        requests.post(url=url, data=data, timeout=2)
                         return response.json(0, res)
 
                     return response.json(5)
-            else:   # 返回uid
+            elif company_serial.status == 2:   # 返回uid
                 uid_qs = UIDCompanySerialModel.objects.filter(company_serial_id=company_serial.id)
                 if not uid_qs.exists():
                     return response.json(173)
@@ -245,6 +256,8 @@ class SerialNumberView(View):
                     'initStringApp': uid['uid__init_string_app'],
                 }
                 return response.json(0, res)
+            elif company_serial.status == 3:
+                return response.json(10042)
         except Exception as e:
             djangoLogger = logging.getLogger('django')
             djangoLogger.exception(repr(e))
@@ -323,6 +336,15 @@ class SerialNumberView(View):
                         else:
                             up_qs.delete()
 
+                    # 修改其他数据库的序列号使用状态为已使用
+                    company_serial_id = company_serial_qs.id
+                    data = {'company_serial_id': company_serial_id, 'status': 1}
+                    if SERVER_TYPE == 'Ansjer.us_config.formal_settings':
+                        url = '{}serialNumber/changeSerialNumberStatus'.format(SERVER_DOMAIN_CN)
+                    elif SERVER_TYPE == 'Ansjer.cn_config.formal_settings':
+                        url = '{}serialNumber/changeSerialNumberStatus'.format(SERVER_DOMAIN_US)
+                    requests.post(url=url, data=data, timeout=2)
+
                 UIDModel.objects.filter(uid=uid).update(status=0, mac='')    # 重置uid的使用状态为未分配
                 uid_serial.delete()
 
@@ -362,3 +384,20 @@ class SerialNumberView(View):
                 return response.json(173)
         else:
             return response.json(444)
+
+    # 序列号绑定和解绑uid时修改其他数据库序列号的使用状态
+    def changeSerialNumberStatus(self, request_dict, response):
+        company_serial_id = request_dict.get('company_serial_id', None)
+        status = request_dict.get('status', None)
+        if not all([company_serial_id, status]):
+            return response(444)
+
+        try:
+            # 更新CompanySerialModel表的序列号使用状态
+            CompanySerialModel.objects.filter(id=company_serial_id).update(status=int(status))
+            return response.json(0)
+        except Exception as e:
+            djangoLogger = logging.getLogger('django')
+            djangoLogger.exception(repr(e))
+            return response.json(500, str(e))
+

+ 1 - 1
Model/models.py

@@ -1686,7 +1686,7 @@ class CompanySerialModel(models.Model):
     id = models.AutoField(primary_key=True)
     company = models.ForeignKey(CompanyModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联企业表的id')
     serial_number = models.CharField(max_length=11, db_index=True, blank=True, default='', verbose_name=u'6位数序列号')
-    status = models.SmallIntegerField(default=0, verbose_name='序列号的状态。0:未使用,1:已使用,2:已和UID关联')
+    status = models.SmallIntegerField(default=0, verbose_name='序列号的状态。0:未使用,1:已使用,2:已和UID关联,3:已占用')
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
     update_time = models.IntegerField(default=0, verbose_name='更新时间')
 

+ 4 - 2
Object/uidManageResponseObject.py

@@ -51,7 +51,8 @@ class uidManageResponseObject(object):
             444: '请确认参数的正确性!',
             1112: '您输入的两次密码不一致!',
             208: '只能预定当天的或者以后的!',
-            10041: '已超出序列号剩余可绑定数'
+            10041: '已超出序列号剩余可绑定数',
+            10042: '序列号已被占用',
         }
         data_en = {
             0: 'Success',
@@ -95,7 +96,8 @@ class uidManageResponseObject(object):
             404: 'You don not have permission to access this!',
             444: 'Please confirm the correctness of the parameters!',
             1112: 'The two passwords you entered do not match!',
-            10041: 'The remaining number of serial numbers that can be bound has exceeded'
+            10041: 'The remaining number of serial numbers that can be bound has exceeded',
+            10042: 'Serial number is already occupied',
         }
 
         if self.lang == 'cn':