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);
}
}
}