using iWare.Wms.Core; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Microsoft.EntityFrameworkCore; namespace iWare.Wms.Application { /// /// 角色数据范围服务 /// public class SysRoleDataScopeService : ISysRoleDataScopeService, ITransient { private readonly IRepository _sysRoleDataScopeRep; // 角色数据范围表仓储 public SysRoleDataScopeService(IRepository sysRoleDataScopeRep) { _sysRoleDataScopeRep = sysRoleDataScopeRep; } /// /// 授权角色数据范围 /// /// /// [UnitOfWork] public async Task GrantDataScope(GrantRoleDataInput input) { var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync(); await _sysRoleDataScopeRep.DeleteAsync(dataScopes); var roleDataScopes = input.GrantOrgIdList.Select(u => new SysRoleDataScope { SysRoleId = input.Id, SysOrgId = u }).ToList(); await _sysRoleDataScopeRep.InsertAsync(roleDataScopes); } /// /// 根据角色Id集合获取角色数据范围集合 /// /// /// public async Task> GetRoleDataScopeIdList(List roleIdList) { return await _sysRoleDataScopeRep.DetachedEntities .Where(u => roleIdList.Contains(u.SysRoleId)) .Select(u => u.SysOrgId).ToListAsync(); } /// /// 根据机构Id集合删除对应的角色-数据范围关联信息 /// /// /// public async Task DeleteRoleDataScopeListByOrgIdList(List orgIdList) { var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => orgIdList.Contains(u.SysOrgId)).ToListAsync(); await _sysRoleDataScopeRep.DeleteAsync(dataScopes); } /// /// 根据角色Id删除对应的角色-数据范围关联信息 /// /// /// public async Task DeleteRoleDataScopeListByRoleId(long roleId) { var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == roleId).ToListAsync(); await _sysRoleDataScopeRep.DeleteAsync(dataScopes); } } }