瀏覽代碼

修改获取唯一识别号逻辑

zhuyiyi 1 周之前
父節點
當前提交
de0d45faba
共有 1 個文件被更改,包括 20 次插入15 次删除
  1. 20 15
      SiteCore/taobao/commonHelper.cs

+ 20 - 15
SiteCore/taobao/commonHelper.cs

@@ -35,6 +35,7 @@ using System.Net.Http.Headers;
 using System.Net.Http;
 using System.Threading.Tasks;
 using System.Diagnostics;
+using NPOI.Util;
 
 namespace SiteCore
 {
@@ -3892,16 +3893,8 @@ namespace SiteCore
             {
                 string orderSn = DateTimeNow("yyMMddHHmmssfff") + RandomNumbers(random, 3);
 
-                if (CeErpTradeCell.GetByCode(orderSn) == null)
-                {
-                    return orderSn;
-                }
-
-                // 避免在短时间内重复生成相同的时间戳
-                if (i < maxAttempts - 1)
-                {
-                    Thread.Sleep(1);
-                }
+                return orderSn;
+              
             }
             return "";
         }
@@ -3920,13 +3913,25 @@ namespace SiteCore
         private static string RandomNumbers(Random random, int length)
         {
             if (length <= 0) return string.Empty;
-
-            char[] numbers = new char[length];
-            for (int i = 0; i < length; i++)
+            var rng = RandomNumberGenerator.Create();
+            while (true)
             {
-                numbers[i] = (char)('0' + random.Next(0, 10));
+                byte[] randomBytes = new byte[2]; // 2字节=16位,足够0-900范围
+                int value;
+
+                do
+                {
+                    rng.GetBytes(randomBytes);
+                    value = randomBytes[0] * 256 + randomBytes[1];
+                } while (value >= 900 * (65536 / 900)); // 拒绝采样,避免偏差
+                value = value % 900 + 100;
+                if (value > 100 && value < 1000)
+                {
+                    return value.ToString();
+                }
             }
-            return new string(numbers);
+
+
         }
     }
 }