🍍 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();
|
||||
|
||||
@ -66,12 +66,12 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取租户分页列表")]
|
||||
[DisplayName("获取租户分页列表")]
|
||||
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) // 排除默认主库/主租户
|
||||
@ -112,26 +112,26 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
||||
[DisplayName("增加租户")]
|
||||
[DisplayName("增加租户")]
|
||||
public async Task AddTenant(AddTenantInput input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input.Connection))
|
||||
throw Oops.Oh(ErrorCodeEnum.Z1004);
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input.Connection))
|
||||
throw Oops.Oh(ErrorCodeEnum.Z1004);
|
||||
|
||||
if (await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name))
|
||||
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);
|
||||
|
||||
// 从库配置判断
|
||||
if (input.TenantType == TenantTypeEnum.Db && !string.IsNullOrWhiteSpace(input.SlaveConnections) && !JSON.IsValid(input.SlaveConnections, true))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1302);
|
||||
|
||||
// 以租户Id作为库标识
|
||||
input.Id = YitIdHelper.NextId();
|
||||
input.ConfigId = input.Id.ToString();
|
||||
|
||||
throw Oops.Oh(ErrorCodeEnum.D1302);
|
||||
|
||||
// 以租户Id作为库标识
|
||||
input.Id = YitIdHelper.NextId();
|
||||
input.ConfigId = input.Id.ToString();
|
||||
|
||||
var tenant = input.Adapt<TenantOutput>();
|
||||
await _sysTenantRep.InsertAsync(tenant);
|
||||
await InitNewTenant(tenant);
|
||||
@ -144,7 +144,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("设置租户状态")]
|
||||
[DisplayName("设置租户状态")]
|
||||
public async Task<int> SetStatus(TenantInput input)
|
||||
{
|
||||
var tenant = await _sysTenantRep.GetByIdAsync(input.Id);
|
||||
@ -187,7 +187,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
TenantId = tenantId,
|
||||
Name = tenantMark,
|
||||
Code = CommonConst.SysAdminRole,
|
||||
DataScope = DataScopeEnum.All,
|
||||
DataScope = DataScopeEnum.All,
|
||||
SysFlag = YesNoEnum.Y,
|
||||
Remark = tenantMark
|
||||
};
|
||||
@ -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 });
|
||||
|
||||
@ -251,7 +251,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
||||
[DisplayName("删除租户")]
|
||||
[DisplayName("删除租户")]
|
||||
public async Task DeleteTenant(DeleteTenantInput input)
|
||||
{
|
||||
// 禁止删除默认租户
|
||||
@ -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();
|
||||
@ -295,17 +295,17 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
||||
[DisplayName("更新租户")]
|
||||
[DisplayName("更新租户")]
|
||||
public async Task UpdateTenant(UpdateTenantInput input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input.Connection))
|
||||
throw Oops.Oh(ErrorCodeEnum.Z1004);
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input.Connection))
|
||||
throw Oops.Oh(ErrorCodeEnum.Z1004);
|
||||
|
||||
if (await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name && u.Id != input.OrgId))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1300);
|
||||
|
||||
if (await _sysUserRep.IsAnyAsync(u => u.Account == input.AdminAccount && u.Id != input.UserId))
|
||||
throw Oops.Oh(ErrorCodeEnum.D1301);
|
||||
throw Oops.Oh(ErrorCodeEnum.D1301);
|
||||
|
||||
// 从库配置判断
|
||||
if (input.TenantType == TenantTypeEnum.Db && !string.IsNullOrWhiteSpace(input.SlaveConnections) && !JSON.IsValid(input.SlaveConnections, true))
|
||||
@ -332,11 +332,11 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[DisplayName("授权租户管理员角色菜单")]
|
||||
[DisplayName("授权租户管理员角色菜单")]
|
||||
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;
|
||||
|
||||
@ -351,7 +351,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取租户管理员角色拥有菜单Id集合")]
|
||||
[DisplayName("获取租户管理员角色拥有菜单Id集合")]
|
||||
public async Task<List<long>> GetOwnMenuList([FromQuery] TenantUserInput input)
|
||||
{
|
||||
var roleIds = await _sysUserRoleService.GetUserRoleIdList(input.UserId);
|
||||
@ -363,7 +363,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("重置租户管理员密码")]
|
||||
[DisplayName("重置租户管理员密码")]
|
||||
public async Task<string> ResetPwd(TenantUserInput input)
|
||||
{
|
||||
var password = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SysPassword);
|
||||
@ -376,7 +376,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// 同步所有租户数据库 🔖
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[DisplayName("同步所有租户数据库")]
|
||||
[DisplayName("同步所有租户数据库")]
|
||||
public async Task SyncTenantDb()
|
||||
{
|
||||
var tenantList = await _sysTenantRep.GetListAsync();
|
||||
@ -391,7 +391,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="tenantId"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
[NonAction]
|
||||
public async Task CacheTenant(long tenantId = 0)
|
||||
{
|
||||
// 移除 ISqlSugarClient 中的库连接并排除默认主库
|
||||
@ -414,7 +414,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("创建租户数据库")]
|
||||
[DisplayName("创建租户数据库")]
|
||||
public async Task InitTenantDb(TenantInput input)
|
||||
{
|
||||
var tenant = await _sysTenantRep.GetByIdAsync(input.Id);
|
||||
@ -450,7 +450,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("创建租户数据")]
|
||||
[DisplayName("创建租户数据")]
|
||||
public async Task InitTenantData(TenantInput input)
|
||||
{
|
||||
var tenant = await _sysTenantRep.GetByIdAsync(input.Id);
|
||||
@ -467,38 +467,38 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取租户下的用户列表")]
|
||||
[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>
|
||||
/// 获取所有租户数据库列表 🔖
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取所有租户数据库列表")]
|
||||
[DisplayName("获取所有租户数据库列表")]
|
||||
public async Task<List<DbOutput>> GetTenantDbList()
|
||||
{
|
||||
var tenantDbList = await _sysTenantRep.AsQueryable().ClearFilter()
|
||||
.LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id)
|
||||
//.GroupBy(u => new { u.DbType, u.Connection })
|
||||
.Where(u => u.Status == StatusEnum.Enable)
|
||||
.OrderBy(u => u.ConfigId)
|
||||
.Select((u, a) => new DbOutput()
|
||||
{
|
||||
DbName = a.Name,
|
||||
ConfigId = u.ConfigId.ToString(),
|
||||
DbType = u.DbType,
|
||||
Connection = u.Connection
|
||||
}).ToListAsync();
|
||||
|
||||
//// 获取数据库名称
|
||||
//foreach (var tenantDb in tenantDbList)
|
||||
//{
|
||||
// tenantDb.DbName = _sysTenantRep.AsTenant().GetConnectionScope(tenantDb.ConfigId).Ado.Connection.Database;
|
||||
//}
|
||||
|
||||
{
|
||||
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)
|
||||
.OrderBy(u => u.ConfigId)
|
||||
.Select((u, a) => new DbOutput()
|
||||
{
|
||||
DbName = a.Name,
|
||||
ConfigId = u.ConfigId.ToString(),
|
||||
DbType = u.DbType,
|
||||
Connection = u.Connection
|
||||
}).ToListAsync();
|
||||
|
||||
//// 获取数据库名称
|
||||
//foreach (var tenantDb in tenantDbList)
|
||||
//{
|
||||
// tenantDb.DbName = _sysTenantRep.AsTenant().GetConnectionScope(tenantDb.ConfigId).Ado.Connection.Database;
|
||||
//}
|
||||
|
||||
return tenantDbList;
|
||||
}
|
||||
|
||||
@ -506,7 +506,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// 获取租户数据库连接
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
[NonAction]
|
||||
public SqlSugarScopeProvider GetTenantDbConnectionScope(long tenantId)
|
||||
{
|
||||
var iTenant = _sysTenantRep.AsTenant();
|
||||
@ -554,7 +554,7 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// <returns></returns>
|
||||
[SuppressMonitor]
|
||||
[AllowAnonymous]
|
||||
[DisplayName("获取系统信息")]
|
||||
[DisplayName("获取系统信息")]
|
||||
public async Task<dynamic> GetSysInfo(long tenantId)
|
||||
{
|
||||
//// 还可以根据域名判断租户
|
||||
@ -562,9 +562,9 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
|
||||
if (tenantId < 1) tenantId = long.Parse(App.User?.FindFirst(ClaimConst.TenantId)?.Value ?? "0");
|
||||
if (tenantId < 1) tenantId = SqlSugarConst.DefaultTenantId;
|
||||
var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == tenantId) ?? throw Oops.Oh($"租户信息不存在:{tenantId}");
|
||||
|
||||
// 若租户系统标题为空,则获取默认租户系统信息(兼容已有未配置的租户)
|
||||
var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == tenantId) ?? throw Oops.Oh($"租户信息不存在:{tenantId}");
|
||||
|
||||
// 若租户系统标题为空,则获取默认租户系统信息(兼容已有未配置的租户)
|
||||
if (string.IsNullOrWhiteSpace(tenant.Title))
|
||||
tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == SqlSugarConst.DefaultTenantId);
|
||||
|
||||
@ -610,20 +610,20 @@ public class SysTenantService : IDynamicApiController, ITransient
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[DisplayName("保存系统信息")]
|
||||
[DisplayName("保存系统信息")]
|
||||
public async Task SaveSysInfo(SysInfoInput input)
|
||||
{
|
||||
{
|
||||
input.TenantId = input.TenantId < 1 ? long.Parse(App.User?.FindFirst(ClaimConst.TenantId)?.Value ?? "0") : input.TenantId;
|
||||
var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == input.TenantId) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
||||
tenant = input.Adapt<SysTenant>();
|
||||
tenant.Id = input.TenantId;
|
||||
|
||||
// 先清空轮播图再更新
|
||||
var carouselFileIds = await _sysTenantRep.ChangeRepository<SqlSugarRepository<SysFile>>().AsQueryable()
|
||||
.WhereIF(input.CarouselFileIds != null && input.CarouselFileIds.Count != 0, u => !input.CarouselFileIds.Contains(u.Id))
|
||||
.Where(u => u.FileType == "Carousel" && u.DataId == input.TenantId)
|
||||
.Select(u => u.Id).ToListAsync();
|
||||
foreach (var fileId in carouselFileIds)
|
||||
tenant.Id = input.TenantId;
|
||||
|
||||
// 先清空轮播图再更新
|
||||
var carouselFileIds = await _sysTenantRep.ChangeRepository<SqlSugarRepository<SysFile>>().AsQueryable()
|
||||
.WhereIF(input.CarouselFileIds != null && input.CarouselFileIds.Count != 0, u => !input.CarouselFileIds.Contains(u.Id))
|
||||
.Where(u => u.FileType == "Carousel" && u.DataId == input.TenantId)
|
||||
.Select(u => u.Id).ToListAsync();
|
||||
foreach (var fileId in carouselFileIds)
|
||||
await App.GetRequiredService<SysFileService>().DeleteFile(new BaseIdInput { Id = fileId });
|
||||
|
||||
await _sysTenantRep.AsUpdateable(tenant).UpdateColumns(u => new
|
||||
|
||||
@ -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