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 9cc4f7c6..fe746cfe 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 @@ -112,14 +112,13 @@ public class FuwuhaoService : ApplicationService //根据操作类型,进行业务处理,返回处理结果,再写入缓存,10s过去,相当于用户10s扫完app后,轮询要在10秒内完成 var scenResult = await _fuwuhaoManager.CallBackHandlerAsync(cache.SceneType, body.FromUserName, cache.UserId); - cache.SceneResult = scenResult; - + cache.SceneResult = scenResult.SceneResult; + cache.UserId = scenResult.UserId; await _sceneCache.SetAsync($"{FuwuhaoConst.SceneCacheKey}{scene}", cache, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(50) }); - //如果是注册,将OpenId与Scene进行绑定,代表用户有30分钟进行注册 - if (scenResult == SceneResultEnum.Register) + if (scenResult.SceneResult == SceneResultEnum.Register) { await _openIdToSceneCache.SetAsync($"{FuwuhaoConst.OpenIdToSceneCacheKey}{body.FromUserName}", scene, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30) }); @@ -176,6 +175,10 @@ public class FuwuhaoService : ApplicationService switch (output.SceneResult) { case SceneResultEnum.Login: + if (cache.UserId is null) + { + throw new ApplicationException("获取用户id异常,请重试"); + } var loginInfo = await _accountService.PostLoginAsync(cache.UserId!.Value); output.Token = loginInfo.Token; output.RefreshToken = loginInfo.RefreshToken; diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/Fuwuhao/FuwuhaoManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/Fuwuhao/FuwuhaoManager.cs index d99af62d..b08e2a2b 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/Fuwuhao/FuwuhaoManager.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/Fuwuhao/FuwuhaoManager.cs @@ -207,7 +207,7 @@ public class FuwuhaoManager : DomainService /// /// /// - public async Task CallBackHandlerAsync(SceneTypeEnum sceneType, string openId, Guid? bindUserId) + public async Task<(SceneResultEnum SceneResult,Guid? UserId)> CallBackHandlerAsync(SceneTypeEnum sceneType, string openId, Guid? bindUserId) { var aiUserInfo = await _userRepository._DbQueryable.Where(x => x.FuwuhaoOpenId == openId).FirstAsync(); switch (sceneType) @@ -216,12 +216,12 @@ public class FuwuhaoManager : DomainService //有openid,说明登录成功 if (aiUserInfo is not null) { - return SceneResultEnum.Login; + return (SceneResultEnum.Login,aiUserInfo.UserId); } //无openid,说明需要进行注册 else { - return SceneResultEnum.Register; + return (SceneResultEnum.Register,null); } break; @@ -240,7 +240,7 @@ public class FuwuhaoManager : DomainService //说明没有绑定过,直接绑定 await _userRepository.InsertAsync(new AiUserExtraInfoEntity(bindUserId.Value, openId)); - return SceneResultEnum.Bind; + return (SceneResultEnum.Bind,null); break; default: throw new ArgumentOutOfRangeException(nameof(sceneType), sceneType, null);