🍍 refactor(Core): 替换ClearFilter方法为IgnoreTenant
This commit is contained in:
parent
6358bd2b64
commit
07903f0866
@ -79,7 +79,7 @@ public class AppAuthService : IDynamicApiController, ITransient
|
||||
throw Oops.Oh(ErrorCodeEnum.Z1003);
|
||||
|
||||
// 账号是否存在
|
||||
var user = await _sysUserRep.AsQueryable().Includes(t => t.SysOrg).ClearFilter().FirstAsync(u => u.Account.Equals(input.Account));
|
||||
var user = await _sysUserRep.AsQueryable().Includes(t => t.SysOrg).IgnoreTenant().FirstAsync(u => u.Account.Equals(input.Account));
|
||||
_ = user ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
||||
|
||||
// 账号是否被冻结
|
||||
@ -147,7 +147,7 @@ public class AppAuthService : IDynamicApiController, ITransient
|
||||
throw Oops.Oh("验证码错误!");
|
||||
|
||||
// 账号是否存在
|
||||
var user = await _sysUserRep.AsQueryable().Includes(u => u.SysOrg).ClearFilter().FirstAsync(u => u.Phone.Equals(input.Phone));
|
||||
var user = await _sysUserRep.AsQueryable().Includes(u => u.SysOrg).IgnoreTenant().FirstAsync(u => u.Phone.Equals(input.Phone));
|
||||
_ = user ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
||||
|
||||
return await CreateToken(user);
|
||||
|
||||
@ -370,6 +370,8 @@ public static class RepositoryExtension
|
||||
//});
|
||||
}
|
||||
|
||||
#region 忽略租户
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
@ -381,6 +383,63 @@ public static class RepositoryExtension
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
/// <param name="queryable"></param>
|
||||
/// <param name="ignore">是否忽略 默认true</param>
|
||||
/// <returns> </returns>
|
||||
public static ISugarQueryable<T, T2> IgnoreTenant<T, T2>(this ISugarQueryable<T, T2> queryable, bool ignore = true)
|
||||
{
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
/// <param name="queryable"></param>
|
||||
/// <param name="ignore">是否忽略 默认true</param>
|
||||
/// <returns> </returns>
|
||||
public static ISugarQueryable<T, T2, T3> IgnoreTenant<T, T2, T3>(this ISugarQueryable<T, T2, T3> queryable, bool ignore = true)
|
||||
{
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
/// <param name="queryable"></param>
|
||||
/// <param name="ignore">是否忽略 默认true</param>
|
||||
/// <returns> </returns>
|
||||
public static ISugarQueryable<T, T2, T3, T4> IgnoreTenant<T, T2, T3, T4>(this ISugarQueryable<T, T2, T3, T4> queryable, bool ignore = true)
|
||||
{
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
/// <param name="queryable"></param>
|
||||
/// <param name="ignore">是否忽略 默认true</param>
|
||||
/// <returns> </returns>
|
||||
public static ISugarQueryable<T, T2, T3, T4, T5> IgnoreTenant<T, T2, T3, T4, T5>(this ISugarQueryable<T, T2, T3, T4, T5> queryable, bool ignore = true)
|
||||
{
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 忽略租户
|
||||
/// </summary>
|
||||
/// <param name="queryable"></param>
|
||||
/// <param name="ignore">是否忽略 默认true</param>
|
||||
/// <returns> </returns>
|
||||
public static ISugarQueryable<T, T2, T3, T4, T5, T6> IgnoreTenant<T, T2, T3, T4, T5, T6>(this ISugarQueryable<T, T2, T3, T4, T5, T6> queryable, bool ignore = true)
|
||||
{
|
||||
return ignore ? queryable.ClearFilter<ITenantIdFilter>() : queryable;
|
||||
}
|
||||
|
||||
#endregion 忽略租户
|
||||
|
||||
/// <summary>
|
||||
/// 只更新某些列
|
||||
/// </summary>
|
||||
|
||||
@ -114,7 +114,7 @@ public class SysAuthService : IDynamicApiController, ITransient
|
||||
//}
|
||||
|
||||
// 判断账号是否存在
|
||||
var user = await _sysUserRep.AsQueryable().Includes(t => t.SysOrg).ClearFilter()
|
||||
var user = await _sysUserRep.AsQueryable().Includes(t => t.SysOrg).IgnoreTenant()
|
||||
//.WhereIF(tenantId > 0, u => u.TenantId == tenantId)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(account), u => u.Account.Equals(account))
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(phone), u => u.Phone.Equals(phone))
|
||||
|
||||
@ -187,7 +187,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
|
||||
if (dictDataList == null)
|
||||
{
|
||||
dictDataList = await _sysDictDataRep.Change<SysDictType>().AsQueryable()
|
||||
.LeftJoin<SysDictData>((u, a) => u.Id == a.DictTypeId).ClearFilter()
|
||||
.LeftJoin<SysDictData>((u, a) => u.Id == a.DictTypeId).IgnoreTenant()
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(code), u => u.Code == code)
|
||||
.WhereIF(typeId != null && typeId > 0, u => u.Id == typeId)
|
||||
.Where((u, a) => u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
|
||||
|
||||
@ -163,7 +163,7 @@ public class SysDictTypeService : IDynamicApiController, ITransient
|
||||
public async Task<dynamic> GetAllDictList()
|
||||
{
|
||||
var ds = await _sysDictTypeRep.AsQueryable()
|
||||
.InnerJoin<SysDictData>((u, a) => u.Id == a.DictTypeId).ClearFilter()
|
||||
.InnerJoin<SysDictData>((u, a) => u.Id == a.DictTypeId).IgnoreTenant()
|
||||
.Where((u, a) => u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
|
||||
.Select((u, a) => new { TypeCode = u.Code, a.Label, a.Value, a.Code, a.Remark, a.OrderNo, a.TagType, a.ExtData })
|
||||
.ToListAsync();
|
||||
|
||||
@ -61,7 +61,7 @@ public class SysFileService : IDynamicApiController, ITransient
|
||||
public async Task<SqlSugarPagedList<SysFile>> Page(PageFileInput input)
|
||||
{
|
||||
// 获取所有公开文件
|
||||
var publicList = _sysFileRep.AsQueryable().ClearFilter().Where(u => u.IsPublic == true);
|
||||
var publicList = _sysFileRep.AsQueryable().IgnoreTenant().Where(u => u.IsPublic == true);
|
||||
// 获取私有文件
|
||||
var privateList = _sysFileRep.AsQueryable().Where(u => u.IsPublic == false);
|
||||
// 合并公开和私有并分页
|
||||
@ -179,7 +179,7 @@ public class SysFileService : IDynamicApiController, ITransient
|
||||
[DisplayName("下载指定文件Base64格式")]
|
||||
public async Task<string> DownloadFileBase64([FromBody] string url)
|
||||
{
|
||||
var sysFile = await _sysFileRep.AsQueryable().ClearFilter().FirstAsync(u => u.Url == url) ?? throw Oops.Oh($"文件不存在");
|
||||
var sysFile = await _sysFileRep.AsQueryable().IgnoreTenant().FirstAsync(u => u.Url == url) ?? throw Oops.Oh($"文件不存在");
|
||||
return await _customFileProvider.DownloadFileBase64Async(sysFile);
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ public class SysFileService : IDynamicApiController, ITransient
|
||||
public async Task<SysFile> GetFile([FromQuery] long id, [FromQuery] bool isClearFilter = false)
|
||||
{
|
||||
var file = isClearFilter
|
||||
? await _sysFileRep.CopyNew().AsQueryable().ClearFilter().FirstAsync(u => u.Id == id)
|
||||
? await _sysFileRep.CopyNew().AsQueryable().IgnoreTenant().FirstAsync(u => u.Id == id)
|
||||
: await _sysFileRep.CopyNew().GetByIdAsync(id);
|
||||
return file ?? throw Oops.Oh(ErrorCodeEnum.D8000);
|
||||
}
|
||||
@ -456,7 +456,7 @@ public class SysFileService : IDynamicApiController, ITransient
|
||||
public async Task<List<SysFile>> GetFileListByDataId([FromQuery] long dataId, [FromQuery] bool isClearFilter = false)
|
||||
{
|
||||
return isClearFilter
|
||||
? await _sysFileRep.CopyNew().AsQueryable().ClearFilter().Where(u => u.DataId == dataId).ToListAsync()
|
||||
? await _sysFileRep.CopyNew().AsQueryable().IgnoreTenant().Where(u => u.DataId == dataId).ToListAsync()
|
||||
: await _sysFileRep.CopyNew().GetListAsync(u => u.DataId == dataId);
|
||||
}
|
||||
|
||||
|
||||
@ -85,7 +85,7 @@ public class SysOAuthService : IDynamicApiController, ITransient
|
||||
}
|
||||
|
||||
// 若账号不存在则新建
|
||||
var wechatUser = await _sysOAuthUserRep.AsQueryable().Includes(u => u.SysUser).ClearFilter().FirstAsync(u => u.OpenId == openIdClaim.Value);
|
||||
var wechatUser = await _sysOAuthUserRep.AsQueryable().Includes(u => u.SysUser).IgnoreTenant().FirstAsync(u => u.OpenId == openIdClaim.Value);
|
||||
if (wechatUser == null)
|
||||
{
|
||||
var userId = await App.GetRequiredService<SysUserService>().AddUser(new AddUserInput()
|
||||
@ -109,7 +109,7 @@ public class SysOAuthService : IDynamicApiController, ITransient
|
||||
PlatformType = platformType
|
||||
});
|
||||
|
||||
wechatUser = await _sysOAuthUserRep.AsQueryable().Includes(u => u.SysUser).ClearFilter().FirstAsync(u => u.OpenId == openIdClaim.Value);
|
||||
wechatUser = await _sysOAuthUserRep.AsQueryable().Includes(u => u.SysUser).IgnoreTenant().FirstAsync(u => u.OpenId == openIdClaim.Value);
|
||||
}
|
||||
|
||||
// 构建Token令牌,默认回调登录为PC模式
|
||||
|
||||
@ -130,7 +130,7 @@ public class SysReportDataSourceService : IDynamicApiController, ITransient
|
||||
|
||||
// 从租户获取数据源
|
||||
var tenantList = await _tenantRep.AsQueryable()
|
||||
.LeftJoin<SysOrg>((u, o) => u.OrgId == o.Id).ClearFilter()
|
||||
.LeftJoin<SysOrg>((u, o) => u.OrgId == o.Id).IgnoreTenant()
|
||||
.Where((u, o) => u.TenantType == TenantTypeEnum.Db)
|
||||
.Select((u, o) => new { u.Id, o.Name, u.DbType, u.Connection })
|
||||
.ToListAsync();
|
||||
|
||||
@ -70,8 +70,8 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
public async Task<SqlSugarPagedList<TenantOutput>> Page(PageTenantInput input)
|
||||
{
|
||||
return await _sysTenantRep.AsQueryable()
|
||||
.LeftJoin<SysUser>((u, a) => u.UserId == a.Id).ClearFilter()
|
||||
.LeftJoin<SysOrg>((u, a, b) => u.OrgId == b.Id).ClearFilter()
|
||||
.LeftJoin<SysUser>((u, a) => u.UserId == a.Id).IgnoreTenant()
|
||||
.LeftJoin<SysOrg>((u, a, b) => u.OrgId == b.Id).IgnoreTenant()
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Phone), (u, a) => a.Phone.Contains(input.Phone.Trim()))
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Name), (u, a, b) => b.Name.Contains(input.Name.Trim()))
|
||||
.WhereIF(!input.IncludeDefault, u => u.Id.ToString() != SqlSugarConst.MainConfigId) // 排除默认主库/主租户
|
||||
@ -121,7 +121,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
if (await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1300);
|
||||
|
||||
if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.AdminAccount))
|
||||
if (await _sysUserRep.AsQueryable().IgnoreTenant().AnyAsync(u => u.Account == input.AdminAccount))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1301);
|
||||
|
||||
// 从库配置判断
|
||||
@ -237,7 +237,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
|
||||
// 默认租户管理员角色菜单集合(工作台、账号管理、角色管理、机构管理、职位管理、个人中心、通知公告)
|
||||
var menuPidList = new List<long> { 1300000000101, 1310000000111, 1310000000131, 1310000000141, 1310000000151, 1310000000161, 1310000000171 };
|
||||
var menuIdList = await _sysMenuRep.AsQueryable().ClearFilter()
|
||||
var menuIdList = await _sysMenuRep.AsQueryable().IgnoreTenant()
|
||||
.Where(u => menuPidList.Contains(u.Id) || menuPidList.Contains(u.Pid)).Select(u => u.Id).ToListAsync();
|
||||
await _sysRoleMenuService.GrantRoleMenu(new RoleMenuInput() { Id = newRole.Id, MenuIdList = menuIdList });
|
||||
|
||||
@ -268,7 +268,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
await CacheTenant(input.Id);
|
||||
|
||||
// 删除与租户相关的表数据
|
||||
var users = await _sysUserRep.AsQueryable().ClearFilter().Where(u => u.TenantId == input.Id).ToListAsync();
|
||||
var users = await _sysUserRep.AsQueryable().IgnoreTenant().Where(u => u.TenantId == input.Id).ToListAsync();
|
||||
var userIds = users.Select(u => u.Id).ToList();
|
||||
await _sysUserRep.AsDeleteable().Where(u => userIds.Contains(u.Id)).ExecuteCommandAsync();
|
||||
|
||||
@ -278,7 +278,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
|
||||
await _sysRoleRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
|
||||
|
||||
var roleIds = await _sysRoleRep.AsQueryable().ClearFilter().Where(u => u.TenantId == input.Id).Select(u => u.Id).ToListAsync();
|
||||
var roleIds = await _sysRoleRep.AsQueryable().IgnoreTenant().Where(u => u.TenantId == input.Id).Select(u => u.Id).ToListAsync();
|
||||
await _sysRoleMenuRep.AsDeleteable().Where(u => roleIds.Contains(u.RoleId)).ExecuteCommandAsync();
|
||||
|
||||
await _sysOrgRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
|
||||
@ -336,7 +336,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
public async Task GrantMenu(RoleMenuInput input)
|
||||
{
|
||||
// 获取租户管理员角色【sys_admin】
|
||||
var adminRole = await _sysRoleRep.AsQueryable().ClearFilter()
|
||||
var adminRole = await _sysRoleRep.AsQueryable().IgnoreTenant()
|
||||
.FirstAsync(u => u.Code == CommonConst.SysAdminRole && u.TenantId == input.Id && u.IsDelete == false);
|
||||
if (adminRole == null) return;
|
||||
|
||||
@ -470,7 +470,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
[DisplayName("获取租户下的用户列表")]
|
||||
public async Task<List<SysUser>> UserList(TenantIdInput input)
|
||||
{
|
||||
return await _sysUserRep.AsQueryable().ClearFilter().Where(u => u.TenantId == input.TenantId).ToListAsync();
|
||||
return await _sysUserRep.AsQueryable().IgnoreTenant().Where(u => u.TenantId == input.TenantId).ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -480,7 +480,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
[DisplayName("获取所有租户数据库列表")]
|
||||
public async Task<List<DbOutput>> GetTenantDbList()
|
||||
{
|
||||
var tenantDbList = await _sysTenantRep.AsQueryable().ClearFilter()
|
||||
var tenantDbList = await _sysTenantRep.AsQueryable().IgnoreTenant()
|
||||
.LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id)
|
||||
//.GroupBy(u => new { u.DbType, u.Connection })
|
||||
.Where(u => u.Status == StatusEnum.Enable)
|
||||
|
||||
@ -109,7 +109,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
// 是否有权操作此账号
|
||||
if (!_userManager.SuperAdmin && input.AccountType is AccountTypeEnum.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D1033);
|
||||
|
||||
var query = _sysUserRep.AsQueryable().ClearFilter();
|
||||
var query = _sysUserRep.AsQueryable().IgnoreTenant();
|
||||
if (await query.AnyAsync(u => u.Account == input.Account)) throw Oops.Oh(ErrorCodeEnum.D1003);
|
||||
if (!string.IsNullOrWhiteSpace(input.Phone) && await query.AnyAsync(u => u.Phone == input.Phone)) throw Oops.Oh(ErrorCodeEnum.D1032);
|
||||
|
||||
@ -142,7 +142,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
[DisplayName("更新用户")]
|
||||
public virtual async Task UpdateUser(UpdateUserInput input)
|
||||
{
|
||||
var query = _sysUserRep.AsQueryable().ClearFilter().Where(u => u.Id != input.Id);
|
||||
var query = _sysUserRep.AsQueryable().IgnoreTenant().Where(u => u.Id != input.Id);
|
||||
if (await query.AnyAsync(u => u.Account == input.Account)) throw Oops.Oh(ErrorCodeEnum.D1003);
|
||||
if (!string.IsNullOrWhiteSpace(input.Phone) && await query.AnyAsync(u => u.Phone == input.Phone)) throw Oops.Oh(ErrorCodeEnum.D1032);
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ public class GoViewSysService : IDynamicApiController
|
||||
tenant.Captcha = true;
|
||||
_sysCacheService.Set(CacheConst.KeyTenant, tenantList);
|
||||
|
||||
var sysUser = await _sysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Account.Equals(input.Username));
|
||||
var sysUser = await _sysUserRep.AsQueryable().IgnoreTenant().FirstAsync(u => u.Account.Equals(input.Username));
|
||||
return new GoViewLoginOutput()
|
||||
{
|
||||
Userinfo = new GoViewLoginUserInfo
|
||||
|
||||
Loading…
Reference in New Issue
Block a user