diff --git a/Admin.NET/Admin.NET.Core/Entity/SysConfigTenant.cs b/Admin.NET/Admin.NET.Core/Entity/SysConfigTenant.cs
new file mode 100644
index 00000000..00630d2d
--- /dev/null
+++ b/Admin.NET/Admin.NET.Core/Entity/SysConfigTenant.cs
@@ -0,0 +1,64 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core;
+
+///
+/// 系统租户配置参数表
+///
+[SugarTable(null, "系统租户配置参数表")]
+[SysTable]
+[SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)]
+[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc, IsUnique = true)]
+public partial class SysConfigTenant : EntityTenant
+{
+ ///
+ /// 名称
+ ///
+ [SugarColumn(ColumnDescription = "名称", Length = 64)]
+ [Required, MaxLength(64)]
+ public virtual string Name { get; set; }
+
+ ///
+ /// 编码
+ ///
+ [SugarColumn(ColumnDescription = "编码", Length = 64)]
+ [MaxLength(64)]
+ public string? Code { get; set; }
+
+ ///
+ /// 参数值
+ ///
+ [SugarColumn(ColumnDescription = "参数值", Length = 512)]
+ [MaxLength(512)]
+ public string? Value { get; set; }
+
+ ///
+ /// 是否是内置参数(Y-是,N-否)
+ ///
+ [SugarColumn(ColumnDescription = "是否是内置参数", DefaultValue = "1")]
+ public YesNoEnum SysFlag { get; set; } = YesNoEnum.Y;
+
+ ///
+ /// 分组编码
+ ///
+ [SugarColumn(ColumnDescription = "分组编码", Length = 64)]
+ [MaxLength(64)]
+ public string? GroupCode { get; set; }
+
+ ///
+ /// 排序
+ ///
+ [SugarColumn(ColumnDescription = "排序", DefaultValue = "100")]
+ public int OrderNo { get; set; } = 100;
+
+ ///
+ /// 备注
+ ///
+ [SugarColumn(ColumnDescription = "备注", Length = 256)]
+ [MaxLength(256)]
+ public string? Remark { get; set; }
+}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Entity/SysDictData.cs b/Admin.NET/Admin.NET.Core/Entity/SysDictData.cs
index 971b4341..1040cb5c 100644
--- a/Admin.NET/Admin.NET.Core/Entity/SysDictData.cs
+++ b/Admin.NET/Admin.NET.Core/Entity/SysDictData.cs
@@ -12,7 +12,7 @@ namespace Admin.NET.Core;
[SugarTable(null, "系统字典值表")]
[SysTable]
[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
-public partial class SysDictData : EntityTenant
+public partial class SysDictData : EntityBase
{
///
/// 字典类型Id
@@ -28,6 +28,13 @@ public partial class SysDictData : EntityTenant
[Navigate(NavigateType.OneToOne, nameof(DictTypeId))]
public SysDictType DictType { get; set; }
+ ///
+ /// 显示文本
+ ///
+ [SugarColumn(ColumnDescription = "显示文本", Length = 256)]
+ [Required, MaxLength(256)]
+ public virtual string Label { get; set; }
+
///
/// 值
///
@@ -38,16 +45,10 @@ public partial class SysDictData : EntityTenant
///
/// 编码
///
+ ///
+ ///
[SugarColumn(ColumnDescription = "编码", Length = 256)]
- [Required, MaxLength(256)]
- public virtual string Code { get; set; }
-
- ///
- /// 名称
- ///
- [SugarColumn(ColumnDescription = "名称", Length = 256)]
- [MaxLength(256)]
- public virtual string? Name { get; set; }
+ public virtual string? Code { get; set; }
///
/// 显示样式-标签颜色
diff --git a/Admin.NET/Admin.NET.Core/Entity/SysDictDataTenant.cs b/Admin.NET/Admin.NET.Core/Entity/SysDictDataTenant.cs
new file mode 100644
index 00000000..2ec35c76
--- /dev/null
+++ b/Admin.NET/Admin.NET.Core/Entity/SysDictDataTenant.cs
@@ -0,0 +1,105 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core;
+
+///
+/// 系统租户字典值表
+///
+[SugarTable(null, "系统租户字典值表")]
+[SysTable]
+[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
+public partial class SysDictDataTenant : EntityTenant
+{
+ ///
+ /// 字典类型Id
+ ///
+ [SugarColumn(ColumnDescription = "字典类型Id")]
+ public long DictTypeId { get; set; }
+
+ ///
+ /// 字典类型
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ [Navigate(NavigateType.OneToOne, nameof(DictTypeId))]
+ public SysDictType DictType { get; set; }
+
+ ///
+ /// 显示文本
+ ///
+ [SugarColumn(ColumnDescription = "显示文本", Length = 256)]
+ [Required, MaxLength(256)]
+ public virtual string Label { get; set; }
+
+ ///
+ /// 值
+ ///
+ [SugarColumn(ColumnDescription = "值", Length = 256)]
+ [Required, MaxLength(256)]
+ public virtual string Value { get; set; }
+
+ ///
+ /// 编码
+ ///
+ ///
+ ///
+ [SugarColumn(ColumnDescription = "编码", Length = 256)]
+ public virtual string? Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [SugarColumn(ColumnDescription = "名称", Length = 256)]
+ [MaxLength(256)]
+ public virtual string? Name { get; set; }
+
+ ///
+ /// 显示样式-标签颜色
+ ///
+ [SugarColumn(ColumnDescription = "显示样式-标签颜色", Length = 16)]
+ [MaxLength(16)]
+ public string? TagType { get; set; }
+
+ ///
+ /// 显示样式-Style(控制显示样式)
+ ///
+ [SugarColumn(ColumnDescription = "显示样式-Style", Length = 512)]
+ [MaxLength(512)]
+ public string? StyleSetting { get; set; }
+
+ ///
+ /// 显示样式-Class(控制显示样式)
+ ///
+ [SugarColumn(ColumnDescription = "显示样式-Class", Length = 512)]
+ [MaxLength(512)]
+ public string? ClassSetting { get; set; }
+
+ ///
+ /// 排序
+ ///
+ [SugarColumn(ColumnDescription = "排序", DefaultValue = "100")]
+ public int OrderNo { get; set; } = 100;
+
+ ///
+ /// 备注
+ ///
+ [SugarColumn(ColumnDescription = "备注", Length = 2048)]
+ [MaxLength(2048)]
+ public string? Remark { get; set; }
+
+ ///
+ /// 拓展数据(保存业务功能的配置项)
+ ///
+ [SugarColumn(ColumnDescription = "拓展数据(保存业务功能的配置项)", ColumnDataType = StaticConfig.CodeFirst_BigString)]
+ public string? ExtData { get; set; }
+
+ ///
+ /// 状态
+ ///
+ [SugarColumn(ColumnDescription = "状态", DefaultValue = "1")]
+ public StatusEnum Status { get; set; } = StatusEnum.Enable;
+}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Entity/SysDictType.cs b/Admin.NET/Admin.NET.Core/Entity/SysDictType.cs
index f2588335..b9d0f9f9 100644
--- a/Admin.NET/Admin.NET.Core/Entity/SysDictType.cs
+++ b/Admin.NET/Admin.NET.Core/Entity/SysDictType.cs
@@ -54,6 +54,12 @@ public partial class SysDictType : EntityBase
[SugarColumn(ColumnDescription = "是否是内置字典", DefaultValue = "1")]
public virtual YesNoEnum SysFlag { get; set; } = YesNoEnum.Y;
+ ///
+ /// 是否是租户字典(Y-是,N-否)
+ ///
+ [SugarColumn(ColumnDescription = "是否是租户字典", DefaultValue = "2")]
+ public virtual YesNoEnum IsTenant { get; set; } = YesNoEnum.N;
+
///
/// 字典值集合
///
diff --git a/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs b/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
index 2b029862..261b1ec1 100644
--- a/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
+++ b/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
@@ -367,6 +367,18 @@ public enum ErrorCodeEnum
[ErrorCodeItemMetadata("禁止删除系统内置字典")]
D3010,
+ ///
+ /// 获取字典值集合入参有误
+ ///
+ [ErrorCodeItemMetadata("获取字典值集合入参有误")]
+ D3011,
+
+ ///
+ /// 禁止修改租户字典状态
+ ///
+ [ErrorCodeItemMetadata("禁止修改租户字典状态")]
+ D3012,
+
///
/// 菜单已存在
///
diff --git a/Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs b/Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs
index 622e47cc..94671824 100644
--- a/Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs
+++ b/Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs
@@ -128,9 +128,9 @@ public class EnumToDictJob : IJob
{
Id = YitIdHelper.NextId(),
DictTypeId = t2.Id,
- Name = u.Describe,
- Value = u.Value.ToString(),
Code = u.Name,
+ Label = u.Describe,
+ Value = u.Value.ToString(),
Remark = t2.Remark,
OrderNo = u.Value + OrderOffset,
TagType = u.Theme != "" ? u.Theme : DefaultTagType,
@@ -178,9 +178,10 @@ public class EnumToDictJob : IJob
var enumData = e.EnumEntities.FirstOrDefault(u => dictData.Code == u.Name);
if (enumData != null)
{
+ dictData.Code = enumData.Name;
+ dictData.Label = enumData.Describe;
dictData.Value = enumData.Value.ToString();
dictData.OrderNo = enumData.Value + OrderOffset;
- dictData.Name = enumData.Describe;
dictData.TagType = enumData.Theme != "" ? enumData.Theme : dictData.TagType != "" ? dictData.TagType : DefaultTagType;
updatedSysDictData.Add(dictData);
}
@@ -197,9 +198,9 @@ public class EnumToDictJob : IJob
{
Id = YitIdHelper.NextId(),
DictTypeId = updatedDictType.Id,
- Name = enumData.Describe,
- Value = enumData.Value.ToString(),
Code = enumData.Name,
+ Label = enumData.Describe,
+ Value = enumData.Value.ToString(),
Remark = updatedDictType.Remark,
OrderNo = enumData.Value + OrderOffset,
TagType = enumData.Theme != "" ? enumData.Theme : DefaultTagType,
diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysDictDataSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
index 4047cbe4..42960cd4 100644
--- a/Admin.NET/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
+++ b/Admin.NET/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
@@ -19,61 +19,61 @@ public class SysDictDataSeedData : ISqlSugarEntitySeedData
{
return
[
- new SysDictData{ Id=1300000000101, DictTypeId=1300000000101, Value="输入框", Code="Input", OrderNo=100, Remark="输入框", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000102, DictTypeId=1300000000101, Value="字典选择器", Code="DictSelector", OrderNo=100, Remark="字典选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000103, DictTypeId=1300000000101, Value="常量选择器", Code="ConstSelector", OrderNo=100, Remark="常量选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000104, DictTypeId=1300000000101, Value="枚举选择器", Code="EnumSelector", OrderNo=100, Remark="枚举选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000105, DictTypeId=1300000000101, Value="树选择器", Code="ApiTreeSelector", OrderNo=100, Remark="树选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000106, DictTypeId=1300000000101, Value="外键", Code="ForeignKey", OrderNo=100, Remark="外键", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000107, DictTypeId=1300000000101, Value="数字输入框", Code="InputNumber", OrderNo=100, Remark="数字输入框", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000108, DictTypeId=1300000000101, Value="时间选择", Code="DatePicker", OrderNo=100, Remark="时间选择", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000109, DictTypeId=1300000000101, Value="文本域", Code="InputTextArea", OrderNo=100, Remark="文本域", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000110, DictTypeId=1300000000101, Value="上传", Code="Upload", OrderNo=100, Remark="上传", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000111, DictTypeId=1300000000101, Value="开关", Code="Switch", OrderNo=100, Remark="开关", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000101, DictTypeId=1300000000101, Label="输入框", Value="Input", OrderNo=100, Remark="输入框", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000102, DictTypeId=1300000000101, Label="字典选择器", Value="DictSelector", OrderNo=100, Remark="字典选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000103, DictTypeId=1300000000101, Label="常量选择器", Value="ConstSelector", OrderNo=100, Remark="常量选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000104, DictTypeId=1300000000101, Label="枚举选择器", Value="EnumSelector", OrderNo=100, Remark="枚举选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000105, DictTypeId=1300000000101, Label="树选择器", Value="ApiTreeSelector", OrderNo=100, Remark="树选择器", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000106, DictTypeId=1300000000101, Label="外键", Value="ForeignKey", OrderNo=100, Remark="外键", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000107, DictTypeId=1300000000101, Label="数字输入框", Value="InputNumber", OrderNo=100, Remark="数字输入框", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000108, DictTypeId=1300000000101, Label="时间选择", Value="DatePicker", OrderNo=100, Remark="时间选择", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000109, DictTypeId=1300000000101, Label="文本域", Value="InputTextArea", OrderNo=100, Remark="文本域", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000110, DictTypeId=1300000000101, Label="上传", Value="Upload", OrderNo=100, Remark="上传", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000111, DictTypeId=1300000000101, Label="开关", Value="Switch", OrderNo=100, Remark="开关", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000201, DictTypeId=1300000000102, Value="等于", Code="==", OrderNo=1, Remark="等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000202, DictTypeId=1300000000102, Value="模糊", Code="like", OrderNo=1, Remark="模糊", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000203, DictTypeId=1300000000102, Value="大于", Code=">", OrderNo=1, Remark="大于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000204, DictTypeId=1300000000102, Value="小于", Code="<", OrderNo=1, Remark="小于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000205, DictTypeId=1300000000102, Value="不等于", Code="!=", OrderNo=1, Remark="不等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000206, DictTypeId=1300000000102, Value="大于等于", Code=">=", OrderNo=1, Remark="大于等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000207, DictTypeId=1300000000102, Value="小于等于", Code="<=", OrderNo=1, Remark="小于等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000208, DictTypeId=1300000000102, Value="不为空", Code="isNotNull", OrderNo=1, Remark="不为空", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000209, DictTypeId=1300000000102, Value="时间范围", Code="~", OrderNo=1, Remark="时间范围", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000201, DictTypeId=1300000000102, Label="等于", Value="==", OrderNo=1, Remark="等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000202, DictTypeId=1300000000102, Label="模糊", Value="like", OrderNo=1, Remark="模糊", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000203, DictTypeId=1300000000102, Label="大于", Value=">", OrderNo=1, Remark="大于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000204, DictTypeId=1300000000102, Label="小于", Value="<", OrderNo=1, Remark="小于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000205, DictTypeId=1300000000102, Label="不等于", Value="!=", OrderNo=1, Remark="不等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000206, DictTypeId=1300000000102, Label="大于等于", Value=">=", OrderNo=1, Remark="大于等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000207, DictTypeId=1300000000102, Label="小于等于", Value="<=", OrderNo=1, Remark="小于等于", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000208, DictTypeId=1300000000102, Label="不为空", Value="isNotNull", OrderNo=1, Remark="不为空", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000209, DictTypeId=1300000000102, Label="时间范围", Value="~", OrderNo=1, Remark="时间范围", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000301, DictTypeId=1300000000103, Value="long", Code="long", OrderNo=1, Remark="long", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000302, DictTypeId=1300000000103, Value="string", Code="string", OrderNo=1, Remark="string", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000303, DictTypeId=1300000000103, Value="DateTime", Code="DateTime", OrderNo=1, Remark="DateTime", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000304, DictTypeId=1300000000103, Value="bool", Code="bool", OrderNo=1, Remark="bool", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000305, DictTypeId=1300000000103, Value="int", Code="int", OrderNo=1, Remark="int", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000306, DictTypeId=1300000000103, Value="double", Code="double", OrderNo=1, Remark="double", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000307, DictTypeId=1300000000103, Value="float", Code="float", OrderNo=1, Remark="float", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000308, DictTypeId=1300000000103, Value="decimal", Code="decimal", OrderNo=1, Remark="decimal", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000309, DictTypeId=1300000000103, Value="Guid", Code="Guid", OrderNo=1, Remark="Guid", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000310, DictTypeId=1300000000103, Value="DateTimeOffset", Code="DateTimeOffset", OrderNo=1, Remark="DateTimeOffset", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000301, DictTypeId=1300000000103, Label="long", Value="long", OrderNo=1, Remark="long", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000302, DictTypeId=1300000000103, Label="string", Value="string", OrderNo=1, Remark="string", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000303, DictTypeId=1300000000103, Label="DateTime", Value="DateTime", OrderNo=1, Remark="DateTime", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000304, DictTypeId=1300000000103, Label="bool", Value="bool", OrderNo=1, Remark="bool", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000305, DictTypeId=1300000000103, Label="int", Value="int", OrderNo=1, Remark="int", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000306, DictTypeId=1300000000103, Label="double", Value="double", OrderNo=1, Remark="double", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000307, DictTypeId=1300000000103, Label="float", Value="float", OrderNo=1, Remark="float", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000308, DictTypeId=1300000000103, Label="decimal", Value="decimal", OrderNo=1, Remark="decimal", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000309, DictTypeId=1300000000103, Label="Guid", Value="Guid", OrderNo=1, Remark="Guid", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000310, DictTypeId=1300000000103, Label="DateTimeOffset", Value="DateTimeOffset", OrderNo=1, Remark="DateTimeOffset", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000401, DictTypeId=1300000000104, Value="下载压缩包", Code="100", OrderNo=1, Remark="下载压缩包", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000402, DictTypeId=1300000000104, Value="下载压缩包(前端)", Code="111", OrderNo=2, Remark="下载压缩包(前端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000403, DictTypeId=1300000000104, Value="下载压缩包(后端)", Code="121", OrderNo=3, Remark="下载压缩包(后端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000404, DictTypeId=1300000000104, Value="生成到本项目", Code="200", OrderNo=4, Remark="生成到本项目", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000405, DictTypeId=1300000000104, Value="生成到本项目(前端)", Code="211", OrderNo=5, Remark="生成到本项目(前端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000406, DictTypeId=1300000000104, Value="生成到本项目(后端)", Code="221", OrderNo=6, Remark="生成到本项目(后端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000401, DictTypeId=1300000000104, Label="下载压缩包", Value="100", OrderNo=1, Remark="下载压缩包", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000402, DictTypeId=1300000000104, Label="下载压缩包(前端)", Value="111", OrderNo=2, Remark="下载压缩包(前端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000403, DictTypeId=1300000000104, Label="下载压缩包(后端)", Value="121", OrderNo=3, Remark="下载压缩包(后端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000404, DictTypeId=1300000000104, Label="生成到本项目", Value="200", OrderNo=4, Remark="生成到本项目", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000405, DictTypeId=1300000000104, Label="生成到本项目(前端)", Value="211", OrderNo=5, Remark="生成到本项目(前端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000406, DictTypeId=1300000000104, Label="生成到本项目(后端)", Value="221", OrderNo=6, Remark="生成到本项目(后端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000501, DictTypeId=1300000000105, Value="EntityBaseId【基础实体Id】", Code="EntityBaseId", OrderNo=1, Remark="【基础实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000502, DictTypeId=1300000000105, Value="EntityBase【基础实体】", Code="EntityBase", OrderNo=1, Remark="【基础实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000503, DictTypeId=1300000000105, Value="EntityTenantId【租户实体Id】", Code="EntityTenantId", OrderNo=1, Remark="【租户实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000504, DictTypeId=1300000000105, Value="EntityTenant【租户实体】", Code="EntityTenant", OrderNo=1, Remark="【租户实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000505, DictTypeId=1300000000105, Value="EntityBaseData【业务实体】", Code="EntityBaseData", OrderNo=1, Remark="【业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000506, DictTypeId=1300000000105, Value="EntityTenantBaseData【租户业务实体】", Code="EntityTenantBaseData", OrderNo=1, Remark="【租户业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000501, DictTypeId=1300000000105, Label="EntityBaseId【基础实体Id】", Value="EntityBaseId", OrderNo=1, Remark="【基础实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000502, DictTypeId=1300000000105, Label="EntityBase【基础实体】", Value="EntityBase", OrderNo=1, Remark="【基础实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000503, DictTypeId=1300000000105, Label="EntityTenantId【租户实体Id】", Value="EntityTenantId", OrderNo=1, Remark="【租户实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000504, DictTypeId=1300000000105, Label="EntityTenant【租户实体】", Value="EntityTenant", OrderNo=1, Remark="【租户实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000505, DictTypeId=1300000000105, Label="EntityBaseData【业务实体】", Value="EntityBaseData", OrderNo=1, Remark="【业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000506, DictTypeId=1300000000105, Label="EntityTenantBaseData【租户业务实体】", Value="EntityTenantBaseData", OrderNo=1, Remark="【租户业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
- new SysDictData{ Id=1300000000601, DictTypeId=1300000000106, Value="不需要", Code="off", OrderNo=100, Remark="不需要打印支持", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },
- new SysDictData{ Id=1300000000602, DictTypeId=1300000000106, Value="绑定打印模版", Code="custom", OrderNo=101, Remark="绑定打印模版", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },
+ new SysDictData{ Id=1300000000601, DictTypeId=1300000000106, Label="不需要", Value="off", OrderNo=100, Remark="不需要打印支持", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },
+ new SysDictData{ Id=1300000000602, DictTypeId=1300000000106, Label="绑定打印模版", Value="custom", OrderNo=101, Remark="绑定打印模版", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },
- new SysDictData{ Id=1300000000701, DictTypeId=1300000000201, Value="集团", Code="101", OrderNo=100, Remark="集团", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
- new SysDictData{ Id=1300000000702, DictTypeId=1300000000201, Value="公司", Code="201", OrderNo=101, Remark="公司", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
- new SysDictData{ Id=1300000000703, DictTypeId=1300000000201, Value="部门", Code="301", OrderNo=102, Remark="部门", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
- new SysDictData{ Id=1300000000704, DictTypeId=1300000000201, Value="区域", Code="401", OrderNo=103, Remark="区域", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
- new SysDictData{ Id=1300000000705, DictTypeId=1300000000201, Value="组", Code="501", OrderNo=104, Remark="组", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000701, DictTypeId=1300000000201, Label="集团", Value="101", OrderNo=100, Remark="集团", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000702, DictTypeId=1300000000201, Label="公司", Value="201", OrderNo=101, Remark="公司", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000703, DictTypeId=1300000000201, Label="部门", Value="301", OrderNo=102, Remark="部门", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000704, DictTypeId=1300000000201, Label="区域", Value="401", OrderNo=103, Remark="区域", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
+ new SysDictData{ Id=1300000000705, DictTypeId=1300000000201, Label="组", Value="501", OrderNo=104, Remark="组", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-02-10 00:00:00") },
];
}
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Config/Dto/TenantConfigInput.cs b/Admin.NET/Admin.NET.Core/Service/Config/Dto/TenantConfigInput.cs
new file mode 100644
index 00000000..1464ef84
--- /dev/null
+++ b/Admin.NET/Admin.NET.Core/Service/Config/Dto/TenantConfigInput.cs
@@ -0,0 +1,49 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core.Service;
+
+public class ConfigTenantInput : BaseIdInput;
+
+public class PageConfigTenantInput : BasePageInput
+{
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 编码
+ ///
+ public string Code { get; set; }
+
+ ///
+ /// 分组编码
+ ///
+ public string GroupCode { get; set; }
+}
+
+public class AddConfigTenantInput : SysConfigTenant;
+
+public class UpdateConfigTenantInput : AddConfigTenantInput;
+
+public class DeleteConfigTenantInput : BaseIdInput;
+
+///
+/// 批量配置参数输入
+///
+public class BatchConfigTenantInput
+{
+ ///
+ /// 编码
+ ///
+ public string Code { get; set; }
+
+ ///
+ /// 属性值
+ ///
+ public string Value { get; set; }
+}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs b/Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs
index f12d3a98..2dbeeeed 100644
--- a/Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs
@@ -182,8 +182,7 @@ public class SysConfigService : IDynamicApiController, ITransient
var value = _sysCacheService.Get($"{CacheConst.KeyConfig}{code}");
if (string.IsNullOrEmpty(value))
{
- var config = await _sysConfigRep.CopyNew().GetFirstAsync(u => u.Code == code);
- value = config != null ? config.Value : default;
+ value = (await _sysConfigRep.CopyNew().GetFirstAsync(u => u.Code == code))?.Value;
_sysCacheService.Set($"{CacheConst.KeyConfig}{code}", value);
}
if (string.IsNullOrWhiteSpace(value)) return default;
diff --git a/Admin.NET/Admin.NET.Core/Service/Config/SysTenantConfigService.cs b/Admin.NET/Admin.NET.Core/Service/Config/SysTenantConfigService.cs
new file mode 100644
index 00000000..1a23b890
--- /dev/null
+++ b/Admin.NET/Admin.NET.Core/Service/Config/SysTenantConfigService.cs
@@ -0,0 +1,253 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core.Service;
+
+///
+/// 系统租户配置参数服务 🧩
+///
+[ApiDescriptionSettings(Order = 440, Description = "租户配置参数")]
+public class SysConfigTenantService : IDynamicApiController, ITransient
+{
+ private readonly SysCacheService _sysCacheService;
+ private readonly SqlSugarRepository _sysConfigRep;
+
+ public SysConfigTenantService(SysCacheService sysCacheService,
+ SqlSugarRepository sysConfigRep)
+ {
+ _sysCacheService = sysCacheService;
+ _sysConfigRep = sysConfigRep;
+ }
+
+ ///
+ /// 获取配置参数分页列表 🔖
+ ///
+ ///
+ ///
+ [DisplayName("获取配置参数分页列表")]
+ public async Task> Page(PageConfigTenantInput input)
+ {
+ return await _sysConfigRep.AsQueryable()
+ .Where(u => u.GroupCode != ConfigConst.SysWebConfigGroup || u.GroupCode == null) // 不显示 WebConfig 分组
+ .WhereIF(!string.IsNullOrWhiteSpace(input.Name?.Trim()), u => u.Name.Contains(input.Name))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.Code?.Trim()), u => u.Code.Contains(input.Code))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.GroupCode?.Trim()), u => u.GroupCode.Equals(input.GroupCode))
+ .OrderBuilder(input)
+ .ToPagedListAsync(input.Page, input.PageSize);
+ }
+
+ ///
+ /// 获取配置参数列表 🔖
+ ///
+ ///
+ [DisplayName("获取配置参数列表")]
+ public async Task> List(PageConfigTenantInput input)
+ {
+ return await _sysConfigRep.AsQueryable()
+ .WhereIF(!string.IsNullOrWhiteSpace(input.GroupCode?.Trim()), u => u.GroupCode.Equals(input.GroupCode))
+ .ToListAsync();
+ }
+
+ ///
+ /// 增加配置参数 🔖
+ ///
+ ///
+ ///
+ [ApiDescriptionSettings(Name = "Add"), HttpPost]
+ [DisplayName("增加配置参数")]
+ public async Task AddConfig(AddConfigTenantInput input)
+ {
+ var isExist = await _sysConfigRep.IsAnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+ if (isExist) throw Oops.Oh(ErrorCodeEnum.D9000);
+
+ await _sysConfigRep.InsertAsync(input.Adapt());
+ }
+
+ ///
+ /// 更新配置参数 🔖
+ ///
+ ///
+ ///
+ [ApiDescriptionSettings(Name = "Update"), HttpPost]
+ [DisplayName("更新配置参数")]
+ [UnitOfWork]
+ public async Task UpdateConfig(UpdateConfigTenantInput input)
+ {
+ var isExist = await _sysConfigRep.IsAnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+ if (isExist) throw Oops.Oh(ErrorCodeEnum.D9000);
+
+ //// 若修改国密SM2密匙则密码重新加密
+ //if (input.Code == ConfigConst.SysSM2Key && CryptogramUtil.CryptoType == CryptogramEnum.SM2.ToString())
+ //{
+ // var sysUserRep = _sysConfigRep.ChangeRepository>();
+ // var sysUsers = await sysUserRep.AsQueryable().Select(u => new { u.Id, u.Password }).ToListAsync();
+ // foreach(var user in sysUsers)
+ // {
+ // user.Password = CryptogramUtil.Encrypt(CryptogramUtil.Decrypt(user.Password));
+ // }
+ // await sysUserRep.AsUpdateable(sysUsers).UpdateColumns(u => new { u.Password }).ExecuteCommandAsync();
+ //}
+
+ var config = input.Adapt();
+ await _sysConfigRep.AsUpdateable(config).IgnoreColumns(true).ExecuteCommandAsync();
+
+ RemoveConfigCache(config);
+ }
+
+ ///
+ /// 删除配置参数 🔖
+ ///
+ ///
+ ///
+ [ApiDescriptionSettings(Name = "Delete"), HttpPost]
+ [DisplayName("删除配置参数")]
+ public async Task DeleteConfig(DeleteConfigTenantInput input)
+ {
+ var config = await _sysConfigRep.GetByIdAsync(input.Id);
+ // 禁止删除系统参数
+ if (config.SysFlag == YesNoEnum.Y) throw Oops.Oh(ErrorCodeEnum.D9001);
+
+ await _sysConfigRep.DeleteAsync(config);
+
+ RemoveConfigCache(config);
+ }
+
+ ///
+ /// 批量删除配置参数 🔖
+ ///
+ ///
+ ///
+ [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
+ [DisplayName("批量删除配置参数")]
+ public async Task BatchDeleteConfig(List ids)
+ {
+ foreach (var id in ids)
+ {
+ var config = await _sysConfigRep.GetByIdAsync(id);
+ // 禁止删除系统参数
+ if (config.SysFlag == YesNoEnum.Y) continue;
+
+ await _sysConfigRep.DeleteAsync(config);
+
+ RemoveConfigCache(config);
+ }
+ }
+
+ ///
+ /// 获取配置参数详情 🔖
+ ///
+ ///
+ ///
+ [DisplayName("获取配置参数详情")]
+ public async Task GetDetail([FromQuery] ConfigTenantInput input)
+ {
+ return await _sysConfigRep.GetByIdAsync(input.Id);
+ }
+
+ ///
+ /// 根据Code获取配置参数
+ ///
+ ///
+ ///
+ [NonAction]
+ public async Task GetConfig(string code)
+ {
+ return await _sysConfigRep.GetFirstAsync(u => u.Code == code);
+ }
+
+ ///
+ /// 根据Code获取配置参数值 🔖
+ ///
+ ///
+ ///
+ [DisplayName("根据Code获取配置参数值")]
+ public async Task GetConfigValueByCode(string code)
+ {
+ return await GetConfigValueByCode(code);
+ }
+
+ ///
+ /// 获取配置参数值
+ ///
+ ///
+ ///
+ [NonAction]
+ public async Task GetConfigValueByCode(string code)
+ {
+ if (string.IsNullOrWhiteSpace(code)) return default;
+
+ var value = _sysCacheService.Get($"{CacheConst.KeyConfig}{code}");
+ if (string.IsNullOrEmpty(value))
+ {
+ value = (await _sysConfigRep.CopyNew().GetFirstAsync(u => u.Code == code))?.Value;
+ _sysCacheService.Set($"{CacheConst.KeyConfig}{code}", value);
+ }
+ if (string.IsNullOrWhiteSpace(value)) return default;
+ return (T)Convert.ChangeType(value, typeof(T));
+ }
+
+ ///
+ /// 更新配置参数值
+ ///
+ ///
+ ///
+ ///
+ [NonAction]
+ public async Task UpdateConfigValue(string code, string value)
+ {
+ var config = await _sysConfigRep.GetFirstAsync(u => u.Code == code);
+ if (config == null) return;
+
+ config.Value = value;
+ await _sysConfigRep.AsUpdateable(config).ExecuteCommandAsync();
+
+ RemoveConfigCache(config);
+ }
+
+ ///
+ /// 获取分组列表 🔖
+ ///
+ ///
+ [DisplayName("获取分组列表")]
+ public async Task> GetGroupList()
+ {
+ return await _sysConfigRep.AsQueryable()
+ .Where(u => u.GroupCode != ConfigConst.SysWebConfigGroup || u.GroupCode == null) // 不显示 WebConfig 分组
+ .GroupBy(u => u.GroupCode)
+ .Select(u => u.GroupCode).ToListAsync();
+ }
+
+ ///
+ /// 批量更新配置参数值 🔖
+ ///
+ ///
+ ///
+ [ApiDescriptionSettings(Name = "BatchUpdate"), HttpPost]
+ [DisplayName("批量更新配置参数值")]
+ public async Task BatchUpdateConfig(List input)
+ {
+ foreach (var config in input)
+ {
+ var configInfo = await _sysConfigRep.GetFirstAsync(u => u.Code == config.Code);
+ if (configInfo == null) continue;
+
+ await _sysConfigRep.AsUpdateable().SetColumns(u => u.Value == config.Value).Where(u => u.Code == config.Code).ExecuteCommandAsync();
+ RemoveConfigCache(configInfo);
+ }
+ }
+
+ ///
+ /// 清除配置缓存
+ ///
+ ///
+ private void RemoveConfigCache(SysConfigTenant config)
+ {
+ _sysCacheService.Remove($"{CacheConst.KeyConfig}Value:{config.Code}");
+ _sysCacheService.Remove($"{CacheConst.KeyConfig}Remark:{config.Code}");
+ _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.GroupCode}:GroupWithCache");
+ _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.Code}");
+ }
+}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictDataInput.cs b/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictDataInput.cs
index fa757d05..9a56ae79 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictDataInput.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictDataInput.cs
@@ -18,9 +18,9 @@ public class PageDictDataInput : BasePageInput
public long DictTypeId { get; set; }
///
- /// 值
+ /// 文本
///
- public string Value { get; set; }
+ public string Label { get; set; }
///
/// 编码
@@ -52,10 +52,10 @@ public class GetDataDictDataInput
public class QueryDictDataInput
{
///
- /// 编码
+ /// 值
///
- [Required(ErrorMessage = "字典唯一编码不能为空")]
- public string Code { get; set; }
+ [Required(ErrorMessage = "字典值不能为空")]
+ public string Value { get; set; }
///
/// 状态
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
index 68978974..ff87762d 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
@@ -13,6 +13,7 @@ namespace Admin.NET.Core.Service;
public class SysDictDataService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _sysDictDataRep;
+ public readonly ISugarQueryable VSysDictData;
private readonly SysCacheService _sysCacheService;
private readonly UserManager _userManager;
@@ -23,6 +24,10 @@ public class SysDictDataService : IDynamicApiController, ITransient
_userManager = userManager;
_sysDictDataRep = sysDictDataRep;
_sysCacheService = sysCacheService;
+ VSysDictData = _sysDictDataRep.Context.UnionAll(
+ _sysDictDataRep.AsQueryable(),
+ _sysDictDataRep.Change().AsQueryable()
+ .Select());
}
///
@@ -33,11 +38,11 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("获取字典值分页列表")]
public async Task> Page(PageDictDataInput input)
{
- return await _sysDictDataRep.AsQueryable()
+ return await VSysDictData
.Where(u => u.DictTypeId == input.DictTypeId)
.WhereIF(!string.IsNullOrEmpty(input.Code?.Trim()), u => u.Code.Contains(input.Code))
- .WhereIF(!string.IsNullOrEmpty(input.Value?.Trim()), u => u.Value.Contains(input.Value))
- .OrderBy(u => new { u.TenantId, u.OrderNo, u.Code })
+ .WhereIF(!string.IsNullOrEmpty(input.Label?.Trim()), u => u.Label.Contains(input.Label))
+ .OrderBy(u => new { u.OrderNo, u.Code })
.ToPagedListAsync(input.Page, input.PageSize);
}
@@ -60,14 +65,16 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("增加字典值")]
public async Task AddDictData(AddDictDataInput input)
{
- var isExist = await _sysDictDataRep.IsAnyAsync(u => u.Code == input.Code && u.DictTypeId == input.DictTypeId);
+ var isExist = await VSysDictData.AnyAsync(u => u.Code == input.Code && u.DictTypeId == input.DictTypeId);
if (isExist) throw Oops.Oh(ErrorCodeEnum.D3003);
var dictType = await _sysDictDataRep.Change().GetByIdAsync(input.DictTypeId);
if (dictType.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D3008);
_sysCacheService.Remove($"{CacheConst.KeyDict}{dictType.Code}");
- await _sysDictDataRep.InsertAsync(input.Adapt());
+
+ dynamic dictData = dictType.IsTenant == YesNoEnum.Y ? input.Adapt() : input.Adapt();
+ await _sysDictDataRep.Context.Insertable(dictData).ExecuteCommandAsync();
}
///
@@ -80,17 +87,18 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("更新字典值")]
public async Task UpdateDictData(UpdateDictDataInput input)
{
- var isExist = await _sysDictDataRep.IsAnyAsync(u => u.Id == input.Id);
+ var isExist = await VSysDictData.AnyAsync(u => u.Id == input.Id);
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3004);
- isExist = await _sysDictDataRep.IsAnyAsync(u => u.Code == input.Code && u.DictTypeId == input.DictTypeId && u.Id != input.Id);
+ isExist = await VSysDictData.AnyAsync(u => u.Code == input.Code && u.DictTypeId == input.DictTypeId && u.Id != input.Id);
if (isExist) throw Oops.Oh(ErrorCodeEnum.D3003);
var dictType = await _sysDictDataRep.Change().GetByIdAsync(input.DictTypeId);
if (dictType.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D3009);
_sysCacheService.Remove($"{CacheConst.KeyDict}{dictType.Code}");
- await _sysDictDataRep.UpdateAsync(input.Adapt());
+ dynamic dictData = dictType.IsTenant == YesNoEnum.Y ? input.Adapt() : input.Adapt();
+ await _sysDictDataRep.Context.Updateable(dictData).ExecuteCommandAsync();
}
///
@@ -103,13 +111,14 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("删除字典值")]
public async Task DeleteDictData(DeleteDictDataInput input)
{
- var dictData = await _sysDictDataRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D3004);
+ var dictData = await VSysDictData.FirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D3004);
var dictType = await _sysDictDataRep.Change().GetByIdAsync(dictData.DictTypeId);
if (dictType.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D3010);
_sysCacheService.Remove($"{CacheConst.KeyDict}{dictType.Code}");
- await _sysDictDataRep.DeleteAsync(dictData);
+ dynamic entity = dictType.IsTenant == YesNoEnum.Y ? input.Adapt() : input.Adapt();
+ await _sysDictDataRep.Context.Deleteable(entity).ExecuteCommandAsync();
}
///
@@ -120,7 +129,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("获取字典值详情")]
public async Task GetDetail([FromQuery] DictDataInput input)
{
- return await _sysDictDataRep.GetByIdAsync(input.Id);
+ return (await VSysDictData.FirstAsync(u => u.Id == input.Id))?.Adapt();
}
///
@@ -132,7 +141,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("修改字典值状态")]
public async Task SetStatus(DictDataInput input)
{
- var dictData = await _sysDictDataRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D3004);
+ var dictData = await VSysDictData.FirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D3004);
var dictType = await _sysDictDataRep.Change().GetByIdAsync(dictData.DictTypeId);
if (dictType.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D3009);
@@ -140,7 +149,8 @@ public class SysDictDataService : IDynamicApiController, ITransient
_sysCacheService.Remove($"{CacheConst.KeyDict}{dictType.Code}");
dictData.Status = input.Status;
- await _sysDictDataRep.AsUpdateable(dictData).UpdateColumns(u => new { u.Status }, true).ExecuteCommandAsync();
+ dynamic entity = dictType.IsTenant == YesNoEnum.Y ? input.Adapt() : input.Adapt();
+ await _sysDictDataRep.Context.Updateable(entity).ExecuteCommandAsync();
}
///
@@ -151,18 +161,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
[NonAction]
public async Task> GetDictDataListByDictTypeId(long dictTypeId)
{
- var dictType = await _sysDictDataRep.Change().GetByIdAsync(dictTypeId);
- var dictDataList = _sysCacheService.Get>($"{CacheConst.KeyDict}{dictType.Code}");
-
- if (dictDataList == null)
- {
- dictDataList = await _sysDictDataRep.AsQueryable().ClearFilter()
- .InnerJoin((u, a) => u.DictTypeId == a.Id)
- .Where((u, a) => a.SysFlag == YesNoEnum.Y || u.TenantId == _userManager.TenantId)
- .Where(u => u.DictTypeId == dictTypeId).OrderBy(u => new { u.OrderNo, u.Code }).ToListAsync();
- _sysCacheService.Set($"{CacheConst.KeyDict}{dictType.Code}", dictDataList);
- }
- return dictDataList;
+ return await GetDataListByIdOrCode(dictTypeId, null);
}
///
@@ -173,16 +172,41 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("根据字典类型编码获取字典值集合")]
public async Task> GetDataList(string code)
{
- var dictDataList = _sysCacheService.Get>($"{CacheConst.KeyDict}{code}");
+ return await GetDataListByIdOrCode(null, code);
+ }
+
+ ///
+ /// 获取字典值集合 🔖
+ ///
+ ///
+ ///
+ ///
+ [NonAction]
+ public async Task> GetDataListByIdOrCode(long? typeId, string code)
+ {
+ if (string.IsNullOrWhiteSpace(code) && typeId == null ||
+ !string.IsNullOrWhiteSpace(code) && typeId != null)
+ throw Oops.Oh(ErrorCodeEnum.D3011);
+
+ var dictType = await _sysDictDataRep.Change().AsQueryable()
+ .WhereIF(!string.IsNullOrWhiteSpace(code), u => u.Code == code)
+ .WhereIF(typeId != null, u => u.Id == typeId)
+ .FirstAsync();
+ if (dictType == null) return null;
+
+ var dictDataList = _sysCacheService.Get>($"{CacheConst.KeyDict}{dictType.Code}");
if (dictDataList == null)
{
- dictDataList = await _sysDictDataRep.Change().AsQueryable()
- .LeftJoin((u, a) => u.Id == a.DictTypeId).ClearFilter()
- .Where((u, a) => u.SysFlag == YesNoEnum.Y || a.TenantId == _userManager.TenantId)
- .Where((u, a) => u.Code == code && u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
- .OrderBy((u, a) => new { a.OrderNo, a.Code })
- .Select((u, a) => a).ToListAsync();
- _sysCacheService.Set($"{CacheConst.KeyDict}{code}", dictDataList);
+
+ dictDataList = await VSysDictData.InnerJoin((u, a) => u.DictTypeId == a.Id)
+ .Where(u => u.DictTypeId == dictType.Id)
+ .Select((u, a) => new SysDictData
+ {
+ Status = u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable ? StatusEnum.Enable : StatusEnum.Disable,
+ }, true)
+ .OrderBy(u => new { u.OrderNo, u.Code })
+ .ToListAsync();
+ _sysCacheService.Set($"{CacheConst.KeyDict}{dictType.Code}", dictDataList);
}
return dictDataList;
}
@@ -195,13 +219,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
[DisplayName("根据查询条件获取字典值集合")]
public async Task> GetDataList([FromQuery] QueryDictDataInput input)
{
- return await _sysDictDataRep.Change().AsQueryable()
- .LeftJoin((u, a) => u.Id == a.DictTypeId).ClearFilter()
- .Where((u, a) => u.SysFlag == YesNoEnum.Y || a.TenantId == _userManager.TenantId)
- .Where((u, a) => u.Code == input.Code)
- .WhereIF(input.Status.HasValue, (u, a) => u.Status == (StatusEnum)input.Status.Value && a.Status == (StatusEnum)input.Status.Value)
- .OrderBy((u, a) => new { a.OrderNo, a.Code })
- .Select((u, a) => a).ToListAsync();
+ var dataList = await GetDataList(input.Value);
+ if (input.Status.HasValue) return dataList.Where(u => u.Status == (StatusEnum)input.Status.Value).ToList();
+ return dataList;
}
///
@@ -212,9 +232,12 @@ public class SysDictDataService : IDynamicApiController, ITransient
[NonAction]
public async Task DeleteDictData(long dictTypeId)
{
- var dictTypeCode = await _sysDictDataRep.AsQueryable().Where(u => u.DictTypeId == dictTypeId).Select(u => u.DictType.Code).FirstAsync();
- _sysCacheService.Remove($"{CacheConst.KeyDict}{dictTypeCode}");
+ var dictType = await _sysDictDataRep.Change().AsQueryable().Where(u => u.Id == dictTypeId).FirstAsync();
+ _sysCacheService.Remove($"{CacheConst.KeyDict}{dictType?.Code}");
- await _sysDictDataRep.DeleteAsync(u => u.DictTypeId == dictTypeId);
+ if (dictType?.IsTenant == YesNoEnum.Y)
+ await _sysDictDataRep.Change().DeleteAsync(u => u.DictTypeId == dictTypeId);
+ else
+ await _sysDictDataRep.DeleteAsync(u => u.DictTypeId == dictTypeId);
}
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
index b08d6015..66e3fffa 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
@@ -36,7 +36,7 @@ public class SysDictTypeService : IDynamicApiController, ITransient
public async Task> Page(PageDictTypeInput input)
{
return await _sysDictTypeRep.AsQueryable()
- .WhereIF(!_userManager.SuperAdmin, u => u.SysFlag == YesNoEnum.N)
+ .WhereIF(!_userManager.SuperAdmin, u => u.IsTenant == YesNoEnum.Y)
.WhereIF(!string.IsNullOrEmpty(input.Code?.Trim()), u => u.Code.Contains(input.Code))
.WhereIF(!string.IsNullOrEmpty(input.Name?.Trim()), u => u.Name.Contains(input.Name))
.OrderBy(u => new { u.OrderNo, u.Code })
@@ -94,6 +94,7 @@ public class SysDictTypeService : IDynamicApiController, ITransient
public async Task UpdateDictType(UpdateDictTypeInput input)
{
var dict = await _sysDictTypeRep.GetFirstAsync(x => x.Id == input.Id);
+ if (dict.IsTenant != input.IsTenant) throw Oops.Oh(ErrorCodeEnum.D3012);
if (dict == null) throw Oops.Oh(ErrorCodeEnum.D3000);
if (dict.Code.ToLower().EndsWith("enum") && input.Code != dict.Code) throw Oops.Oh(ErrorCodeEnum.D3007);
@@ -161,10 +162,9 @@ public class SysDictTypeService : IDynamicApiController, ITransient
public async Task GetAllDictList()
{
var ds = await _sysDictTypeRep.AsQueryable()
- .InnerJoin((u, a) => u.Id == a.DictTypeId).ClearFilter()
- .Where((u, a) => u.SysFlag == YesNoEnum.Y || a.TenantId == _userManager.TenantId)
- .Where((u, a) => u.IsDelete == false && a.IsDelete == false && u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
- .Select((u, a) => new { TypeCode = u.Code, a.Code, a.Name, a.Value, a.Remark, a.OrderNo, a.TagType, a.ExtData })
+ .InnerJoin(_sysDictDataService.VSysDictData, (u, a) => u.Id == a.DictTypeId)
+ .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();
return ds.OrderBy(u => u.OrderNo).GroupBy(u => u.TypeCode).ToDictionary(u => u.Key, u => u);
}
diff --git a/Admin.NET/Admin.NET.Core/Utils/CommonUtil.cs b/Admin.NET/Admin.NET.Core/Utils/CommonUtil.cs
index 1008a3eb..a2c62022 100644
--- a/Admin.NET/Admin.NET.Core/Utils/CommonUtil.cs
+++ b/Admin.NET/Admin.NET.Core/Utils/CommonUtil.cs
@@ -389,8 +389,8 @@ public static class CommonUtil
.Where((u, a) => u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
.Select((u, a) => new
{
- Label = a.Value,
- Value = a.Code
+ a.Label,
+ a.Value
}).ToList()
.ToDictionary(u => u.Label, u => u.Value.ParseTo(targetProp.PropertyType));
propMappings.Add(propertyInfo.Name, new Tuple, PropertyInfo, PropertyInfo>(mappingValues, propertyInfo, targetProp));
@@ -431,8 +431,8 @@ public static class CommonUtil
.Where((u, a) => u.Status == StatusEnum.Enable && a.Status == StatusEnum.Enable)
.Select((u, a) => new
{
- Label = a.Value,
- Value = a.Code
+ a.Label,
+ a.Value
}).ToList()
.ToDictionary(u => u.Value.ParseTo(targetProp.PropertyType), u => u.Label);
propMappings.Add(propertyInfo.Name, new Tuple, PropertyInfo, PropertyInfo>(mappingValues, targetProp, propertyInfo));
diff --git a/Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs b/Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs
index b073bff1..a15a5a52 100644
--- a/Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs
+++ b/Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs
@@ -115,8 +115,8 @@ public class ExcelHelper
var dict = prop.GetCustomAttribute();
if (dict != null)
{
- // 填充字典值value为下列列表
- dataList = sysDictTypeService.GetDataList(new GetDataDictTypeInput { Code = dict.DictTypeCode }).Result?.Select(u => u.Value).ToList();
+ // 填充字典值value为下拉列表
+ dataList = sysDictTypeService.GetDataList(new GetDataDictTypeInput { Code = dict.DictTypeCode }).Result?.Select(u => u.Label).ToList();
}
}
}
diff --git a/Web/src/api-services/api.ts b/Web/src/api-services/api.ts
index ab72a5ab..da9eaef6 100644
--- a/Web/src/api-services/api.ts
+++ b/Web/src/api-services/api.ts
@@ -10,8 +10,7 @@
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
- */
-export * from './apis/apijsonapi';
+ */export * from './apis/apijsonapi';
export * from './apis/sys-alipay-api';
export * from './apis/sys-auth-api';
export * from './apis/sys-cache-api';
@@ -20,6 +19,7 @@ export * from './apis/sys-code-gen-config-api';
export * from './apis/sys-code-gen-template-api';
export * from './apis/sys-common-api';
export * from './apis/sys-config-api';
+export * from './apis/sys-config-tenant-api';
export * from './apis/sys-const-api';
export * from './apis/sys-database-api';
export * from './apis/sys-db-backup-api';
diff --git a/Web/src/api-services/apis/sys-config-tenant-api.ts b/Web/src/api-services/apis/sys-config-tenant-api.ts
new file mode 100644
index 00000000..690b77c0
--- /dev/null
+++ b/Web/src/api-services/apis/sys-config-tenant-api.ts
@@ -0,0 +1,890 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
+import { Configuration } from '../configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { AddConfigTenantInput } from '../models';
+import { AdminNETResultListString } from '../models';
+import { AdminNETResultListSysConfigTenant } from '../models';
+import { AdminNETResultSqlSugarPagedListSysConfigTenant } from '../models';
+import { AdminNETResultString } from '../models';
+import { AdminNETResultSysConfigTenant } from '../models';
+import { BatchConfigTenantInput } from '../models';
+import { DeleteConfigTenantInput } from '../models';
+import { PageConfigTenantInput } from '../models';
+import { UpdateConfigTenantInput } from '../models';
+/**
+ * SysConfigTenantApi - axios parameter creator
+ * @export
+ */
+export const SysConfigTenantApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary 增加配置参数 🔖
+ * @param {AddConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantAddPost: async (body?: AddConfigTenantInput, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/add`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 批量删除配置参数 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantBatchDeletePost: async (body?: Array, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/batchDelete`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 批量更新配置参数值 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantBatchUpdatePost: async (body?: Array, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/batchUpdate`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 根据Code获取配置参数值 🔖
+ * @param {string} code
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantConfigValueByCodeCodeGet: async (code: string, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'code' is not null or undefined
+ if (code === null || code === undefined) {
+ throw new RequiredError('code','Required parameter code was null or undefined when calling apiSysConfigTenantConfigValueByCodeCodeGet.');
+ }
+ const localVarPath = `/api/sysConfigTenant/configValueByCode/{code}`
+ .replace(`{${"code"}}`, encodeURIComponent(String(code)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 删除配置参数 🔖
+ * @param {DeleteConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantDeletePost: async (body?: DeleteConfigTenantInput, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/delete`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数详情 🔖
+ * @param {number} id 主键Id
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantDetailGet: async (id: number, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'id' is not null or undefined
+ if (id === null || id === undefined) {
+ throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysConfigTenantDetailGet.');
+ }
+ const localVarPath = `/api/sysConfigTenant/detail`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ if (id !== undefined) {
+ localVarQueryParameter['Id'] = id;
+ }
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 获取分组列表 🔖
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantGroupListGet: async (options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/groupList`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantListPost: async (body?: PageConfigTenantInput, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/list`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数分页列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantPagePost: async (body?: PageConfigTenantInput, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/page`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary 更新配置参数 🔖
+ * @param {UpdateConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ apiSysConfigTenantUpdatePost: async (body?: UpdateConfigTenantInput, options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/sysConfigTenant/update`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication Bearer required
+ // http bearer authentication required
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
+ }
+
+ localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * SysConfigTenantApi - functional programming interface
+ * @export
+ */
+export const SysConfigTenantApiFp = function(configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary 增加配置参数 🔖
+ * @param {AddConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantAddPost(body?: AddConfigTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantAddPost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 批量删除配置参数 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantBatchDeletePost(body?: Array, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantBatchDeletePost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 批量更新配置参数值 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantBatchUpdatePost(body?: Array, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantBatchUpdatePost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 根据Code获取配置参数值 🔖
+ * @param {string} code
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantConfigValueByCodeCodeGet(code: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantConfigValueByCodeCodeGet(code, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 删除配置参数 🔖
+ * @param {DeleteConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantDeletePost(body?: DeleteConfigTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantDeletePost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数详情 🔖
+ * @param {number} id 主键Id
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantDetailGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantDetailGet(id, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 获取分组列表 🔖
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantGroupListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantGroupListGet(options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantListPost(body?: PageConfigTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantListPost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 获取配置参数分页列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantPagePost(body?: PageConfigTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantPagePost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @summary 更新配置参数 🔖
+ * @param {UpdateConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantUpdatePost(body?: UpdateConfigTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysConfigTenantApiAxiosParamCreator(configuration).apiSysConfigTenantUpdatePost(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ }
+};
+
+/**
+ * SysConfigTenantApi - factory interface
+ * @export
+ */
+export const SysConfigTenantApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ return {
+ /**
+ *
+ * @summary 增加配置参数 🔖
+ * @param {AddConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantAddPost(body?: AddConfigTenantInput, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantAddPost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 批量删除配置参数 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantBatchDeletePost(body?: Array, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantBatchDeletePost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 批量更新配置参数值 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantBatchUpdatePost(body?: Array, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantBatchUpdatePost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 根据Code获取配置参数值 🔖
+ * @param {string} code
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantConfigValueByCodeCodeGet(code: string, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantConfigValueByCodeCodeGet(code, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 删除配置参数 🔖
+ * @param {DeleteConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantDeletePost(body?: DeleteConfigTenantInput, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantDeletePost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 获取配置参数详情 🔖
+ * @param {number} id 主键Id
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantDetailGet(id: number, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantDetailGet(id, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 获取分组列表 🔖
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantGroupListGet(options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantGroupListGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 获取配置参数列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantListPost(body?: PageConfigTenantInput, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantListPost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 获取配置参数分页列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantPagePost(body?: PageConfigTenantInput, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantPagePost(body, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary 更新配置参数 🔖
+ * @param {UpdateConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async apiSysConfigTenantUpdatePost(body?: UpdateConfigTenantInput, options?: AxiosRequestConfig): Promise> {
+ return SysConfigTenantApiFp(configuration).apiSysConfigTenantUpdatePost(body, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * SysConfigTenantApi - object-oriented interface
+ * @export
+ * @class SysConfigTenantApi
+ * @extends {BaseAPI}
+ */
+export class SysConfigTenantApi extends BaseAPI {
+ /**
+ *
+ * @summary 增加配置参数 🔖
+ * @param {AddConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantAddPost(body?: AddConfigTenantInput, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantAddPost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 批量删除配置参数 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantBatchDeletePost(body?: Array, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantBatchDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 批量更新配置参数值 🔖
+ * @param {Array} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantBatchUpdatePost(body?: Array, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantBatchUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 根据Code获取配置参数值 🔖
+ * @param {string} code
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantConfigValueByCodeCodeGet(code: string, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantConfigValueByCodeCodeGet(code, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 删除配置参数 🔖
+ * @param {DeleteConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantDeletePost(body?: DeleteConfigTenantInput, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 获取配置参数详情 🔖
+ * @param {number} id 主键Id
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantDetailGet(id: number, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantDetailGet(id, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 获取分组列表 🔖
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantGroupListGet(options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantGroupListGet(options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 获取配置参数列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantListPost(body?: PageConfigTenantInput, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantListPost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 获取配置参数分页列表 🔖
+ * @param {PageConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantPagePost(body?: PageConfigTenantInput, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantPagePost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @summary 更新配置参数 🔖
+ * @param {UpdateConfigTenantInput} [body]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof SysConfigTenantApi
+ */
+ public async apiSysConfigTenantUpdatePost(body?: UpdateConfigTenantInput, options?: AxiosRequestConfig) : Promise> {
+ return SysConfigTenantApiFp(this.configuration).apiSysConfigTenantUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
+ }
+}
diff --git a/Web/src/api-services/apis/sys-dict-data-api.ts b/Web/src/api-services/apis/sys-dict-data-api.ts
index bf89a469..e0e7b5f8 100644
--- a/Web/src/api-services/apis/sys-dict-data-api.ts
+++ b/Web/src/api-services/apis/sys-dict-data-api.ts
@@ -11,7 +11,6 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
import { Configuration } from '../configuration';
// Some imports not used depending on template conditions
@@ -132,15 +131,15 @@ export const SysDictDataApiAxiosParamCreator = function (configuration?: Configu
/**
*
* @summary 根据查询条件获取字典值集合 🔖
- * @param {string} code 编码
+ * @param {string} value 值
* @param {number} [status] 状态
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- apiSysDictDataDataListGet: async (code: string, status?: number, options: AxiosRequestConfig = {}): Promise => {
- // verify required parameter 'code' is not null or undefined
- if (code === null || code === undefined) {
- throw new RequiredError('code','Required parameter code was null or undefined when calling apiSysDictDataDataListGet.');
+ apiSysDictDataDataListGet: async (value: string, status?: number, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'value' is not null or undefined
+ if (value === null || value === undefined) {
+ throw new RequiredError('value','Required parameter value was null or undefined when calling apiSysDictDataDataListGet.');
}
const localVarPath = `/api/sysDictData/dataList`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
@@ -162,8 +161,8 @@ export const SysDictDataApiAxiosParamCreator = function (configuration?: Configu
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
}
- if (code !== undefined) {
- localVarQueryParameter['Code'] = code;
+ if (value !== undefined) {
+ localVarQueryParameter['Value'] = value;
}
if (status !== undefined) {
@@ -527,13 +526,13 @@ export const SysDictDataApiFp = function(configuration?: Configuration) {
/**
*
* @summary 根据查询条件获取字典值集合 🔖
- * @param {string} code 编码
+ * @param {string} value 值
* @param {number} [status] 状态
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async apiSysDictDataDataListGet(code: string, status?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
- const localVarAxiosArgs = await SysDictDataApiAxiosParamCreator(configuration).apiSysDictDataDataListGet(code, status, options);
+ async apiSysDictDataDataListGet(value: string, status?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysDictDataApiAxiosParamCreator(configuration).apiSysDictDataDataListGet(value, status, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
@@ -656,13 +655,13 @@ export const SysDictDataApiFactory = function (configuration?: Configuration, ba
/**
*
* @summary 根据查询条件获取字典值集合 🔖
- * @param {string} code 编码
+ * @param {string} value 值
* @param {number} [status] 状态
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async apiSysDictDataDataListGet(code: string, status?: number, options?: AxiosRequestConfig): Promise> {
- return SysDictDataApiFp(configuration).apiSysDictDataDataListGet(code, status, options).then((request) => request(axios, basePath));
+ async apiSysDictDataDataListGet(value: string, status?: number, options?: AxiosRequestConfig): Promise> {
+ return SysDictDataApiFp(configuration).apiSysDictDataDataListGet(value, status, options).then((request) => request(axios, basePath));
},
/**
*
@@ -760,14 +759,14 @@ export class SysDictDataApi extends BaseAPI {
/**
*
* @summary 根据查询条件获取字典值集合 🔖
- * @param {string} code 编码
+ * @param {string} value 值
* @param {number} [status] 状态
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysDictDataApi
*/
- public async apiSysDictDataDataListGet(code: string, status?: number, options?: AxiosRequestConfig) : Promise> {
- return SysDictDataApiFp(this.configuration).apiSysDictDataDataListGet(code, status, options).then((request) => request(this.axios, this.basePath));
+ public async apiSysDictDataDataListGet(value: string, status?: number, options?: AxiosRequestConfig) : Promise> {
+ return SysDictDataApiFp(this.configuration).apiSysDictDataDataListGet(value, status, options).then((request) => request(this.axios, this.basePath));
}
/**
*
diff --git a/Web/src/api-services/models/add-config-tenant-input.ts b/Web/src/api-services/models/add-config-tenant-input.ts
new file mode 100644
index 00000000..293c02c2
--- /dev/null
+++ b/Web/src/api-services/models/add-config-tenant-input.ts
@@ -0,0 +1,117 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { YesNoEnum } from './yes-no-enum';
+/**
+ *
+ * @export
+ * @interface AddConfigTenantInput
+ */
+export interface AddConfigTenantInput {
+ /**
+ * 雪花Id
+ * @type {number}
+ * @memberof AddConfigTenantInput
+ */
+ id?: number;
+ /**
+ * 创建时间
+ * @type {Date}
+ * @memberof AddConfigTenantInput
+ */
+ createTime?: Date;
+ /**
+ * 更新时间
+ * @type {Date}
+ * @memberof AddConfigTenantInput
+ */
+ updateTime?: Date | null;
+ /**
+ * 创建者Id
+ * @type {number}
+ * @memberof AddConfigTenantInput
+ */
+ createUserId?: number | null;
+ /**
+ * 创建者姓名
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ createUserName?: string | null;
+ /**
+ * 修改者Id
+ * @type {number}
+ * @memberof AddConfigTenantInput
+ */
+ updateUserId?: number | null;
+ /**
+ * 修改者姓名
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ updateUserName?: string | null;
+ /**
+ * 软删除
+ * @type {boolean}
+ * @memberof AddConfigTenantInput
+ */
+ isDelete?: boolean;
+ /**
+ * 租户Id
+ * @type {number}
+ * @memberof AddConfigTenantInput
+ */
+ tenantId?: number | null;
+ /**
+ * 名称
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ name: string;
+ /**
+ * 编码
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ code?: string | null;
+ /**
+ * 参数值
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ value?: string | null;
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof AddConfigTenantInput
+ */
+ sysFlag?: YesNoEnum;
+ /**
+ * 分组编码
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ groupCode?: string | null;
+ /**
+ * 排序
+ * @type {number}
+ * @memberof AddConfigTenantInput
+ */
+ orderNo?: number;
+ /**
+ * 备注
+ * @type {string}
+ * @memberof AddConfigTenantInput
+ */
+ remark?: string | null;
+}
diff --git a/Web/src/api-services/models/add-dict-data-input.ts b/Web/src/api-services/models/add-dict-data-input.ts
index dd3d9722..836bf349 100644
--- a/Web/src/api-services/models/add-dict-data-input.ts
+++ b/Web/src/api-services/models/add-dict-data-input.ts
@@ -11,169 +11,123 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
- /**
+/**
*
- *
* @export
* @interface AddDictDataInput
*/
export interface AddDictDataInput {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof AddDictDataInput
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof AddDictDataInput
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof AddDictDataInput
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof AddDictDataInput
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof AddDictDataInput
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof AddDictDataInput
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof AddDictDataInput
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof AddDictDataInput
*/
isDelete?: boolean;
-
- /**
- * 租户Id
- *
- * @type {number}
- * @memberof AddDictDataInput
- */
- tenantId?: number | null;
-
/**
* 字典类型Id
- *
* @type {number}
* @memberof AddDictDataInput
*/
dictTypeId?: number;
-
+ /**
+ * 显示文本
+ * @type {string}
+ * @memberof AddDictDataInput
+ */
+ label: string;
/**
* 值
- *
* @type {string}
* @memberof AddDictDataInput
*/
value: string;
-
/**
* 编码
- *
* @type {string}
* @memberof AddDictDataInput
*/
- code: string;
-
- /**
- * 名称
- *
- * @type {string}
- * @memberof AddDictDataInput
- */
- name?: string | null;
-
+ code?: string | null;
/**
* 显示样式-标签颜色
- *
* @type {string}
* @memberof AddDictDataInput
*/
tagType?: string | null;
-
/**
* 显示样式-Style(控制显示样式)
- *
* @type {string}
* @memberof AddDictDataInput
*/
styleSetting?: string | null;
-
/**
* 显示样式-Class(控制显示样式)
- *
* @type {string}
* @memberof AddDictDataInput
*/
classSetting?: string | null;
-
/**
* 排序
- *
* @type {number}
* @memberof AddDictDataInput
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof AddDictDataInput
*/
remark?: string | null;
-
/**
* 拓展数据(保存业务功能的配置项)
- *
* @type {string}
* @memberof AddDictDataInput
*/
extData?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof AddDictDataInput
*/
diff --git a/Web/src/api-services/models/add-dict-type-input.ts b/Web/src/api-services/models/add-dict-type-input.ts
index 89cf5632..6bf5d9c1 100644
--- a/Web/src/api-services/models/add-dict-type-input.ts
+++ b/Web/src/api-services/models/add-dict-type-input.ts
@@ -11,129 +11,107 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
import { SysDictData } from './sys-dict-data';
import { YesNoEnum } from './yes-no-enum';
- /**
+/**
*
- *
* @export
* @interface AddDictTypeInput
*/
export interface AddDictTypeInput {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof AddDictTypeInput
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof AddDictTypeInput
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof AddDictTypeInput
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof AddDictTypeInput
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof AddDictTypeInput
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof AddDictTypeInput
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof AddDictTypeInput
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof AddDictTypeInput
*/
isDelete?: boolean;
-
/**
* 名称
- *
* @type {string}
* @memberof AddDictTypeInput
*/
name: string;
-
/**
* 编码
- *
* @type {string}
* @memberof AddDictTypeInput
*/
code: string;
-
/**
* 排序
- *
* @type {number}
* @memberof AddDictTypeInput
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof AddDictTypeInput
*/
remark?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof AddDictTypeInput
*/
status?: StatusEnum;
-
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof AddDictTypeInput
+ */
+ isTenant?: YesNoEnum;
/**
* 字典值集合
- *
* @type {Array}
* @memberof AddDictTypeInput
*/
children?: Array | null;
-
/**
+ *
* @type {YesNoEnum}
* @memberof AddDictTypeInput
*/
diff --git a/Web/src/api-services/models/admin-netresult-list-sys-config-tenant.ts b/Web/src/api-services/models/admin-netresult-list-sys-config-tenant.ts
new file mode 100644
index 00000000..3402812b
--- /dev/null
+++ b/Web/src/api-services/models/admin-netresult-list-sys-config-tenant.ts
@@ -0,0 +1,57 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { SysConfigTenant } from './sys-config-tenant';
+/**
+ * 全局返回结果
+ * @export
+ * @interface AdminNETResultListSysConfigTenant
+ */
+export interface AdminNETResultListSysConfigTenant {
+ /**
+ * 状态码
+ * @type {number}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ code?: number;
+ /**
+ * 类型success、warning、error
+ * @type {string}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ type?: string | null;
+ /**
+ * 错误信息
+ * @type {string}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ message?: string | null;
+ /**
+ * 数据
+ * @type {Array}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ result?: Array | null;
+ /**
+ * 附加数据
+ * @type {any}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ extras?: any | null;
+ /**
+ * 时间
+ * @type {Date}
+ * @memberof AdminNETResultListSysConfigTenant
+ */
+ time?: Date;
+}
diff --git a/Web/src/api-services/models/admin-netresult-sql-sugar-paged-list-sys-config-tenant.ts b/Web/src/api-services/models/admin-netresult-sql-sugar-paged-list-sys-config-tenant.ts
new file mode 100644
index 00000000..357c0030
--- /dev/null
+++ b/Web/src/api-services/models/admin-netresult-sql-sugar-paged-list-sys-config-tenant.ts
@@ -0,0 +1,57 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { SqlSugarPagedListSysConfigTenant } from './sql-sugar-paged-list-sys-config-tenant';
+/**
+ * 全局返回结果
+ * @export
+ * @interface AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+export interface AdminNETResultSqlSugarPagedListSysConfigTenant {
+ /**
+ * 状态码
+ * @type {number}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ code?: number;
+ /**
+ * 类型success、warning、error
+ * @type {string}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ type?: string | null;
+ /**
+ * 错误信息
+ * @type {string}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ message?: string | null;
+ /**
+ *
+ * @type {SqlSugarPagedListSysConfigTenant}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ result?: SqlSugarPagedListSysConfigTenant;
+ /**
+ * 附加数据
+ * @type {any}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ extras?: any | null;
+ /**
+ * 时间
+ * @type {Date}
+ * @memberof AdminNETResultSqlSugarPagedListSysConfigTenant
+ */
+ time?: Date;
+}
diff --git a/Web/src/api-services/models/admin-netresult-sys-config-tenant.ts b/Web/src/api-services/models/admin-netresult-sys-config-tenant.ts
new file mode 100644
index 00000000..5af7a593
--- /dev/null
+++ b/Web/src/api-services/models/admin-netresult-sys-config-tenant.ts
@@ -0,0 +1,57 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { SysConfigTenant } from './sys-config-tenant';
+/**
+ * 全局返回结果
+ * @export
+ * @interface AdminNETResultSysConfigTenant
+ */
+export interface AdminNETResultSysConfigTenant {
+ /**
+ * 状态码
+ * @type {number}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ code?: number;
+ /**
+ * 类型success、warning、error
+ * @type {string}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ type?: string | null;
+ /**
+ * 错误信息
+ * @type {string}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ message?: string | null;
+ /**
+ *
+ * @type {SysConfigTenant}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ result?: SysConfigTenant;
+ /**
+ * 附加数据
+ * @type {any}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ extras?: any | null;
+ /**
+ * 时间
+ * @type {Date}
+ * @memberof AdminNETResultSysConfigTenant
+ */
+ time?: Date;
+}
diff --git a/Web/src/api-services/models/batch-config-tenant-input.ts b/Web/src/api-services/models/batch-config-tenant-input.ts
new file mode 100644
index 00000000..4d3b4fda
--- /dev/null
+++ b/Web/src/api-services/models/batch-config-tenant-input.ts
@@ -0,0 +1,32 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 批量配置参数输入
+ * @export
+ * @interface BatchConfigTenantInput
+ */
+export interface BatchConfigTenantInput {
+ /**
+ * 编码
+ * @type {string}
+ * @memberof BatchConfigTenantInput
+ */
+ code?: string | null;
+ /**
+ * 属性值
+ * @type {string}
+ * @memberof BatchConfigTenantInput
+ */
+ value?: string | null;
+}
diff --git a/Web/src/api-services/models/delete-config-tenant-input.ts b/Web/src/api-services/models/delete-config-tenant-input.ts
new file mode 100644
index 00000000..d917a954
--- /dev/null
+++ b/Web/src/api-services/models/delete-config-tenant-input.ts
@@ -0,0 +1,26 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ *
+ * @export
+ * @interface DeleteConfigTenantInput
+ */
+export interface DeleteConfigTenantInput {
+ /**
+ * 主键Id
+ * @type {number}
+ * @memberof DeleteConfigTenantInput
+ */
+ id: number;
+}
diff --git a/Web/src/api-services/models/page-config-tenant-input.ts b/Web/src/api-services/models/page-config-tenant-input.ts
new file mode 100644
index 00000000..0a4aca12
--- /dev/null
+++ b/Web/src/api-services/models/page-config-tenant-input.ts
@@ -0,0 +1,88 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { Filter } from './filter';
+import { Search } from './search';
+/**
+ *
+ * @export
+ * @interface PageConfigTenantInput
+ */
+export interface PageConfigTenantInput {
+ /**
+ *
+ * @type {Search}
+ * @memberof PageConfigTenantInput
+ */
+ search?: Search;
+ /**
+ * 模糊查询关键字
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ keyword?: string | null;
+ /**
+ *
+ * @type {Filter}
+ * @memberof PageConfigTenantInput
+ */
+ filter?: Filter;
+ /**
+ * 当前页码
+ * @type {number}
+ * @memberof PageConfigTenantInput
+ */
+ page?: number;
+ /**
+ * 页码容量
+ * @type {number}
+ * @memberof PageConfigTenantInput
+ */
+ pageSize?: number;
+ /**
+ * 排序字段
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ field?: string | null;
+ /**
+ * 排序方向
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ order?: string | null;
+ /**
+ * 降序排序
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ descStr?: string | null;
+ /**
+ * 名称
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ name?: string | null;
+ /**
+ * 编码
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ code?: string | null;
+ /**
+ * 分组编码
+ * @type {string}
+ * @memberof PageConfigTenantInput
+ */
+ groupCode?: string | null;
+}
diff --git a/Web/src/api-services/models/page-dict-data-input.ts b/Web/src/api-services/models/page-dict-data-input.ts
index 12bed662..99c99287 100644
--- a/Web/src/api-services/models/page-dict-data-input.ts
+++ b/Web/src/api-services/models/page-dict-data-input.ts
@@ -11,96 +11,76 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { Filter } from './filter';
import { Search } from './search';
- /**
+/**
*
- *
* @export
* @interface PageDictDataInput
*/
export interface PageDictDataInput {
-
/**
+ *
* @type {Search}
* @memberof PageDictDataInput
*/
search?: Search;
-
/**
* 模糊查询关键字
- *
* @type {string}
* @memberof PageDictDataInput
*/
keyword?: string | null;
-
/**
+ *
* @type {Filter}
* @memberof PageDictDataInput
*/
filter?: Filter;
-
/**
* 当前页码
- *
* @type {number}
* @memberof PageDictDataInput
*/
page?: number;
-
/**
* 页码容量
- *
* @type {number}
* @memberof PageDictDataInput
*/
pageSize?: number;
-
/**
* 排序字段
- *
* @type {string}
* @memberof PageDictDataInput
*/
field?: string | null;
-
/**
* 排序方向
- *
* @type {string}
* @memberof PageDictDataInput
*/
order?: string | null;
-
/**
* 降序排序
- *
* @type {string}
* @memberof PageDictDataInput
*/
descStr?: string | null;
-
/**
* 字典类型Id
- *
* @type {number}
* @memberof PageDictDataInput
*/
dictTypeId?: number;
-
/**
- * 值
- *
+ * 文本
* @type {string}
* @memberof PageDictDataInput
*/
- value?: string | null;
-
+ label?: string | null;
/**
* 编码
- *
* @type {string}
* @memberof PageDictDataInput
*/
diff --git a/Web/src/api-services/models/sql-sugar-paged-list-sys-config-tenant.ts b/Web/src/api-services/models/sql-sugar-paged-list-sys-config-tenant.ts
new file mode 100644
index 00000000..1fc54211
--- /dev/null
+++ b/Web/src/api-services/models/sql-sugar-paged-list-sys-config-tenant.ts
@@ -0,0 +1,63 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { SysConfigTenant } from './sys-config-tenant';
+/**
+ * 分页泛型集合
+ * @export
+ * @interface SqlSugarPagedListSysConfigTenant
+ */
+export interface SqlSugarPagedListSysConfigTenant {
+ /**
+ * 页码
+ * @type {number}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ page?: number;
+ /**
+ * 页容量
+ * @type {number}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ pageSize?: number;
+ /**
+ * 总条数
+ * @type {number}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ total?: number;
+ /**
+ * 总页数
+ * @type {number}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ totalPages?: number;
+ /**
+ * 当前页集合
+ * @type {Array}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ items?: Array | null;
+ /**
+ * 是否有上一页
+ * @type {boolean}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ hasPrevPage?: boolean;
+ /**
+ * 是否有下一页
+ * @type {boolean}
+ * @memberof SqlSugarPagedListSysConfigTenant
+ */
+ hasNextPage?: boolean;
+}
diff --git a/Web/src/api-services/models/sys-config-tenant.ts b/Web/src/api-services/models/sys-config-tenant.ts
new file mode 100644
index 00000000..5c32ea13
--- /dev/null
+++ b/Web/src/api-services/models/sys-config-tenant.ts
@@ -0,0 +1,117 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { YesNoEnum } from './yes-no-enum';
+/**
+ * 系统租户配置参数表
+ * @export
+ * @interface SysConfigTenant
+ */
+export interface SysConfigTenant {
+ /**
+ * 雪花Id
+ * @type {number}
+ * @memberof SysConfigTenant
+ */
+ id?: number;
+ /**
+ * 创建时间
+ * @type {Date}
+ * @memberof SysConfigTenant
+ */
+ createTime?: Date;
+ /**
+ * 更新时间
+ * @type {Date}
+ * @memberof SysConfigTenant
+ */
+ updateTime?: Date | null;
+ /**
+ * 创建者Id
+ * @type {number}
+ * @memberof SysConfigTenant
+ */
+ createUserId?: number | null;
+ /**
+ * 创建者姓名
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ createUserName?: string | null;
+ /**
+ * 修改者Id
+ * @type {number}
+ * @memberof SysConfigTenant
+ */
+ updateUserId?: number | null;
+ /**
+ * 修改者姓名
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ updateUserName?: string | null;
+ /**
+ * 软删除
+ * @type {boolean}
+ * @memberof SysConfigTenant
+ */
+ isDelete?: boolean;
+ /**
+ * 租户Id
+ * @type {number}
+ * @memberof SysConfigTenant
+ */
+ tenantId?: number | null;
+ /**
+ * 名称
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ name: string;
+ /**
+ * 编码
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ code?: string | null;
+ /**
+ * 参数值
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ value?: string | null;
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof SysConfigTenant
+ */
+ sysFlag?: YesNoEnum;
+ /**
+ * 分组编码
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ groupCode?: string | null;
+ /**
+ * 排序
+ * @type {number}
+ * @memberof SysConfigTenant
+ */
+ orderNo?: number;
+ /**
+ * 备注
+ * @type {string}
+ * @memberof SysConfigTenant
+ */
+ remark?: string | null;
+}
diff --git a/Web/src/api-services/models/sys-dict-data.ts b/Web/src/api-services/models/sys-dict-data.ts
index 946f4ee8..6f1377ef 100644
--- a/Web/src/api-services/models/sys-dict-data.ts
+++ b/Web/src/api-services/models/sys-dict-data.ts
@@ -11,169 +11,123 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
- /**
+/**
* 系统字典值表
- *
* @export
* @interface SysDictData
*/
export interface SysDictData {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof SysDictData
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof SysDictData
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof SysDictData
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof SysDictData
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof SysDictData
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof SysDictData
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof SysDictData
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof SysDictData
*/
isDelete?: boolean;
-
- /**
- * 租户Id
- *
- * @type {number}
- * @memberof SysDictData
- */
- tenantId?: number | null;
-
/**
* 字典类型Id
- *
* @type {number}
* @memberof SysDictData
*/
dictTypeId?: number;
-
+ /**
+ * 显示文本
+ * @type {string}
+ * @memberof SysDictData
+ */
+ label: string;
/**
* 值
- *
* @type {string}
* @memberof SysDictData
*/
value: string;
-
/**
* 编码
- *
* @type {string}
* @memberof SysDictData
*/
- code: string;
-
- /**
- * 名称
- *
- * @type {string}
- * @memberof SysDictData
- */
- name?: string | null;
-
+ code?: string | null;
/**
* 显示样式-标签颜色
- *
* @type {string}
* @memberof SysDictData
*/
tagType?: string | null;
-
/**
* 显示样式-Style(控制显示样式)
- *
* @type {string}
* @memberof SysDictData
*/
styleSetting?: string | null;
-
/**
* 显示样式-Class(控制显示样式)
- *
* @type {string}
* @memberof SysDictData
*/
classSetting?: string | null;
-
/**
* 排序
- *
* @type {number}
* @memberof SysDictData
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof SysDictData
*/
remark?: string | null;
-
/**
* 拓展数据(保存业务功能的配置项)
- *
* @type {string}
* @memberof SysDictData
*/
extData?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof SysDictData
*/
diff --git a/Web/src/api-services/models/sys-dict-type.ts b/Web/src/api-services/models/sys-dict-type.ts
index 925b9625..dba6b12e 100644
--- a/Web/src/api-services/models/sys-dict-type.ts
+++ b/Web/src/api-services/models/sys-dict-type.ts
@@ -11,129 +11,107 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
import { SysDictData } from './sys-dict-data';
import { YesNoEnum } from './yes-no-enum';
- /**
+/**
* 系统字典类型表
- *
* @export
* @interface SysDictType
*/
export interface SysDictType {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof SysDictType
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof SysDictType
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof SysDictType
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof SysDictType
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof SysDictType
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof SysDictType
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof SysDictType
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof SysDictType
*/
isDelete?: boolean;
-
/**
* 名称
- *
* @type {string}
* @memberof SysDictType
*/
name: string;
-
/**
* 编码
- *
* @type {string}
* @memberof SysDictType
*/
code: string;
-
/**
* 排序
- *
* @type {number}
* @memberof SysDictType
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof SysDictType
*/
remark?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof SysDictType
*/
status?: StatusEnum;
-
/**
+ *
* @type {YesNoEnum}
* @memberof SysDictType
*/
sysFlag?: YesNoEnum;
-
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof SysDictType
+ */
+ isTenant?: YesNoEnum;
/**
* 字典值集合
- *
* @type {Array}
* @memberof SysDictType
*/
diff --git a/Web/src/api-services/models/update-config-tenant-input.ts b/Web/src/api-services/models/update-config-tenant-input.ts
new file mode 100644
index 00000000..fdad1a6f
--- /dev/null
+++ b/Web/src/api-services/models/update-config-tenant-input.ts
@@ -0,0 +1,117 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+ *
+ * OpenAPI spec version: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { YesNoEnum } from './yes-no-enum';
+/**
+ *
+ * @export
+ * @interface UpdateConfigTenantInput
+ */
+export interface UpdateConfigTenantInput {
+ /**
+ * 雪花Id
+ * @type {number}
+ * @memberof UpdateConfigTenantInput
+ */
+ id?: number;
+ /**
+ * 创建时间
+ * @type {Date}
+ * @memberof UpdateConfigTenantInput
+ */
+ createTime?: Date;
+ /**
+ * 更新时间
+ * @type {Date}
+ * @memberof UpdateConfigTenantInput
+ */
+ updateTime?: Date | null;
+ /**
+ * 创建者Id
+ * @type {number}
+ * @memberof UpdateConfigTenantInput
+ */
+ createUserId?: number | null;
+ /**
+ * 创建者姓名
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ createUserName?: string | null;
+ /**
+ * 修改者Id
+ * @type {number}
+ * @memberof UpdateConfigTenantInput
+ */
+ updateUserId?: number | null;
+ /**
+ * 修改者姓名
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ updateUserName?: string | null;
+ /**
+ * 软删除
+ * @type {boolean}
+ * @memberof UpdateConfigTenantInput
+ */
+ isDelete?: boolean;
+ /**
+ * 租户Id
+ * @type {number}
+ * @memberof UpdateConfigTenantInput
+ */
+ tenantId?: number | null;
+ /**
+ * 名称
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ name: string;
+ /**
+ * 编码
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ code?: string | null;
+ /**
+ * 参数值
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ value?: string | null;
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof UpdateConfigTenantInput
+ */
+ sysFlag?: YesNoEnum;
+ /**
+ * 分组编码
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ groupCode?: string | null;
+ /**
+ * 排序
+ * @type {number}
+ * @memberof UpdateConfigTenantInput
+ */
+ orderNo?: number;
+ /**
+ * 备注
+ * @type {string}
+ * @memberof UpdateConfigTenantInput
+ */
+ remark?: string | null;
+}
diff --git a/Web/src/api-services/models/update-dict-data-input.ts b/Web/src/api-services/models/update-dict-data-input.ts
index 6e9ac8dd..cfeed9e9 100644
--- a/Web/src/api-services/models/update-dict-data-input.ts
+++ b/Web/src/api-services/models/update-dict-data-input.ts
@@ -11,169 +11,123 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
- /**
+/**
*
- *
* @export
* @interface UpdateDictDataInput
*/
export interface UpdateDictDataInput {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof UpdateDictDataInput
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof UpdateDictDataInput
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof UpdateDictDataInput
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof UpdateDictDataInput
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof UpdateDictDataInput
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof UpdateDictDataInput
*/
isDelete?: boolean;
-
- /**
- * 租户Id
- *
- * @type {number}
- * @memberof UpdateDictDataInput
- */
- tenantId?: number | null;
-
/**
* 字典类型Id
- *
* @type {number}
* @memberof UpdateDictDataInput
*/
dictTypeId?: number;
-
+ /**
+ * 显示文本
+ * @type {string}
+ * @memberof UpdateDictDataInput
+ */
+ label: string;
/**
* 值
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
value: string;
-
/**
* 编码
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
- code: string;
-
- /**
- * 名称
- *
- * @type {string}
- * @memberof UpdateDictDataInput
- */
- name?: string | null;
-
+ code?: string | null;
/**
* 显示样式-标签颜色
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
tagType?: string | null;
-
/**
* 显示样式-Style(控制显示样式)
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
styleSetting?: string | null;
-
/**
* 显示样式-Class(控制显示样式)
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
classSetting?: string | null;
-
/**
* 排序
- *
* @type {number}
* @memberof UpdateDictDataInput
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
remark?: string | null;
-
/**
* 拓展数据(保存业务功能的配置项)
- *
* @type {string}
* @memberof UpdateDictDataInput
*/
extData?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof UpdateDictDataInput
*/
diff --git a/Web/src/api-services/models/update-dict-type-input.ts b/Web/src/api-services/models/update-dict-type-input.ts
index 2f264227..d8f81a6d 100644
--- a/Web/src/api-services/models/update-dict-type-input.ts
+++ b/Web/src/api-services/models/update-dict-type-input.ts
@@ -11,129 +11,107 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
-
import { StatusEnum } from './status-enum';
import { SysDictData } from './sys-dict-data';
import { YesNoEnum } from './yes-no-enum';
- /**
+/**
*
- *
* @export
* @interface UpdateDictTypeInput
*/
export interface UpdateDictTypeInput {
-
/**
* 雪花Id
- *
* @type {number}
* @memberof UpdateDictTypeInput
*/
id?: number;
-
/**
* 创建时间
- *
* @type {Date}
* @memberof UpdateDictTypeInput
*/
createTime?: Date;
-
/**
* 更新时间
- *
* @type {Date}
* @memberof UpdateDictTypeInput
*/
updateTime?: Date | null;
-
/**
* 创建者Id
- *
* @type {number}
* @memberof UpdateDictTypeInput
*/
createUserId?: number | null;
-
/**
* 创建者姓名
- *
* @type {string}
* @memberof UpdateDictTypeInput
*/
createUserName?: string | null;
-
/**
* 修改者Id
- *
* @type {number}
* @memberof UpdateDictTypeInput
*/
updateUserId?: number | null;
-
/**
* 修改者姓名
- *
* @type {string}
* @memberof UpdateDictTypeInput
*/
updateUserName?: string | null;
-
/**
* 软删除
- *
* @type {boolean}
* @memberof UpdateDictTypeInput
*/
isDelete?: boolean;
-
/**
* 名称
- *
* @type {string}
* @memberof UpdateDictTypeInput
*/
name: string;
-
/**
* 编码
- *
* @type {string}
* @memberof UpdateDictTypeInput
*/
code: string;
-
/**
* 排序
- *
* @type {number}
* @memberof UpdateDictTypeInput
*/
orderNo?: number;
-
/**
* 备注
- *
* @type {string}
* @memberof UpdateDictTypeInput
*/
remark?: string | null;
-
/**
+ *
* @type {StatusEnum}
* @memberof UpdateDictTypeInput
*/
status?: StatusEnum;
-
+ /**
+ *
+ * @type {YesNoEnum}
+ * @memberof UpdateDictTypeInput
+ */
+ isTenant?: YesNoEnum;
/**
* 字典值集合
- *
* @type {Array}
* @memberof UpdateDictTypeInput
*/
children?: Array | null;
-
/**
+ *
* @type {YesNoEnum}
* @memberof UpdateDictTypeInput
*/
diff --git a/Web/src/components/sysDict/sysDict.vue b/Web/src/components/sysDict/sysDict.vue
new file mode 100644
index 00000000..d51b5ee7
--- /dev/null
+++ b/Web/src/components/sysDict/sysDict.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+ {{ onItemFormatter(item) ?? item[props.propLabel] }}
+
+
+
+
+ {{ onItemFormatter(state.dict) ?? state.dict[props.propLabel] }}
+
+ {{ state.value }}
+
+
+
+
+ emit('update:modelValue', newValue)">
+
+
+
+
+
+ emit('update:modelValue', newValue)">
+
+ {{ onItemFormatter(item) ?? item[props.propLabel] }}
+
+
+
+
+
+ emit('update:modelValue', newValue)">
+
+ {{ onItemFormatter(item) ?? item[props.propLabel] }}
+
+
+
+
+
+
diff --git a/Web/src/main.ts b/Web/src/main.ts
index e01f0a37..88050b0d 100644
--- a/Web/src/main.ts
+++ b/Web/src/main.ts
@@ -24,6 +24,8 @@ import { setupVXETable } from '/@/hooks/setupVXETableHook';
// IM聊天框
import JwChat from 'jwchat';
import 'jwchat/lib/style.css';
+// 自定义字典组件
+import sysDict from "/@/components/sysDict/sysDict.vue";
// 关闭自动打印
import { disAutoConnect } from 'vue-plugin-hiprint';
@@ -37,4 +39,7 @@ const app = createApp(App);
directive(app);
other.elSvg(app);
+// 注册全局字典组件
+app.component('GSysDict', sysDict);
+
app.use(pinia).use(router).use(ElementPlus).use(setupVXETable).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(vue3TreeOrg).use(JwChat).mount('#app');
diff --git a/Web/src/views/system/codeGen/component/editCodeGenDialog.vue b/Web/src/views/system/codeGen/component/editCodeGenDialog.vue
index 984b9fb2..81e1dab9 100644
--- a/Web/src/views/system/codeGen/component/editCodeGenDialog.vue
+++ b/Web/src/views/system/codeGen/component/editCodeGenDialog.vue
@@ -146,9 +146,7 @@
-
-
-
+
@@ -169,9 +167,7 @@
-
-
-
+
@@ -374,7 +370,6 @@ const props = defineProps({
title: String,
applicationNamespaces: Array,
});
-const getDictDataByCode = useUserInfo().getDictDataByCode;
const emits = defineEmits(['handleQuery']);
const ruleFormRef = ref();
const state = reactive({
diff --git a/Web/src/views/system/database/component/genEntity.vue b/Web/src/views/system/database/component/genEntity.vue
index 9cd3e99b..07b12204 100644
--- a/Web/src/views/system/database/component/genEntity.vue
+++ b/Web/src/views/system/database/component/genEntity.vue
@@ -21,9 +21,7 @@
-
-
-
+
@@ -55,7 +53,6 @@ import { useUserInfo } from '/@/stores/userInfo';
import { getAPI } from '/@/utils/axios-utils';
import { SysDatabaseApi } from '/@/api-services/api';
-const getDictDataByCode = useUserInfo().getDictDataByCode;
const emits = defineEmits(['handleQueryColumn']);
const ruleFormRef = ref();
const state = reactive({
diff --git a/Web/src/views/system/dict/component/editDictData.vue b/Web/src/views/system/dict/component/editDictData.vue
index c0611131..d52901db 100644
--- a/Web/src/views/system/dict/component/editDictData.vue
+++ b/Web/src/views/system/dict/component/editDictData.vue
@@ -9,21 +9,21 @@
+
+
+
+
+
-
+
-
-
-
-
-
diff --git a/Web/src/views/system/dict/component/editDictType.vue b/Web/src/views/system/dict/component/editDictType.vue
index 9802da2c..59b9ee55 100644
--- a/Web/src/views/system/dict/component/editDictType.vue
+++ b/Web/src/views/system/dict/component/editDictType.vue
@@ -19,17 +19,14 @@
-
-
-
- 启用
- 禁用
-
+
+
+
-
-
-
+
+
+
@@ -37,6 +34,11 @@
+
+
+
+
+
@@ -54,11 +56,13 @@ import { reactive, ref } from 'vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysDictTypeApi } from '/@/api-services/api';
-import { UpdateDictTypeInput } from '/@/api-services/models';
+import {AccountTypeEnum, UpdateDictTypeInput} from '/@/api-services/models';
+import {useUserInfo} from "/@/stores/userInfo";
const props = defineProps({
title: String,
});
+const userInfo = useUserInfo().userInfos;
const emits = defineEmits(['handleQuery', 'handleUpdate']);
const formRef = ref();
const state = reactive({
diff --git a/Web/src/views/system/dict/index.vue b/Web/src/views/system/dict/index.vue
index d14d01b1..5df6a4bf 100644
--- a/Web/src/views/system/dict/index.vue
+++ b/Web/src/views/system/dict/index.vue
@@ -38,13 +38,14 @@
+
+
+
- 是
- 否
+
- 启用
- 禁用
+
@@ -98,11 +99,8 @@
-
- {{ row.value }}
-
-
- {{ row.name == null ? row.value : row.name }}
+
+ {{ row.label }}
空
@@ -150,8 +148,17 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysDictTypeApi, SysDictDataApi } from '/@/api-services/api';
-import { SysDictType, PageDictTypeInput, SysDictData, PageDictDataInput, UpdateDictDataInput } from '/@/api-services/models';
+import {
+ SysDictType,
+ PageDictTypeInput,
+ SysDictData,
+ PageDictDataInput,
+ UpdateDictDataInput,
+ AccountTypeEnum
+} from '/@/api-services/models';
+import {auth} from "/@/utils/authFunction";
+const userInfo = useUserInfo().userInfos;
const xGridDictType = ref();
const xGridDictData = ref();
const editRefDictType = ref>();
@@ -189,6 +196,7 @@ const optionsDictType = useVxeTable(
{ field: 'seq', type: 'seq', title: '序号', width: 60, fixed: 'left' },
{ field: 'name', title: '字典名称', minWidth: 140, align: 'left', headerAlign: 'center', showOverflow: 'tooltip' },
{ field: 'code', title: '字典编码', minWidth: 140, align: 'left', headerAlign: 'center', showOverflow: 'tooltip' },
+ { field: 'isTenant', title: '租户隔离', width: 80, showOverflow: 'tooltip', visible: userInfo.accountType === AccountTypeEnum.NUMBER_999, slots: { default: 'row_isTenant' } },
{ field: 'sysFlag', title: '是否内置', width: 80, showOverflow: 'tooltip', slots: { default: 'row_sysFlag' } },
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
@@ -239,7 +247,7 @@ const resetQuery = async () => {
// 打开新增页面
const handleAdd = () => {
state.title = '添加字典';
- editRefDictType.value?.openDialog({ status: 1, orderNo: 100 });
+ editRefDictType.value?.openDialog({ status: 1, isTenant: 2, orderNo: 100 });
};
// 打开编辑页面
@@ -293,9 +301,9 @@ const optionsDictData = useVxeTable(
name: '字典值信息',
columns: [
{ field: 'seq', type: 'seq', title: '序号', width: 60, fixed: 'left' },
- { field: 'value', title: '字典值', minWidth: 120, showOverflow: 'tooltip', slots: { default: 'row_value' } },
+ { field: 'label', title: '显示文本', minWidth: 140, align: 'left', headerAlign: 'center', showOverflow: 'tooltip', slots: { default: 'row_label' } },
+ { field: 'value', title: '字典值', minWidth: 140, align: 'left', headerAlign: 'center', showOverflow: 'tooltip' },
{ field: 'code', title: '编码', minWidth: 150, align: 'left', headerAlign: 'center', showOverflow: 'tooltip' },
- { field: 'name', title: '名称', minWidth: 150, align: 'left', headerAlign: 'center', showOverflow: 'tooltip', slots: { default: 'row_name' } },
{ field: 'extData', title: '拓展数据', showOverflow: 'tooltip', slots: { default: 'row_extData' } },
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },