using Admin.NET.Core;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Microsoft.EntityFrameworkCore;
namespace Admin.NET.Application
{
///
/// 用户数据范围服务
///
public class SysUserDataScopeService : ISysUserDataScopeService, ITransient
{
private readonly IRepository _sysUserDataScopeRep; // 用户数据范围表仓储
///
/// 构造函数
///
///
public SysUserDataScopeService(IRepository sysUserDataScopeRep)
{
_sysUserDataScopeRep = sysUserDataScopeRep;
}
///
/// 授权用户数据
///
///
///
[UnitOfWork]
public async Task GrantData(UpdateUserRoleDataInput input)
{
var dataScopes = await _sysUserDataScopeRep.Where(u => u.SysUserId == input.Id).ToListAsync();
await _sysUserDataScopeRep.DeleteAsync(dataScopes);
var userDataScopes = input.GrantOrgIdList.Select(u => new SysUserDataScope
{
SysUserId = input.Id,
SysOrgId = u
}).ToList();
await _sysUserDataScopeRep.InsertAsync(userDataScopes);
}
///
/// 获取用户的数据范围Id集合
///
///
///
public async Task> GetUserDataScopeIdList(long userId)
{
return await _sysUserDataScopeRep.DetachedEntities
.Where(u => u.SysUserId == userId)
.Select(u => u.SysOrgId).ToListAsync();
}
///
/// 根据机构Id集合删除对应的用户-数据范围关联信息
///
///
///
public async Task DeleteUserDataScopeListByOrgIdList(List orgIdList)
{
var dataScopes = await _sysUserDataScopeRep.Where(u => orgIdList.Contains(u.SysOrgId), false).ToListAsync();
await _sysUserDataScopeRep.DeleteAsync(dataScopes);
}
///
/// 根据用户Id删除对应的用户-数据范围关联信息
///
///
///
public async Task DeleteUserDataScopeListByUserId(long userId)
{
var sudsList = await _sysUserDataScopeRep.AsQueryable(m => m.SysUserId == userId, false).ToListAsync();
await _sysUserDataScopeRep.DeleteAsync(sudsList);
}
}
}