diff --git a/src/CAServer.Application.Contracts/CAAccount/Dtos/CAHolderWithAddressResultDto.cs b/src/CAServer.Application.Contracts/CAAccount/Dtos/CAHolderWithAddressResultDto.cs new file mode 100644 index 000000000..5a16e5335 --- /dev/null +++ b/src/CAServer.Application.Contracts/CAAccount/Dtos/CAHolderWithAddressResultDto.cs @@ -0,0 +1,8 @@ +using CAServer.Dtos; + +namespace CAServer.CAAccount.Dtos; + +public class CAHolderWithAddressResultDto : CAHolderDto +{ + public string CaAddress { get; set; } +} \ No newline at end of file diff --git a/src/CAServer.Application.Contracts/CAAccount/INickNameAppService.cs b/src/CAServer.Application.Contracts/CAAccount/INickNameAppService.cs index 9681696bd..2ff211c31 100644 --- a/src/CAServer.Application.Contracts/CAAccount/INickNameAppService.cs +++ b/src/CAServer.Application.Contracts/CAAccount/INickNameAppService.cs @@ -16,7 +16,7 @@ public interface INickNameAppService Task GetBubblingAccountAsync(); Task ReplaceUserNicknameAsync(ReplaceNicknameDto replaceNicknameDto); - Task> QueryHolderInfosAsync(List addressList); + Task> QueryHolderInfosAsync(List addressList); DefaultAvatarResponse GetDefaultAvatars(); } \ No newline at end of file diff --git a/src/CAServer.Application/CAAccount/NickNameAppService.cs b/src/CAServer.Application/CAAccount/NickNameAppService.cs index d18c1d904..0e1edfc80 100644 --- a/src/CAServer.Application/CAAccount/NickNameAppService.cs +++ b/src/CAServer.Application/CAAccount/NickNameAppService.cs @@ -187,18 +187,30 @@ public DefaultAvatarResponse GetDefaultAvatars() }; } - public async Task> QueryHolderInfosAsync(List addressList) + public async Task> QueryHolderInfosAsync(List addressList) { + var result = new List(); + if (addressList.IsNullOrEmpty()) + { + return result; + } + var guardiansDto = await _contactProvider.GetCaHolderInfoByAddressAsync(addressList, ""); var caHashList = guardiansDto.CaHolderInfo.Select(t => t.CaHash).Distinct().ToList(); + if (caHashList.Count == 0) + { + return result; + } - var mustQuery = new List, QueryContainer>> + QueryContainer Filter(QueryContainerDescriptor q) => + q.Terms(i => i.Field(f => f.CaHash).Terms(caHashList)); + var holders = await _holderRepository.GetListAsync(Filter, limit: caHashList.Count, skip: 0); + foreach (var caHolderIndex in holders.Item2) { - q => q.Terms(i => i.Field(f => f.CaHash).Terms(caHashList)) - }; - QueryContainer Filter(QueryContainerDescriptor f) => f.Bool(b => b.Must(mustQuery)); + var caHolderWithAddressResultDto = ObjectMapper.Map(caHolderIndex); + caHolderWithAddressResultDto.CaAddress = guardiansDto.CaHolderInfo.First(t => t.CaHash == caHolderIndex.CaHash).CaAddress; + } - var holders = await _holderRepository.GetListAsync(Filter); - return ObjectMapper.Map, List>(holders.Item2); + return result; } } \ No newline at end of file diff --git a/src/CAServer.Application/CAServerApplicationAutoMapperProfile.cs b/src/CAServer.Application/CAServerApplicationAutoMapperProfile.cs index 6934c7018..7ce9f8645 100644 --- a/src/CAServer.Application/CAServerApplicationAutoMapperProfile.cs +++ b/src/CAServer.Application/CAServerApplicationAutoMapperProfile.cs @@ -804,6 +804,7 @@ public CAServerApplicationAutoMapperProfile() .ForMember(t => t.Name, f => f.MapFrom(m => m.Name ?? string.Empty)) .ReverseMap(); CreateMap(); + CreateMap(); CreateMap(); CreateMap(); CreateMap(); diff --git a/src/CAServer.HttpApi/Controllers/NickNameController.cs b/src/CAServer.HttpApi/Controllers/NickNameController.cs index a50dfb54f..995bf8919 100644 --- a/src/CAServer.HttpApi/Controllers/NickNameController.cs +++ b/src/CAServer.HttpApi/Controllers/NickNameController.cs @@ -44,7 +44,7 @@ public async Task HolderInfoAsync(HolderInfoDto holderInfo) [HttpGet("queryHolderInfos")] [AllowAnonymous] - public async Task> QueryHolderInfosAsync(List addressList) + public async Task> QueryHolderInfosAsync(List addressList) { return await _nickNameService.QueryHolderInfosAsync(addressList); }