File was renamed from FlexJobApi.User.Application/Roles/Commands/SetRoleUserInfosCommandHandler.cs |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace FlexJobApi.User.Application |
| | | namespace FlexJobApi.UserServer.Application |
| | | { |
| | | /// <summary> |
| | | /// 设置角色用户 |
| | | /// </summary> |
| | | public class SetRoleUserInfosCommandHandler( |
| | | IRepository<UserInfoRole> rep |
| | | IRepository<UserRole> rep |
| | | ) : IRequestHandler<SetRoleUserInfosCommand, int> |
| | | { |
| | | private readonly IRepository<UserInfoRole> rep = rep; |
| | | private readonly IRepository<UserRole> rep = rep; |
| | | |
| | | /// <inheritdoc/> |
| | | public async Task<int> Handle(SetRoleUserInfosCommand request, CancellationToken cancellationToken) |
| | |
| | | var entities = await rep.AsQueryable() |
| | | .Where(it => |
| | | it.RoleId == request.RoleId |
| | | && request.UserInfoIds.Contains(it.UserInfoId)) |
| | | && request.UserInfoIds.Contains(it.UserId)) |
| | | .ToListAsync(cancellationToken); |
| | | var removes = entities.Where(it => !request.UserInfoIds.Contains(it.UserInfoId)).ToList(); |
| | | var removes = entities.Where(it => !request.UserInfoIds.Contains(it.UserId)).ToList(); |
| | | if (removes.Any()) await rep.DeleteAsync(removes, cancellationToken); |
| | | var adds = request.UserInfoIds |
| | | .Where(it => !entities.Any(e => e.UserInfoId == it)) |
| | | .Select(it => new UserInfoRole |
| | | .Where(it => !entities.Any(e => e.UserId == it)) |
| | | .Select(it => new UserRole |
| | | { |
| | | RoleId = request.RoleId, |
| | | UserInfoId = it |
| | | UserId = it |
| | | }) |
| | | .ToList(); |
| | | if (adds.Any()) await rep.InsertAsync(adds, cancellationToken); |