using iWare.Wms.Core; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Microsoft.EntityFrameworkCore; namespace iWare.Wms.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); } } }