瀏覽代碼

fix 0009108: 设备编码生成重复

Jeremy 2 年之前
父節點
當前提交
9523bcdb98
共有 1 個文件被更改,包括 29 次插入27 次删除
  1. 29 27
      Service/ConnectService.cs

+ 29 - 27
Service/ConnectService.cs

@@ -15,6 +15,7 @@ using WingInterfaceLibrary.Result.Device;
 using WingServerCommon.Log;
 using WingServerCommon.Mapper;
 using WingServerCommon.Service;
+using WingServerCommon.Config;
 
 namespace WingDeviceService.Service
 {
@@ -68,27 +69,9 @@ namespace WingDeviceService.Service
                 #endregion
 
                 var deviceDto = await _deviceInfoDBServiceProxy.FindDeviceInfoBySerialNumberAsync(request.DeviceUniqueCode);
-                var shortCode = deviceDto?.ShortCode;
-                var deviceCode = deviceDto?.DeviceCode;
-                var deviceName = deviceDto?.Name;
-                if (string.IsNullOrWhiteSpace(shortCode))
-                {
-                    shortCode = GenerateShortCode();
-                }
-                if (string.IsNullOrWhiteSpace(deviceName))
-                {
-                    if (deviceDto == null && !string.IsNullOrWhiteSpace(request.Name))
-                    {
-                        deviceName = request.Name;
-                    }
-                    else
-                    {
-                        deviceName = shortCode;
-                    }
-                }
                 if (deviceDto == null)
                 {
-                    var deviceInfoDB = new DeviceInfoDTO()
+                    deviceDto = new DeviceInfoDTO()
                     {
                         SerialNumber = request.DeviceUniqueCode,
                         Name = request.Name,
@@ -98,15 +81,29 @@ namespace WingDeviceService.Service
                         DeviceModel = request.DeviceModel,
                         DeviceType = request.DeviceType,
                         DeviceSoftwareVersion = request.SoftwareVersion,
-                        ShortCode = shortCode,
                         SystemVersion = request.SystemVersion,
                         CPUModel = request.CPUModel,
                         SystemLanguage = request.SystemLanguage,
-                        IsEncryptedShow=true
+                        IsEncryptedShow = true
                     };
-                    deviceCode = await _deviceInfoDBServiceProxy.InsertDeviceInfoAsync(new WingInterfaceLibrary.DB.Request.CreateDeviceInfoDBRequest
+                    var shortCode = deviceDto.ShortCode;
+                    for (var i = 0; i < 5; i++)
+                    {
+                        shortCode = GenerateShortCode();
+                        if (!string.IsNullOrWhiteSpace(shortCode))
+                        {
+                            var device = await _deviceInfoDBServiceProxy.FindDeviceInfoByShortCodeAsync(shortCode);
+                            if (device == null || string.IsNullOrWhiteSpace(device.DeviceCode))
+                            {
+                                break;
+                            }
+                        }
+                        shortCode = string.Empty;
+                    }
+                    deviceDto.ShortCode = shortCode;
+                    deviceDto.DeviceCode = await _deviceInfoDBServiceProxy.InsertDeviceInfoAsync(new WingInterfaceLibrary.DB.Request.CreateDeviceInfoDBRequest
                     {
-                        Data = deviceInfoDB
+                        Data = deviceDto
                     });
                     //创建虚拟机构
                     var inventedOrgCode = "invented_" + shortCode;
@@ -140,7 +137,12 @@ namespace WingDeviceService.Service
                     deviceDto.SystemLanguage = request.SystemLanguage;
                     await _deviceInfoDBServiceProxy.UpdateDeviceInfoByCodeAsync(deviceDto.DeviceCode, deviceDto, string.Empty, true);
                 }
-                var applyRequest = new ApplyTokenRequest(AccountType.US, deviceName, request.Platform, request.LoginSource, deviceCode, _sourceUrl, 0);
+                var deviceName = deviceDto.Name;
+                if (!string.IsNullOrWhiteSpace(deviceName))
+                {
+                    deviceName = deviceDto.ShortCode;
+                }
+                var applyRequest = new ApplyTokenRequest(AccountType.US, deviceName, request.Platform, request.LoginSource, deviceDto.DeviceCode, ConfigurationManager.Host, 0);
                 var tokenInfo = await _authenticationService.ApplyTokenAsync(applyRequest);
                 if (!string.IsNullOrWhiteSpace(tokenInfo.Code))
                 {
@@ -149,7 +151,7 @@ namespace WingDeviceService.Service
                 return new ConnectResult
                 {
                     Token = tokenInfo.Code,
-                    UniqueCode = shortCode
+                    UniqueCode = deviceDto.ShortCode
                 };
             }
             catch (Exception ex)
@@ -243,8 +245,8 @@ namespace WingDeviceService.Service
             {
                 ThrowCustomerException(CustomerRpcCode.DeviceNotExist, "Not find device");
             }
-            deviceDTO.IsEncryptedShow= request.IsEncryptedShow;
-           return await _deviceInfoDBServiceProxy.UpdateDeviceInfoByCodeAsync(deviceDTO.DeviceCode, deviceDTO, string.Empty);
+            deviceDTO.IsEncryptedShow = request.IsEncryptedShow;
+            return await _deviceInfoDBServiceProxy.UpdateDeviceInfoByCodeAsync(deviceDTO.DeviceCode, deviceDTO, string.Empty);
         }
     }
 }