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..]; } ///