Files
IM_NEW/User.WebApi/Services/UserService.cs
T

82 lines
2.8 KiB
C#

using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using IdentityService.WebApi.Applications.User;
using IM.Protocols.Grpc.User;
namespace IdentityService.WebApi.Services
{
public class UserService:UserInternal.UserInternalBase
{
private readonly Applications.User.UserService service;
public UserService(Applications.User.UserService service)
{
this.service = service;
}
public override async Task<UserResponse> GetUserInfoAsync(GetUserInfoRequest request, ServerCallContext context)
{
var res = await service.GetUserInfoAsync(Guid.Parse(request.UserId));
if (!res.Succeeded)
{
throw new RpcException(new Status(StatusCode.NotFound, res.Message));
}
return new UserResponse()
{
Avatar = res.Data.Avatar ?? "",
CreationTime = res.Data.CreationTime.ToUniversalTime().ToTimestamp(),
Deletion = res.Data.Deletion is null ? DateTime.MinValue.ToUniversalTime().ToTimestamp() : res.Data.Deletion.Value.ToUniversalTime().ToTimestamp(),
Description = res.Data.Description,
Email = res.Data.Email ?? "",
Id = res.Data.Id.ToString(),
NickName = res.Data.NickName,
Phone = res.Data.Phone ?? "",
Region = res.Data.Region,
UserName = res.Data.UserName
};
}
public override async Task<GetUserListResponse> GetUserListAsync(
GetUserListRequest request,
ServerCallContext context)
{
var ids = request.UserIds
.Select(Guid.Parse)
.ToList();
var res = await service.GetUsersByIdsAsync(ids);
if (!res.Succeeded)
{
throw new RpcException(new Status(StatusCode.NotFound, res.Message));
}
var response = new GetUserListResponse();
response.Users.AddRange(res.Data.Select(user =>
{
var item = new UserResponse
{
Avatar = user.Avatar ?? "",
CreationTime = user.CreationTime.ToUniversalTime().ToTimestamp(),
Description = user.Description,
Email = user.Email ?? "",
Id = user.Id.ToString(),
NickName = user.NickName,
Phone = user.Phone ?? "",
Region = user.Region,
UserName = user.UserName
};
if (user.Deletion.HasValue)
{
item.Deletion = user.Deletion.Value.ToUniversalTime().ToTimestamp();
}
return item;
}));
return response;
}
}
}