From 26b471d6910abf2002853ed6c4354a03d80a83d1 Mon Sep 17 00:00:00 2001 From: zpc Date: Fri, 20 Feb 2026 20:33:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(auth):=20=E4=BF=AE=E5=A4=8D=E6=96=B0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8CUid=E8=B6=85=E9=95=BF?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=88=AA=E6=96=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GenerateUid生成的是timestamp+random(14位),超过数据库nvarchar(6)限制 - 改为生成6位随机数字,并查库确保唯一性 --- .../MiAssessment.Core/Services/UserService.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs index b225775..6c91440 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/UserService.cs @@ -59,8 +59,8 @@ public class UserService : BaseService, IUserService if (dto == null) throw new ArgumentNullException(nameof(dto)); - // Generate UID - var uid = GenerateUid(); + // 生成唯一UID + var uid = await GenerateUidAsync(); var user = new User { @@ -155,14 +155,20 @@ public class UserService : BaseService, IUserService } /// - /// Generate a unique UID for new user + /// 生成6位唯一用户UID /// - private string GenerateUid() + private async Task GenerateUidAsync() { - // Generate a numeric UID based on timestamp and random number - var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); - var random = Random.Shared.Next(1000, 9999); - return $"{timestamp}{random}"; + const int maxAttempts = 10; + for (var i = 0; i < maxAttempts; i++) + { + var uid = Random.Shared.Next(100000, 999999).ToString(); + var exists = await _dbSet.AnyAsync(u => u.Uid == uid); + if (!exists) + return uid; + } + // 兜底:使用时间戳后6位 + return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()[^6..]; } ///