diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs index c5d36ad3..9cc4f7c6 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs @@ -226,27 +226,32 @@ public class FuwuhaoService : ApplicationService var result = await _fileService.Post(files); - if (await _userRepository.IsAnyAsync(x=>x.FuwuhaoOpenId==userInfo.OpenId)) + //由于存在查询/编辑在同一个事务操作,上锁防止并发 + await using (await DistributedLock.AcquireLockAsync("fuwuhao:RegisterLock", TimeSpan.FromMinutes(1))) { - throw new UserFriendlyException("你已注册过意社区账号"); - } - - var userId = await _accountService.PostSystemRegisterAsync(new RegisterDto - { - UserName = $"wx{Random.Shared.Next(100000, 999999)}", - Password = Guid.NewGuid().ToString("N"), - Phone = null, - Email = null, - Nick = userInfo.Nickname, - Icon = result.FirstOrDefault()?.Id.ToString() - }); - - await _userRepository.InsertAsync(new AiUserExtraInfoEntity(userId, userInfo.OpenId)); - await _sceneCache.SetAsync($"{FuwuhaoConst.SceneCacheKey}:{scene}", new SceneCacheDto + if (await _userRepository.IsAnyAsync(x => x.FuwuhaoOpenId == userInfo.OpenId)) { - SceneResult = SceneResultEnum.Register - }, - new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(50) }); + throw new UserFriendlyException("你已注册过意社区账号"); + } + + + var userId = await _accountService.PostSystemRegisterAsync(new RegisterDto + { + UserName = $"wx{Random.Shared.Next(100000, 999999)}", + Password = Guid.NewGuid().ToString("N"), + Phone = null, + Email = null, + Nick = userInfo.Nickname, + Icon = result.FirstOrDefault()?.Id.ToString() + }); + + await _userRepository.InsertAsync(new AiUserExtraInfoEntity(userId, userInfo.OpenId)); + await _sceneCache.SetAsync($"{FuwuhaoConst.SceneCacheKey}:{scene}", new SceneCacheDto + { + SceneResult = SceneResultEnum.Register + }, + new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(50) }); + } return "恭喜你已注册成功意社区账号!"; }