Эх сурвалжийг харах

修复租户管理与系统账号、机构等表联动 https://gitee.com/zuohuaijun/Admin.NET/issues/I625NU

zuohuaijun 3 жил өмнө
parent
commit
1c357292f3

+ 32 - 12
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -1312,29 +1312,29 @@
             系统租户表
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.SysTenant.Name">
+        <member name="P:Admin.NET.Core.SysTenant.UserId">
             <summary>
-            租户名称
+            用户Id
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.SysTenant.AdminName">
+        <member name="P:Admin.NET.Core.SysTenant.SysUser">
             <summary>
-            管理员
+            用户
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.SysTenant.Host">
+        <member name="P:Admin.NET.Core.SysTenant.OrgId">
             <summary>
-            
+            机构Id
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.SysTenant.Email">
+        <member name="P:Admin.NET.Core.SysTenant.SysOrg">
             <summary>
-            电子邮箱
+            机构
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.SysTenant.Phone">
+        <member name="P:Admin.NET.Core.SysTenant.Host">
             <summary>
-            电话
+            主机
             </summary>
         </member>
         <member name="P:Admin.NET.Core.SysTenant.TenantType">
@@ -6056,6 +6056,26 @@
             管理员名称
             </summary>
         </member>
+        <member name="P:Admin.NET.Core.Service.TenantOutput.Name">
+            <summary>
+            租户名称
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.Service.TenantOutput.AdminName">
+            <summary>
+            管理员
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.Service.TenantOutput.Email">
+            <summary>
+            电子邮箱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.Service.TenantOutput.Phone">
+            <summary>
+            电话
+            </summary>
+        </member>
         <member name="T:Admin.NET.Core.Service.SysTenantService">
             <summary>
             系统租户管理服务
@@ -6088,9 +6108,9 @@
             <param name="input"></param>
             <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysTenantService.InitNewTenant(Admin.NET.Core.SysTenant)">
+        <member name="M:Admin.NET.Core.Service.SysTenantService.InitNewTenant(Admin.NET.Core.Service.TenantOutput)">
             <summary>
-            新增租户初始化(Id隔离)
+            新增租户初始化
             </summary>
             <param name="newTenant"></param>
         </member>

+ 18 - 20
Admin.NET/Admin.NET.Core/Entity/SysTenant.cs

@@ -7,39 +7,37 @@
 public class SysTenant : EntityBase
 {
     /// <summary>
-    /// 租户名称
+    /// 用户Id
     /// </summary>
-    [SugarColumn(ColumnDescription = "租户名称", Length = 64)]
-    [Required, MaxLength(64)]
-    public virtual string Name { get; set; }
+    [SugarColumn(ColumnDescription = "用户Id")]
+    public long UserId { get; set; }
 
     /// <summary>
-    /// 管理员
+    /// 用户
     /// </summary>
-    [SugarColumn(ColumnDescription = "管理员", Length = 32)]
-    [Required, MaxLength(32)]
-    public virtual string AdminName { get; set; }
+    [SugarColumn(IsIgnore = true)]
+    [Navigate(NavigateType.OneToOne, nameof(UserId))]
+    public SysUser SysUser { get; set; }
 
     /// <summary>
-    /// 
+    /// 机构Id
     /// </summary>
-    [SugarColumn(ColumnDescription = "主机", Length = 128)]
-    [MaxLength(128)]
-    public string Host { get; set; }
+    [SugarColumn(ColumnDescription = "机构Id")]
+    public long OrgId { get; set; }
 
     /// <summary>
-    /// 电子邮箱
+    /// 机构
     /// </summary>
-    [SugarColumn(ColumnDescription = "电子邮箱", Length = 64)]
-    [MaxLength(64)]
-    public string Email { get; set; }
+    [SugarColumn(IsIgnore = true)]
+    [Navigate(NavigateType.OneToOne, nameof(OrgId))]
+    public SysOrg SysOrg { get; set; }
 
     /// <summary>
-    /// 电话
+    /// 主机
     /// </summary>
-    [SugarColumn(ColumnDescription = "电话", Length = 16)]
-    [MaxLength(16)]
-    public string Phone { get; set; }
+    [SugarColumn(ColumnDescription = "主机", Length = 128)]
+    [MaxLength(128)]
+    public string Host { get; set; }
 
     /// <summary>
     /// 租户类型

+ 1 - 1
Admin.NET/Admin.NET.Core/SeedData/SysTenantSeedData.cs

@@ -14,7 +14,7 @@ public class SysTenantSeedData : ISqlSugarEntitySeedData<SysTenant>
     {
         return new[]
         {
-            new SysTenant{ Id=123456780000000, Name="系统默认", AdminName="Administrator", Host="www.dilon.vip", Email="zuohuaijun@163.com", Phone="18020030720", TenantType=TenantTypeEnum.Id, DbType=SqlSugar.DbType.Sqlite, Connection="DataSource=./Admin.NET.db", ConfigId=SqlSugarConst.ConfigId, Remark="系统默认", CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysTenant{ Id=123456780000000, OrgId=252885263003720, UserId=252885263000000, Host="www.dilon.vip", TenantType=TenantTypeEnum.Id, DbType=SqlSugar.DbType.Sqlite, Connection="DataSource=./Admin.NET.db", ConfigId=SqlSugarConst.ConfigId, Remark="系统默认", CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
         };
     }
 }

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Tenant/Dto/TenantInput.cs

@@ -22,7 +22,7 @@ public class PageTenantInput : BasePageInput
 }
 
 [NotTable]
-public class AddTenantInput : SysTenant
+public class AddTenantInput : TenantOutput
 {
     /// <summary>
     /// 租户名称

+ 24 - 0
Admin.NET/Admin.NET.Core/Service/Tenant/Dto/TenantOutput.cs

@@ -0,0 +1,24 @@
+namespace Admin.NET.Core.Service;
+
+public class TenantOutput : SysTenant
+{
+    /// <summary>
+    /// 租户名称
+    /// </summary>
+    public virtual string Name { get; set; }
+
+    /// <summary>
+    /// 管理员
+    /// </summary>
+    public virtual string AdminName { get; set; }
+
+    /// <summary>
+    /// 电子邮箱
+    /// </summary>
+    public string Email { get; set; }
+
+    /// <summary>
+    /// 电话
+    /// </summary>
+    public string Phone { get; set; }
+}

+ 89 - 68
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -6,11 +6,11 @@ namespace Admin.NET.Core.Service;
 [ApiDescriptionSettings(Order = 140)]
 public class SysTenantService : IDynamicApiController, ITransient
 {
-    private readonly SqlSugarRepository<SysTenant> _tenantRep;
-    private readonly SqlSugarRepository<SysOrg> _orgRep;
-    private readonly SqlSugarRepository<SysRole> _roleRep;
-    private readonly SqlSugarRepository<SysPos> _posRep;
-    private readonly SqlSugarRepository<SysUser> _userRep;
+    private readonly SqlSugarRepository<SysTenant> _sysTenantRep;
+    private readonly SqlSugarRepository<SysOrg> _sysOrgRep;
+    private readonly SqlSugarRepository<SysRole> _sysRoleRep;
+    private readonly SqlSugarRepository<SysPos> _sysPosRep;
+    private readonly SqlSugarRepository<SysUser> _sysUserRep;
     private readonly SqlSugarRepository<SysUserExtOrg> _sysUserExtOrgRep;
     private readonly SqlSugarRepository<SysRoleMenu> _sysRoleMenuRep;
     private readonly SqlSugarRepository<SysUserRole> _userRoleRep;
@@ -19,11 +19,11 @@ public class SysTenantService : IDynamicApiController, ITransient
     private readonly SysConfigService _sysConfigService;
     private readonly SysCacheService _sysCacheService;
 
-    public SysTenantService(SqlSugarRepository<SysTenant> tenantRep,
-        SqlSugarRepository<SysOrg> orgRep,
-        SqlSugarRepository<SysRole> roleRep,
-        SqlSugarRepository<SysPos> posRep,
-        SqlSugarRepository<SysUser> userRep,
+    public SysTenantService(SqlSugarRepository<SysTenant> sysTenantRep,
+        SqlSugarRepository<SysOrg> sysOrgRep,
+        SqlSugarRepository<SysRole> sysRoleRep,
+        SqlSugarRepository<SysPos> sysPosRep,
+        SqlSugarRepository<SysUser> sysUserRep,
         SqlSugarRepository<SysUserExtOrg> sysUserExtOrgRep,
         SqlSugarRepository<SysRoleMenu> sysRoleMenuRep,
         SqlSugarRepository<SysUserRole> userRoleRep,
@@ -32,11 +32,11 @@ public class SysTenantService : IDynamicApiController, ITransient
         SysConfigService sysConfigService,
         SysCacheService sysCacheService)
     {
-        _tenantRep = tenantRep;
-        _orgRep = orgRep;
-        _roleRep = roleRep;
-        _posRep = posRep;
-        _userRep = userRep;
+        _sysTenantRep = sysTenantRep;
+        _sysOrgRep = sysOrgRep;
+        _sysRoleRep = sysRoleRep;
+        _sysPosRep = sysPosRep;
+        _sysUserRep = sysUserRep;
         _sysUserExtOrgRep = sysUserExtOrgRep;
         _sysRoleMenuRep = sysRoleMenuRep;
         _userRoleRep = userRoleRep;
@@ -52,11 +52,30 @@ public class SysTenantService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [HttpGet("/sysTenant/page")]
-    public async Task<SqlSugarPagedList<SysTenant>> GetTenantPage([FromQuery] PageTenantInput input)
+    public async Task<SqlSugarPagedList<TenantOutput>> GetTenantPage([FromQuery] PageTenantInput input)
     {
-        return await _tenantRep.AsQueryable()
-            .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim()))
-            .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), u => u.Phone.Contains(input.Phone.Trim()))
+        return await _sysTenantRep.AsQueryable()
+            .LeftJoin<SysUser>((t, u) => t.UserId == u.Id)
+            .LeftJoin<SysOrg>((t, u, o) => t.OrgId == o.Id)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), (t, u) => u.Phone.Contains(input.Phone.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Name), (t, u, o) => o.Name.Contains(input.Name.Trim()))
+            .Select((t, u, o) => new TenantOutput
+            {
+                Id = t.Id,
+                OrgId = o.Id,
+                Name = o.Name,
+                UserId = u.Id,
+                AdminName = u.Account,
+                Phone = u.Phone,
+                Email = u.Email,
+                TenantType = t.TenantType,
+                DbType = t.DbType,
+                Connection = t.Connection,
+                ConfigId = t.ConfigId,
+                Order = t.Order,
+                Remark = t.Remark,
+                Status = t.Status,
+            })
             .ToPagedListAsync(input.Page, input.PageSize);
     }
 
@@ -67,7 +86,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     [NonAction]
     public async Task<List<SysTenant>> GetTenantDbList()
     {
-        return await _tenantRep.GetListAsync(u => u.TenantType == TenantTypeEnum.Db && u.Status == StatusEnum.Enable);
+        return await _sysTenantRep.GetListAsync(u => u.TenantType == TenantTypeEnum.Db && u.Status == StatusEnum.Enable);
     }
 
     /// <summary>
@@ -78,18 +97,18 @@ public class SysTenantService : IDynamicApiController, ITransient
     [HttpPost("/sysTenant/add")]
     public async Task AddTenant(AddTenantInput input)
     {
-        var isExist = await _tenantRep.IsAnyAsync(u => u.Name == input.Name);
+        var isExist = await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name);
         if (isExist) throw Oops.Oh(ErrorCodeEnum.D1300);
 
-        isExist = await _userRep.AsQueryable().Filter(null, true).AnyAsync(u => u.Account == input.AdminName);
+        isExist = await _sysUserRep.AsQueryable().Filter(null, true).AnyAsync(u => u.Account == input.AdminName);
         if (isExist) throw Oops.Oh(ErrorCodeEnum.D1301);
 
         // ID隔离时设置与主库一致
         if (input.TenantType == TenantTypeEnum.Id)
-            input.DbType = _tenantRep.AsSugarClient().CurrentConnectionConfig.DbType;
+            input.DbType = _sysTenantRep.AsSugarClient().CurrentConnectionConfig.DbType;
 
-        var tenant = input.Adapt<SysTenant>();
-        await _tenantRep.InsertAsync(tenant);
+        var tenant = input.Adapt<TenantOutput>();
+        await _sysTenantRep.InsertAsync(tenant);
         await UpdateTenantCache();
 
         await InitNewTenant(tenant);
@@ -103,7 +122,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     [HttpPost("/sysTenant/setStatus")]
     public async Task<int> SetTenantStatus(TenantInput input)
     {
-        var tenant = await _tenantRep.GetFirstAsync(u => u.Id == input.Id);
+        var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == input.Id);
         if (tenant.ConfigId == SqlSugarConst.ConfigId)
             throw Oops.Oh(ErrorCodeEnum.Z1001);
 
@@ -111,55 +130,56 @@ public class SysTenantService : IDynamicApiController, ITransient
             throw Oops.Oh(ErrorCodeEnum.D3005);
 
         tenant.Status = input.Status;
-        return await _tenantRep.AsUpdateable(tenant).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
+        return await _sysTenantRep.AsUpdateable(tenant).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
     }
 
     /// <summary>
-    /// 新增租户初始化(Id隔离)
+    /// 新增租户初始化
     /// </summary>
     /// <param name="newTenant"></param>
-    private async Task InitNewTenant(SysTenant newTenant)
+    private async Task InitNewTenant(TenantOutput newTenant)
     {
-        long tenantId = newTenant.Id;
-        string admin = newTenant.AdminName;
-        string companyName = newTenant.Name;
-        // 初始化租户(组织结构)
+        var tenantId = newTenant.Id;
+        var tenantName = newTenant.Name;
+
+        // 初始化机构
         var newOrg = new SysOrg
         {
             TenantId = tenantId,
             Pid = 0,
-            Name = companyName,
-            Code = companyName,
-            Remark = companyName,
+            Name = tenantName,
+            Code = tenantName,
+            Remark = tenantName,
         };
-        await _orgRep.InsertAsync(newOrg);
+        await _sysOrgRep.InsertAsync(newOrg);
 
         // 初始化角色
         var newRole = new SysRole
         {
             TenantId = tenantId,
+            Name = "租管-" + tenantName,
             Code = CommonConst.SysAdminRole,
-            Name = "租户管理员-" + companyName,
             DataScope = DataScopeEnum.All,
-            Remark = companyName
+            Remark = tenantName
         };
-        await _roleRep.InsertAsync(newRole);
+        await _sysRoleRep.InsertAsync(newRole);
 
+        // 初始化职位
         var newPos = new SysPos
         {
-            Name = "租户管理员",
-            Code = "adminTenant",
             TenantId = tenantId,
-            Remark = companyName,
+            Name = "租管-" + tenantName,
+            Code = tenantName,
+            Remark = tenantName,
         };
-        await _posRep.InsertAsync(newPos);
+        await _sysPosRep.InsertAsync(newPos);
 
-        // 初始化租户管理员
+        // 初始化系统账号
         var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
         var newUser = new SysUser
         {
             TenantId = tenantId,
-            Account = admin,
+            Account = newTenant.AdminName,
             Password = MD5Encryption.Encrypt(password),
             NickName = newTenant.AdminName,
             Email = newTenant.Email,
@@ -168,10 +188,10 @@ public class SysTenantService : IDynamicApiController, ITransient
             OrgId = newOrg.Id,
             PosId = newPos.Id,
             Birthday = DateTime.Parse("1986-06-28"),
-            RealName = "租理员",
-            Remark = "租户管理员" + companyName,
+            RealName = "租管",
+            Remark = "租管" + tenantName,
         };
-        await _userRep.InsertAsync(newUser);
+        await _sysUserRep.InsertAsync(newUser);
 
         var newUserRole = new SysUserRole
         {
@@ -204,28 +224,28 @@ public class SysTenantService : IDynamicApiController, ITransient
         if (input.Id.ToString() == SqlSugarConst.ConfigId)
             throw Oops.Oh(ErrorCodeEnum.D1023);
 
-        var entity = await _tenantRep.GetFirstAsync(u => u.Id == input.Id);
-        await _tenantRep.DeleteAsync(entity);
+        await _sysTenantRep.DeleteAsync(u => u.Id == input.Id);
+
         await UpdateTenantCache();
 
         // 删除与租户相关的表数据
-        var users = await _userRep.AsQueryable().Filter(null, true).Where(u => u.TenantId == input.Id).ToListAsync();
+        var users = await _sysUserRep.AsQueryable().Filter(null, true).Where(u => u.TenantId == input.Id).ToListAsync();
         var userIds = users.Select(u => u.Id).ToList();
-        await _userRep.AsDeleteable().Where(u => userIds.Contains(u.Id)).ExecuteCommandAsync();
+        await _sysUserRep.AsDeleteable().Where(u => userIds.Contains(u.Id)).ExecuteCommandAsync();
 
         await _userRoleRep.AsDeleteable().Where(u => userIds.Contains(u.UserId)).ExecuteCommandAsync();
 
         await _sysUserExtOrgRep.AsDeleteable().Where(u => userIds.Contains(u.UserId)).ExecuteCommandAsync();
 
-        await _roleRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
+        await _sysRoleRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
 
-        var roleIds = await _roleRep.AsQueryable().Filter(null, true)
+        var roleIds = await _sysRoleRep.AsQueryable().Filter(null, true)
             .Where(u => u.TenantId == input.Id).Select(u => u.Id).ToListAsync();
         await _sysRoleMenuRep.AsDeleteable().Where(u => roleIds.Contains(u.RoleId)).ExecuteCommandAsync();
 
-        await _orgRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
+        await _sysOrgRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
 
-        await _posRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
+        await _sysPosRep.AsDeleteable().Where(u => u.TenantId == input.Id).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -236,13 +256,14 @@ public class SysTenantService : IDynamicApiController, ITransient
     [HttpPost("/sysTenant/update")]
     public async Task UpdateTenant(UpdateTenantInput input)
     {
-        var entity = input.Adapt<SysTenant>();
-        await _tenantRep.Context.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync();
+        await _sysTenantRep.AsUpdateable(input.Adapt<TenantOutput>()).IgnoreColumns(true).ExecuteCommandAsync();
+
+        // 更新系统机构
+        await _sysOrgRep.UpdateSetColumnsTrueAsync(u => new SysOrg() { Name = input.Name }, u => u.Id == input.OrgId);
+
+        // 更新系统用户
+        await _sysUserRep.UpdateSetColumnsTrueAsync(u => new SysUser() { Account = input.AdminName, Phone = input.Phone, Email = input.Email }, u => u.Id == input.OrgId);
 
-        var tenantAdminUser = await GetTenantAdminUser(input.Id);
-        if (tenantAdminUser == null) return;
-        tenantAdminUser.Account = entity.AdminName;
-        await _userRep.Context.Updateable(tenantAdminUser).UpdateColumns(u => new { u.Account }).ExecuteCommandAsync();
         await UpdateTenantCache();
     }
 
@@ -301,7 +322,7 @@ public class SysTenantService : IDynamicApiController, ITransient
 
         var tenantAdminUser = await GetTenantAdminUser(input.Id);
         tenantAdminUser.Password = MD5Encryption.Encrypt(password);
-        await _userRep.UpdateAsync(tenantAdminUser);
+        await _sysUserRep.UpdateAsync(tenantAdminUser);
     }
 
     /// <summary>
@@ -312,7 +333,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     [NonAction]
     public async Task<SysTenant> GetTenant(long tenantId)
     {
-        return await _tenantRep.GetFirstAsync(u => u.Id == tenantId);
+        return await _sysTenantRep.GetFirstAsync(u => u.Id == tenantId);
     }
 
     /// <summary>
@@ -322,7 +343,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     /// <returns></returns>
     private async Task<SysUser> GetTenantAdminUser(long tenantId)
     {
-        return await _userRep.GetFirstAsync(u => u.TenantId == tenantId && u.AccountType == AccountTypeEnum.Admin);
+        return await _sysUserRep.GetFirstAsync(u => u.TenantId == tenantId && u.AccountType == AccountTypeEnum.Admin);
     }
 
     /// <summary>
@@ -334,7 +355,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     {
         _sysCacheService.Remove(CacheConst.KeyTenant);
 
-        var tenantList = await _tenantRep.GetListAsync();
+        var tenantList = await _sysTenantRep.GetListAsync();
         var defautTenant = tenantList.FirstOrDefault(u => u.Id.ToString() == SqlSugarConst.ConfigId);
         foreach (var tenant in tenantList)
         {
@@ -360,7 +381,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     [HttpPost("/sysTenant/createDb")]
     public async Task CreateTenantDb(TenantInput input)
     {
-        var tenant = await _tenantRep.GetFirstAsync(u => u.Id == input.Id);
+        var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == input.Id);
         if (tenant == null) return;
 
         if (tenant.DbType == SqlSugar.DbType.Oracle)

+ 4 - 4
Web/src/api-services/apis/sys-tenant-api.ts

@@ -20,7 +20,7 @@ import { AddTenantInput } from '../models';
 import { AdminResultInt32 } from '../models';
 import { AdminResultListInt64 } from '../models';
 import { AdminResultListSysMenu } from '../models';
-import { AdminResultSqlSugarPagedListSysTenant } from '../models';
+import { AdminResultSqlSugarPagedListTenantOutput } from '../models';
 import { DeleteTenantInput } from '../models';
 import { RoleMenuInput } from '../models';
 import { StatusEnum } from '../models';
@@ -598,7 +598,7 @@ export const SysTenantApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysTenant>>> {
+        async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>>> {
             const localVarAxiosArgs = await SysTenantApiAxiosParamCreator(configuration).sysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
@@ -731,7 +731,7 @@ export const SysTenantApiFactory = function (configuration?: Configuration, base
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysTenant>> {
+        async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
             return SysTenantApiFp(configuration).sysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
         },
         /**
@@ -856,7 +856,7 @@ export class SysTenantApi extends BaseAPI {
      * @throws {RequiredError}
      * @memberof SysTenantApi
      */
-    public async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysTenant>> {
+    public async sysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
         return SysTenantApiFp(this.configuration).sysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
     }
     /**

+ 34 - 8
Web/src/api-services/models/add-tenant-input.ts

@@ -13,6 +13,8 @@
  */
 import { DbType } from './db-type';
 import { StatusEnum } from './status-enum';
+import { SysOrg } from './sys-org';
+import { SysUser } from './sys-user';
 import { TenantTypeEnum } from './tenant-type-enum';
 /**
  * 
@@ -57,23 +59,35 @@ export interface AddTenantInput {
      */
     isDelete?: boolean;
     /**
-     * 主机
-     * @type {string}
+     * 用户Id
+     * @type {number}
      * @memberof AddTenantInput
      */
-    host?: string | null;
+    userId?: number;
     /**
-     * 电子邮箱
-     * @type {string}
+     * 
+     * @type {SysUser}
      * @memberof AddTenantInput
      */
-    email?: string | null;
+    sysUser?: SysUser;
     /**
-     * 电话
+     * 机构Id
+     * @type {number}
+     * @memberof AddTenantInput
+     */
+    orgId?: number;
+    /**
+     * 
+     * @type {SysOrg}
+     * @memberof AddTenantInput
+     */
+    sysOrg?: SysOrg;
+    /**
+     * 主机
      * @type {string}
      * @memberof AddTenantInput
      */
-    phone?: string | null;
+    host?: string | null;
     /**
      * 
      * @type {TenantTypeEnum}
@@ -116,6 +130,18 @@ export interface AddTenantInput {
      * @memberof AddTenantInput
      */
     status?: StatusEnum;
+    /**
+     * 电子邮箱
+     * @type {string}
+     * @memberof AddTenantInput
+     */
+    email?: string | null;
+    /**
+     * 电话
+     * @type {string}
+     * @memberof AddTenantInput
+     */
+    phone?: string | null;
     /**
      * 租户名称
      * @type {string}

+ 11 - 11
Web/src/api-services/models/admin-result-sql-sugar-paged-list-sys-tenant.ts → Web/src/api-services/models/admin-result-sql-sugar-paged-list-tenant-output.ts

@@ -11,47 +11,47 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
-import { SqlSugarPagedListSysTenant } from './sql-sugar-paged-list-sys-tenant';
+import { SqlSugarPagedListTenantOutput } from './sql-sugar-paged-list-tenant-output';
 /**
  * 全局返回结果
  * @export
- * @interface AdminResultSqlSugarPagedListSysTenant
+ * @interface AdminResultSqlSugarPagedListTenantOutput
  */
-export interface AdminResultSqlSugarPagedListSysTenant {
+export interface AdminResultSqlSugarPagedListTenantOutput {
     /**
      * 状态码
      * @type {number}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
     code?: number;
     /**
      * 类型success、warning、error
      * @type {string}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
     type?: string | null;
     /**
      * 错误信息
      * @type {string}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
     message?: string | null;
     /**
      * 
-     * @type {SqlSugarPagedListSysTenant}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @type {SqlSugarPagedListTenantOutput}
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
-    result?: SqlSugarPagedListSysTenant;
+    result?: SqlSugarPagedListTenantOutput;
     /**
      * 附加数据
      * @type {any}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
     extras?: any | null;
     /**
      * 时间
      * @type {Date}
-     * @memberof AdminResultSqlSugarPagedListSysTenant
+     * @memberof AdminResultSqlSugarPagedListTenantOutput
      */
     time?: Date;
 }

+ 3 - 3
Web/src/api-services/models/index.ts

@@ -56,8 +56,8 @@ export * from './admin-result-sql-sugar-paged-list-sys-notice-user';
 export * from './admin-result-sql-sugar-paged-list-sys-online-user';
 export * from './admin-result-sql-sugar-paged-list-sys-region';
 export * from './admin-result-sql-sugar-paged-list-sys-role';
-export * from './admin-result-sql-sugar-paged-list-sys-tenant';
 export * from './admin-result-sql-sugar-paged-list-sys-user';
+export * from './admin-result-sql-sugar-paged-list-tenant-output';
 export * from './admin-result-sql-sugar-paged-list-timer-output';
 export * from './admin-result-string';
 export * from './admin-result-sys-code-gen';
@@ -143,8 +143,8 @@ export * from './sql-sugar-paged-list-sys-notice-user';
 export * from './sql-sugar-paged-list-sys-online-user';
 export * from './sql-sugar-paged-list-sys-region';
 export * from './sql-sugar-paged-list-sys-role';
-export * from './sql-sugar-paged-list-sys-tenant';
 export * from './sql-sugar-paged-list-sys-user';
+export * from './sql-sugar-paged-list-tenant-output';
 export * from './sql-sugar-paged-list-timer-output';
 export * from './status-enum';
 export * from './swagger-submit-url-body';
@@ -171,11 +171,11 @@ export * from './sys-org';
 export * from './sys-pos';
 export * from './sys-region';
 export * from './sys-role';
-export * from './sys-tenant';
 export * from './sys-user';
 export * from './sys-user-ext-org';
 export * from './table-output';
 export * from './tenant-input';
+export * from './tenant-output';
 export * from './tenant-type-enum';
 export * from './time-span';
 export * from './timer-output';

+ 12 - 12
Web/src/api-services/models/sql-sugar-paged-list-sys-tenant.ts → Web/src/api-services/models/sql-sugar-paged-list-tenant-output.ts

@@ -11,53 +11,53 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
-import { SysTenant } from './sys-tenant';
+import { TenantOutput } from './tenant-output';
 /**
  * 分页泛型集合
  * @export
- * @interface SqlSugarPagedListSysTenant
+ * @interface SqlSugarPagedListTenantOutput
  */
-export interface SqlSugarPagedListSysTenant {
+export interface SqlSugarPagedListTenantOutput {
     /**
      * 页码
      * @type {number}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     page?: number;
     /**
      * 页容量
      * @type {number}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     pageSize?: number;
     /**
      * 总条数
      * @type {number}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     total?: number;
     /**
      * 总页数
      * @type {number}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     totalPages?: number;
     /**
      * 当前页集合
-     * @type {Array<SysTenant>}
-     * @memberof SqlSugarPagedListSysTenant
+     * @type {Array<TenantOutput>}
+     * @memberof SqlSugarPagedListTenantOutput
      */
-    items?: Array<SysTenant> | null;
+    items?: Array<TenantOutput> | null;
     /**
      * 是否有上一页
      * @type {boolean}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     hasPrevPage?: boolean;
     /**
      * 是否有下一页
      * @type {boolean}
-     * @memberof SqlSugarPagedListSysTenant
+     * @memberof SqlSugarPagedListTenantOutput
      */
     hasNextPage?: boolean;
 }

+ 61 - 35
Web/src/api-services/models/sys-tenant.ts → Web/src/api-services/models/tenant-output.ts

@@ -13,119 +13,145 @@
  */
 import { DbType } from './db-type';
 import { StatusEnum } from './status-enum';
+import { SysOrg } from './sys-org';
+import { SysUser } from './sys-user';
 import { TenantTypeEnum } from './tenant-type-enum';
 /**
- * 系统租户表
+ * 
  * @export
- * @interface SysTenant
+ * @interface TenantOutput
  */
-export interface SysTenant {
+export interface TenantOutput {
     /**
      * 雪花Id
      * @type {number}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     id?: number;
     /**
      * 创建时间
      * @type {Date}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     createTime?: Date | null;
     /**
      * 更新时间
      * @type {Date}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     updateTime?: Date | null;
     /**
      * 创建者Id
      * @type {number}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     createUserId?: number | null;
     /**
      * 修改者Id
      * @type {number}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     updateUserId?: number | null;
     /**
      * 软删除
      * @type {boolean}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     isDelete?: boolean;
     /**
-     * 租户名称
-     * @type {string}
-     * @memberof SysTenant
+     * 用户Id
+     * @type {number}
+     * @memberof TenantOutput
      */
-    name: string;
+    userId?: number;
     /**
-     * 管理员
-     * @type {string}
-     * @memberof SysTenant
+     * 
+     * @type {SysUser}
+     * @memberof TenantOutput
      */
-    adminName: string;
+    sysUser?: SysUser;
     /**
-     * 
-     * @type {string}
-     * @memberof SysTenant
+     * 机构Id
+     * @type {number}
+     * @memberof TenantOutput
      */
-    host?: string | null;
+    orgId?: number;
     /**
-     * 电子邮箱
-     * @type {string}
-     * @memberof SysTenant
+     * 
+     * @type {SysOrg}
+     * @memberof TenantOutput
      */
-    email?: string | null;
+    sysOrg?: SysOrg;
     /**
-     * 电话
+     * 主机
      * @type {string}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
-    phone?: string | null;
+    host?: string | null;
     /**
      * 
      * @type {TenantTypeEnum}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     tenantType?: TenantTypeEnum;
     /**
      * 
      * @type {DbType}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     dbType?: DbType;
     /**
      * 数据库连接
      * @type {string}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     connection?: string | null;
     /**
      * 数据库标识
      * @type {string}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     configId?: string | null;
     /**
      * 排序
      * @type {number}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     order?: number;
     /**
      * 备注
      * @type {string}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     remark?: string | null;
     /**
      * 
      * @type {StatusEnum}
-     * @memberof SysTenant
+     * @memberof TenantOutput
      */
     status?: StatusEnum;
+    /**
+     * 租户名称
+     * @type {string}
+     * @memberof TenantOutput
+     */
+    name?: string | null;
+    /**
+     * 管理员
+     * @type {string}
+     * @memberof TenantOutput
+     */
+    adminName?: string | null;
+    /**
+     * 电子邮箱
+     * @type {string}
+     * @memberof TenantOutput
+     */
+    email?: string | null;
+    /**
+     * 电话
+     * @type {string}
+     * @memberof TenantOutput
+     */
+    phone?: string | null;
 }

+ 34 - 8
Web/src/api-services/models/update-tenant-input.ts

@@ -13,6 +13,8 @@
  */
 import { DbType } from './db-type';
 import { StatusEnum } from './status-enum';
+import { SysOrg } from './sys-org';
+import { SysUser } from './sys-user';
 import { TenantTypeEnum } from './tenant-type-enum';
 /**
  * 
@@ -57,23 +59,35 @@ export interface UpdateTenantInput {
      */
     isDelete?: boolean;
     /**
-     * 主机
-     * @type {string}
+     * 用户Id
+     * @type {number}
      * @memberof UpdateTenantInput
      */
-    host?: string | null;
+    userId?: number;
     /**
-     * 电子邮箱
-     * @type {string}
+     * 
+     * @type {SysUser}
      * @memberof UpdateTenantInput
      */
-    email?: string | null;
+    sysUser?: SysUser;
     /**
-     * 电话
+     * 机构Id
+     * @type {number}
+     * @memberof UpdateTenantInput
+     */
+    orgId?: number;
+    /**
+     * 
+     * @type {SysOrg}
+     * @memberof UpdateTenantInput
+     */
+    sysOrg?: SysOrg;
+    /**
+     * 主机
      * @type {string}
      * @memberof UpdateTenantInput
      */
-    phone?: string | null;
+    host?: string | null;
     /**
      * 
      * @type {TenantTypeEnum}
@@ -116,6 +130,18 @@ export interface UpdateTenantInput {
      * @memberof UpdateTenantInput
      */
     status?: StatusEnum;
+    /**
+     * 电子邮箱
+     * @type {string}
+     * @memberof UpdateTenantInput
+     */
+    email?: string | null;
+    /**
+     * 电话
+     * @type {string}
+     * @memberof UpdateTenantInput
+     */
+    phone?: string | null;
     /**
      * 租户名称
      * @type {string}