82 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|