diff --git a/assets/res/Fields.ln b/assets/res/Fields.ln index d42bcc60..52e35857 100644 --- a/assets/res/Fields.ln +++ b/assets/res/Fields.ln @@ -1,3 +1,7 @@ +上次执行时间 +上次执行状态 +上次执行耗时 +下次执行时间 不为其中之一 不以什么开始 不以什么结束 @@ -8,8 +12,11 @@ 中专 中共党员 为其中之一 +人工审核 以什么开始 以什么结束 +作业名称 +作业状态 保密 信息 倒序排序 @@ -17,6 +24,7 @@ 公告 共青团员 出生证 +创建时间 初中 删除 包含 @@ -24,13 +32,19 @@ 博士后 发送失败 同步数据库结构 +响应体 +响应状态码 +唯一编码 +备注 外国人居留证 外部错误 大专 大于 大于等于 女 +字典内容导出 宕机 +客户端IP 小于 小于等于 小学 @@ -41,14 +55,29 @@ 并且 成功 或者 +所属角色 +所属部门 手机 +手机号 +执行耗时 +执行计划 护照 指定部门数据 按钮 +排序 +接口名称 +接口导出 +接口描述 +接口路径 插入种子数据 +操作系统 +数据范围 无效操作 无效输入 +无限权限 日期范围 +是否启用 +显示仪表板 未处理异常 未婚 未读 @@ -59,13 +88,21 @@ 框架 比较数据库结构 注册 +消息主题 +消息摘要 +消息类型 港澳台通行证 +用户代理 +用户名 +用户导出 电子邮箱 男 登录 硕士 +示例导出 离异 空闲 +站内信导出 等于 等待发送 管理模块 @@ -76,16 +113,30 @@ 自定义 范围 菜单 +角色名称 +角色导出 解绑手机号码 警告 +计划作业导出 +计划作业执行记录导出 +请求方式 +请求日志导出 调试 跟踪 身份证 运行 通知 +邮箱号 +部门名称 +部门导出 +配置导出 重设密码 链接 错误 随机排序 +项值 +项名 顺序排序 -高中 \ No newline at end of file +高中 +默认角色 +默认部门 \ No newline at end of file diff --git a/assets/res/Statements.ln b/assets/res/Statements.ln index 9265dfc6..ca76f9c1 100644 --- a/assets/res/Statements.ln +++ b/assets/res/Statements.ln @@ -93,6 +93,7 @@ XML注释文件不存在 配置文件初始化完毕 键值不能为空 键名称不能为空 +非JSON字符串 验证数据不能为空 验证码不正确 验证码不能为空 diff --git a/assets/seed-data/Sys_Role.json b/assets/seed-data/Sys_Role.json index 32e91bf3..ffae04c6 100644 --- a/assets/seed-data/Sys_Role.json +++ b/assets/seed-data/Sys_Role.json @@ -9,7 +9,7 @@ "Sort": 100 }, { - "DataScope": 1, + "DataScope": 4, "Enabled": true, "Id": 371729946431493, "Name": "普通用户", diff --git a/assets/seed-data/Sys_RoleMenu.json b/assets/seed-data/Sys_RoleMenu.json index 1d33ef9e..85c84e93 100644 --- a/assets/seed-data/Sys_RoleMenu.json +++ b/assets/seed-data/Sys_RoleMenu.json @@ -1,11 +1,9 @@ [ { - "Id": 396423792566281, "MenuId": 373837717815301, "RoleId": 371729946431493 }, { - "Id": 396423792566282, "MenuId": 374967228141573, "RoleId": 371729946431493 } diff --git a/assets/seed-data/Sys_UserProfile.json b/assets/seed-data/Sys_UserProfile.json index 6944b9d8..9159fbe7 100644 --- a/assets/seed-data/Sys_UserProfile.json +++ b/assets/seed-data/Sys_UserProfile.json @@ -1,8 +1,10 @@ [ { - "Id": 370942943322181 + "Id": 370942943322181, + "AppConfig": "[]" }, { - "Id": 560217289236492 + "Id": 560217289236492, + "AppConfig": "[]" } ] \ No newline at end of file diff --git a/build/code.quality.props b/build/code.quality.props index da9595a1..5e411972 100644 --- a/build/code.quality.props +++ b/build/code.quality.props @@ -23,7 +23,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/scripts/rename.csx b/scripts/rename.csx index 83db1b63..d0b2029f 100644 --- a/scripts/rename.csx +++ b/scripts/rename.csx @@ -1,4 +1,4 @@ -#r "nuget: NSExt, 2.1.0" +#r "nuget: NSExt, 2.2.0" using NSExt.Extensions; Console.WriteLine("请输入原始名称(NetAdmin):"); diff --git a/scripts/switcher.nsext.json b/scripts/switcher.nsext.json index a861af95..301f0370 100644 --- a/scripts/switcher.nsext.json +++ b/scripts/switcher.nsext.json @@ -9,7 +9,7 @@ "packages": [ { "packageName": "NSExt", - "version": "2.1.0" + "version": "2.2.0" } ] } diff --git a/src/backend/GlobalUsings.cs b/src/backend/GlobalUsings.cs index 77dbb519..49e22f41 100644 --- a/src/backend/GlobalUsings.cs +++ b/src/backend/GlobalUsings.cs @@ -65,6 +65,13 @@ global using NetAdmin.Infrastructure.Utils; global using NSExt.Attributes; global using NSExt.Extensions; #if !INFRAS +global using CsvHelper.Configuration.Attributes; +global using NetAdmin.Domain.Attributes; +global using NetAdmin.Domain.Attributes.DataValidation; +global using NetAdmin.Domain.DbMaps.Dependency; +global using NetAdmin.Domain.DbMaps.Dependency.Fields; +global using NetAdmin.Domain.DbMaps.Sys; +global using CsvIndex = CsvHelper.Configuration.Attributes.IndexAttribute; global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo; global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators; #endif \ No newline at end of file diff --git a/src/backend/NetAdmin.AdmServer.Application/NetAdmin.AdmServer.Application.csproj.DotSettings b/src/backend/NetAdmin.AdmServer.Application/NetAdmin.AdmServer.Application.csproj.DotSettings new file mode 100644 index 00000000..b8097e57 --- /dev/null +++ b/src/backend/NetAdmin.AdmServer.Application/NetAdmin.AdmServer.Application.csproj.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file diff --git a/src/backend/NetAdmin.AdmServer.Host/Extensions/ServiceCollectionExtensions.cs b/src/backend/NetAdmin.AdmServer.Host/Extensions/ServiceCollectionExtensions.cs index ab942d5e..e3a0c98a 100644 --- a/src/backend/NetAdmin.AdmServer.Host/Extensions/ServiceCollectionExtensions.cs +++ b/src/backend/NetAdmin.AdmServer.Host/Extensions/ServiceCollectionExtensions.cs @@ -1,6 +1,5 @@ using NetAdmin.AdmServer.Host.Filters; using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Enums.Sys; using NetAdmin.Host.Extensions; diff --git a/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs b/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs index 268697bc..88944ab3 100644 --- a/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs +++ b/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs @@ -229,6 +229,14 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper return default; } + /// + [InlineData(default)] + [Theory] + public Task CountRecordAsync(QueryReq req) + { + return default; + } + /// [InlineData(default)] [Theory] @@ -629,6 +637,166 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper return default; } + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportContentAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExportRecordAsync(QueryReq req) + { + return default; + } + /// [InlineData(default)] [Theory] @@ -920,6 +1088,14 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper return default; } + /// + [InlineData(default)] + [Theory] + public Task GetRecordAsync(QueryJobRecordReq req) + { + return default; + } + /// [InlineData(default)] [Theory] @@ -1154,6 +1330,14 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper return default; } + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryRecordAsync(PagedQueryReq req) + { + return default; + } + /// [InlineData(default)] [Theory] @@ -1322,22 +1506,6 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper return default; } - /// - [InlineData(default)] - [Theory] - public Task RecordGetAsync(QueryJobRecordReq req) - { - return default; - } - - /// - [InlineData(default)] - [Theory] - public Task> RecordPagedQueryAsync(PagedQueryReq req) - { - return default; - } - /// [InlineData(default)] [Theory] diff --git a/src/backend/NetAdmin.AdmServer.Tests/NetAdmin.AdmServer.Tests.csproj b/src/backend/NetAdmin.AdmServer.Tests/NetAdmin.AdmServer.Tests.csproj index aeb8f972..edf2ba66 100644 --- a/src/backend/NetAdmin.AdmServer.Tests/NetAdmin.AdmServer.Tests.csproj +++ b/src/backend/NetAdmin.AdmServer.Tests/NetAdmin.AdmServer.Tests.csproj @@ -4,6 +4,6 @@ - + \ No newline at end of file diff --git a/src/backend/NetAdmin.Application/Modules/ICrudModule.cs b/src/backend/NetAdmin.Application/Modules/ICrudModule.cs index d7fedfb9..441b4368 100644 --- a/src/backend/NetAdmin.Application/Modules/ICrudModule.cs +++ b/src/backend/NetAdmin.Application/Modules/ICrudModule.cs @@ -43,6 +43,11 @@ public interface ICrudModule Task ExistAsync(QueryReq req); + /// + /// 导出实体 + /// + Task ExportAsync(QueryReq req); + /// /// 获取单个实体 /// diff --git a/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs b/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs index a9b4f109..3c1651a1 100644 --- a/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs +++ b/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs @@ -1,5 +1,4 @@ using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Dependency; namespace NetAdmin.Application.Repositories; diff --git a/src/backend/NetAdmin.Application/Services/RedLockerService.cs b/src/backend/NetAdmin.Application/Services/RedLockerService.cs index 1949260d..3f69db2e 100644 --- a/src/backend/NetAdmin.Application/Services/RedLockerService.cs +++ b/src/backend/NetAdmin.Application/Services/RedLockerService.cs @@ -1,5 +1,4 @@ using NetAdmin.Application.Repositories; -using NetAdmin.Domain.DbMaps.Dependency; using RedLockNet; namespace NetAdmin.Application.Services; diff --git a/src/backend/NetAdmin.Application/Services/RepositoryService.cs b/src/backend/NetAdmin.Application/Services/RepositoryService.cs index 067e394a..414a9cc2 100644 --- a/src/backend/NetAdmin.Application/Services/RepositoryService.cs +++ b/src/backend/NetAdmin.Application/Services/RepositoryService.cs @@ -1,6 +1,4 @@ using NetAdmin.Application.Repositories; -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Application.Services; diff --git a/src/backend/NetAdmin.Domain/Attributes/DataValidation/JsonStringAttribute.cs b/src/backend/NetAdmin.Domain/Attributes/DataValidation/JsonStringAttribute.cs new file mode 100644 index 00000000..fdb2d054 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Attributes/DataValidation/JsonStringAttribute.cs @@ -0,0 +1,16 @@ +namespace NetAdmin.Domain.Attributes.DataValidation; + +/// +/// JSON文本验证器 +/// +[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter)] +public sealed class JsonStringAttribute : ValidationAttribute +{ + /// + protected override ValidationResult IsValid(object value, ValidationContext validationContext) + { + return (value as string).IsJsonString() + ? ValidationResult.Success + : new ValidationResult(Ln.非JSON字符串, new[] { validationContext.MemberName }); + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs index bc15ad14..1ec658dc 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -21,11 +18,13 @@ public abstract record ImmutableEntity : LiteImmutableEntity, IFieldCreate { /// [Column(CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public long? CreatedUserId { get; init; } /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual string CreatedUserName { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs index ef329050..4a7d8fe6 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -21,11 +18,13 @@ public abstract record LiteImmutableEntity : EntityBase, IFieldCreatedTime { /// [Column(ServerTime = DateTimeKind.Local, CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual DateTime CreatedTime { get; init; } /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] + [Ignore] [JsonIgnore] public override T Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs index be0f6195..ee457d37 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -24,6 +21,7 @@ public abstract record LiteMutableEntity : LiteImmutableEntity, IFieldModi /// [Column(ServerTime = DateTimeKind.Local, CanInsert = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual DateTime? ModifiedTime { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs index f791d826..a36e261d 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -24,6 +21,7 @@ public abstract record LiteVersionEntity : LiteMutableEntity, IFieldVersio /// [Column(IsVersion = true, Position = -1)] + [Ignore] [JsonIgnore] public virtual long Version { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs index 37ee5975..50ae40b8 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -24,11 +21,13 @@ public abstract record MutableEntity : LiteMutableEntity, IFieldModifiedUs /// [Column(CanInsert = false, Position = -1)] + [Ignore] [JsonIgnore] public long? ModifiedUserId { get; init; } /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanInsert = false, Position = -1)] + [Ignore] [JsonIgnore] public string ModifiedUserName { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs index 8d4eab00..5af11ff7 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes; - namespace NetAdmin.Domain.DbMaps.Dependency; /// diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs index 83b3859e..1bba5a7f 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Dependency; /// @@ -20,11 +17,13 @@ public abstract record VersionEntity : LiteVersionEntity, IFieldModifiedUs { /// [Column(CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual long? CreatedUserId { get; init; } /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual string CreatedUserName { get; init; } @@ -34,11 +33,13 @@ public abstract record VersionEntity : LiteVersionEntity, IFieldModifiedUs /// [Column(CanInsert = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual long? ModifiedUserId { get; init; } /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanInsert = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual string ModifiedUserName { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs index 723eb490..e538c007 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Sys; /// @@ -12,12 +9,14 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// /// 子节点 /// + [Ignore] [JsonIgnore] [Navigate(nameof(ParentId))] public IEnumerable Children { get; init; } /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127, IsIdentity = false, IsPrimary = true, Position = 1)] + [Ignore] [JsonIgnore] public override string Id { get; init; } @@ -25,6 +24,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// 请求方式 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_15)] + [Ignore] [JsonIgnore] public virtual string Method { get; init; } @@ -32,6 +32,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// 服务名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Name { get; init; } @@ -39,6 +40,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// 命名空间 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] #pragma warning disable CA1716 public virtual string Namespace { get; init; } @@ -48,12 +50,14 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// 父编号 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string ParentId { get; init; } /// /// 角色集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleApi))] public ICollection Roles { get; init; } @@ -62,6 +66,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary /// 服务描述 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Config.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Config.cs index 9086f3aa..f47ab15c 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Config.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Config.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Sys; /// @@ -13,6 +10,7 @@ public record Sys_Config : VersionEntity, IFieldEnabled /// 是否启用 /// [Column] + [Ignore] [JsonIgnore] public virtual bool Enabled { get; init; } @@ -20,12 +18,14 @@ public record Sys_Config : VersionEntity, IFieldEnabled /// 用户注册是否需要人工确认 /// [Column] + [Ignore] [JsonIgnore] public virtual bool UserRegisterConfirm { get; init; } /// /// 用户注册默认部门 /// + [Ignore] [JsonIgnore] [Navigate(nameof(UserRegisterDeptId))] public Sys_Dept UserRegisterDept { get; init; } @@ -34,12 +34,14 @@ public record Sys_Config : VersionEntity, IFieldEnabled /// 用户注册默认部门编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long UserRegisterDeptId { get; init; } /// /// 用户注册默认角色 /// + [Ignore] [JsonIgnore] [Navigate(nameof(UserRegisterRoleId))] public Sys_Role UserRegisterRole { get; init; } @@ -48,6 +50,7 @@ public record Sys_Config : VersionEntity, IFieldEnabled /// 用户注册默认角色编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long UserRegisterRoleId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs index a5246585..f7213f50 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Sys; /// @@ -12,6 +9,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// /// 子节点 /// + [Ignore] [JsonIgnore] [Navigate(nameof(ParentId))] public IEnumerable Children { get; init; } @@ -20,6 +18,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// 是否启用 /// [Column] + [Ignore] [JsonIgnore] public virtual bool Enabled { get; init; } @@ -27,6 +26,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// 部门名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Name { get; init; } @@ -34,12 +34,14 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// 父编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long ParentId { get; init; } /// /// 角色集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleDept))] public ICollection Roles { get; init; } @@ -47,6 +49,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// /// 发送给此部门的站内信集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgDept))] public ICollection SiteMsgs { get; init; } @@ -55,6 +58,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// 排序值,越大越前 /// [Column] + [Ignore] [JsonIgnore] public virtual long Sort { get; init; } @@ -62,6 +66,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// 部门描述 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs index 1a2963bb..a37448f1 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs @@ -1,17 +1,16 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 字典目录表 /// -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Code), nameof(Code), true)] -[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicCatalog))] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Code), nameof(Code), true)] +[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicCatalog))] public record Sys_DicCatalog : VersionEntity { /// /// 子节点 /// + [Ignore] [JsonIgnore] [Navigate(nameof(ParentId))] public IEnumerable Children { get; init; } @@ -20,12 +19,14 @@ public record Sys_DicCatalog : VersionEntity /// 字典编码 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Code { get; init; } /// /// 字典内容集合 /// + [Ignore] [JsonIgnore] [Navigate(nameof(Sys_DicContent.CatalogId))] public ICollection Contents { get; init; } @@ -34,6 +35,7 @@ public record Sys_DicCatalog : VersionEntity /// 字典名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Name { get; init; } @@ -41,6 +43,7 @@ public record Sys_DicCatalog : VersionEntity /// 父编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long ParentId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs index 2c8cc50b..8114b890 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs @@ -1,18 +1,19 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 字典内容表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Key)}", $"{nameof(CatalogId)},{nameof(Key)}", true)] -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Value)}", $"{nameof(CatalogId)},{nameof(Value)}", true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Key)}", $"{nameof(CatalogId)},{nameof(Key)}", true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Value)}", $"{nameof(CatalogId)},{nameof(Value)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicContent))] public record Sys_DicContent : VersionEntity { /// /// 字典目录 /// + [Ignore] [JsonIgnore] [Navigate(nameof(CatalogId))] public Sys_DicCatalog Catalog { get; init; } @@ -21,6 +22,7 @@ public record Sys_DicContent : VersionEntity /// 字典目录编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long CatalogId { get; init; } @@ -28,6 +30,7 @@ public record Sys_DicContent : VersionEntity /// 键名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Key { get; init; } @@ -35,6 +38,7 @@ public record Sys_DicContent : VersionEntity /// 键值 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Value { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs index 52628ee8..88455261 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Enums.Sys; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; @@ -13,6 +11,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary { /// [Column] + [Ignore] [JsonIgnore] public virtual bool Enabled { get; init; } @@ -20,6 +19,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 执行时间计划 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string ExecutionCron { get; init; } @@ -27,6 +27,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 请求方法 /// [Column] + [Ignore] [JsonIgnore] public virtual HttpMethods HttpMethod { get; init; } @@ -34,6 +35,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 作业名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string JobName { get; init; } @@ -41,6 +43,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 上次执行耗时 /// [Column] + [Ignore] [JsonIgnore] public virtual long? LastDuration { get; init; } @@ -48,6 +51,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 上次执行时间 /// [Column] + [Ignore] [JsonIgnore] public virtual DateTime? LastExecTime { get; init; } @@ -55,6 +59,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 上次执行状态 /// [Column] + [Ignore] [JsonIgnore] public virtual HttpStatusCode? LastStatusCode { get; init; } @@ -62,6 +67,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 下次执行时间 /// [Column] + [Ignore] [JsonIgnore] public virtual DateTime? NextExecTime { get; init; } @@ -69,6 +75,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 下次执行时间编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long? NextTimeId { get; init; } @@ -80,6 +87,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestBody { get; init; } @@ -91,6 +99,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestHeader { get; init; } @@ -102,6 +111,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestUrl { get; init; } @@ -109,6 +119,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 作业状态 /// [Column] + [Ignore] [JsonIgnore] public virtual JobStatues Status { get; init; } @@ -118,12 +129,14 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } /// /// 执行用户 /// + [Ignore] [JsonIgnore] [Navigate(nameof(UserId))] public Sys_User User { get; init; } @@ -132,6 +145,7 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// 执行用户编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long UserId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs index 0fe21e68..ee341fc9 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; namespace NetAdmin.Domain.DbMaps.Sys; @@ -6,10 +5,11 @@ namespace NetAdmin.Domain.DbMaps.Sys; /// /// 计划作业执行记录表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(JobId)}_{nameof(TimeId)}", $"{nameof(JobId)},{nameof(TimeId)}", true)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(JobId), nameof(JobId), false)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(JobId)}_{nameof(TimeId)}", $"{nameof(JobId)},{nameof(TimeId)}", true)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(JobId), nameof(JobId), false)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_JobRecord))] public record Sys_JobRecord : LiteImmutableEntity { @@ -17,6 +17,7 @@ public record Sys_JobRecord : LiteImmutableEntity /// 执行耗时(毫秒) /// [Column] + [Ignore] [JsonIgnore] public virtual long Duration { get; init; } @@ -24,6 +25,7 @@ public record Sys_JobRecord : LiteImmutableEntity /// 请求方法 /// [Column] + [Ignore] [JsonIgnore] public virtual HttpMethods HttpMethod { get; init; } @@ -31,12 +33,14 @@ public record Sys_JobRecord : LiteImmutableEntity /// HTTP 状态码 /// [Column] + [Ignore] [JsonIgnore] public int HttpStatusCode { get; init; } /// /// 拥有者信息 /// + [Ignore] [JsonIgnore] [Navigate(nameof(JobId))] public Sys_Job Job { get; init; } @@ -45,6 +49,7 @@ public record Sys_JobRecord : LiteImmutableEntity /// 作业编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long JobId { get; init; } @@ -56,6 +61,7 @@ public record Sys_JobRecord : LiteImmutableEntity #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestBody { get; init; } @@ -67,6 +73,7 @@ public record Sys_JobRecord : LiteImmutableEntity #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestHeader { get; init; } @@ -74,6 +81,7 @@ public record Sys_JobRecord : LiteImmutableEntity /// 请求的网络地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string RequestUrl { get; init; } @@ -85,6 +93,7 @@ public record Sys_JobRecord : LiteImmutableEntity #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string ResponseBody { get; init; } @@ -96,6 +105,7 @@ public record Sys_JobRecord : LiteImmutableEntity #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string ResponseHeader { get; init; } @@ -103,6 +113,7 @@ public record Sys_JobRecord : LiteImmutableEntity /// 执行时间编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long TimeId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs index fb719d7a..c4115170 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.DbMaps.Sys; @@ -7,20 +5,22 @@ namespace NetAdmin.Domain.DbMaps.Sys; /// /// 菜单表 /// -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)] -[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Menu))] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)] +[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Menu))] public record Sys_Menu : VersionEntity, IFieldSort { /// /// 子节点或详情页需要高亮的上级菜单路由地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string Active { get; init; } /// /// 子节点 /// + [Ignore] [JsonIgnore] [Navigate(nameof(ParentId))] public IEnumerable Children { get; init; } @@ -29,6 +29,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 背景颜色 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_7)] + [Ignore] [JsonIgnore] public virtual string Color { get; init; } @@ -36,6 +37,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 组件 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Component { get; init; } @@ -43,6 +45,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 是否整页路由 /// [Column] + [Ignore] [JsonIgnore] public virtual bool FullPageRouting { get; init; } @@ -50,6 +53,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 是否隐藏菜单 /// [Column] + [Ignore] [JsonIgnore] public virtual bool Hidden { get; init; } @@ -57,6 +61,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 是否隐藏面包屑 /// [Column] + [Ignore] [JsonIgnore] public virtual bool HiddenBreadCrumb { get; init; } @@ -64,6 +69,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 图标 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Icon { get; init; } @@ -71,6 +77,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 菜单名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Name { get; init; } @@ -78,6 +85,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 父编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long ParentId { get; init; } @@ -85,6 +93,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 菜单路径 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string Path { get; init; } @@ -92,12 +101,14 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 重定向地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string Redirect { get; init; } /// /// 拥有此菜单的角色集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleMenu))] public ICollection Roles { get; init; } @@ -106,6 +117,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 排序值,越大越前 /// [Column] + [Ignore] [JsonIgnore] public virtual long Sort { get; init; } @@ -113,6 +125,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 标签 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Tag { get; init; } @@ -120,6 +133,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 菜单标题 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Title { get; init; } @@ -127,6 +141,7 @@ public record Sys_Menu : VersionEntity, IFieldSort /// 菜单类型 /// [Column] + [Ignore] [JsonIgnore] public virtual MenuTypes Type { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs index ddef57fe..59c8a98b 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs @@ -1,21 +1,19 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 请求日志表 /// -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(ApiId), nameof(ApiId), false)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserId), nameof(UserId), false)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)] -[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RequestLog))] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(ApiId), nameof(ApiId), false)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserId), nameof(UserId), false)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)] +[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RequestLog))] public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedClient { /// /// 接口 /// + [Ignore] [JsonIgnore] [Navigate(nameof(ApiId))] public Sys_Api Api { get; init; } @@ -24,16 +22,19 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 接口编号 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string ApiId { get; init; } /// [Column(Position = -1)] + [Ignore] [JsonIgnore] public int? CreatedClientIp { get; init; } /// [Column(ServerTime = DateTimeKind.Local, CanUpdate = false, Position = -1)] + [Ignore] [JsonIgnore] public virtual DateTime CreatedTime { get; init; } @@ -43,6 +44,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string CreatedUserAgent { get; init; } @@ -50,6 +52,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 执行耗时(微秒) /// [Column] + [Ignore] [JsonIgnore] public virtual long Duration { get; init; } @@ -57,6 +60,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 程序响应码 /// [Column] + [Ignore] [JsonIgnore] public virtual ErrorCodes ErrorCode { get; init; } @@ -68,6 +72,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string Exception { get; init; } @@ -75,6 +80,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// HTTP状态码 /// [Column] + [Ignore] [JsonIgnore] public virtual int HttpStatusCode { get; init; } @@ -82,6 +88,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 请求方法 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_15)] + [Ignore] [JsonIgnore] public virtual string Method { get; init; } @@ -93,6 +100,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestBody { get; init; } @@ -100,6 +108,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 请求content-type /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string RequestContentType { get; init; } @@ -111,6 +120,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string RequestHeaders { get; init; } @@ -118,6 +128,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 请求地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string RequestUrl { get; init; } @@ -129,6 +140,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string ResponseBody { get; init; } @@ -136,6 +148,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 响应content-type /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string ResponseContentType { get; init; } @@ -147,6 +160,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string ResponseHeaders { get; init; } @@ -154,12 +168,14 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 服务器IP /// [Column] + [Ignore] [JsonIgnore] public virtual int? ServerIp { get; init; } /// /// 用户 /// + [Ignore] [JsonIgnore] [Navigate(nameof(UserId))] public Sys_User User { get; init; } @@ -168,6 +184,7 @@ public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedCli /// 用户编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long? UserId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs index 97eb6462..55874bfd 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Dto.Sys.Role; using NetAdmin.Domain.Enums.Sys; @@ -8,27 +6,42 @@ namespace NetAdmin.Domain.DbMaps.Sys; /// /// 角色表 /// -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)] -[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Role))] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)] +[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Role))] public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary, IRegister { /// /// 角色-接口映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleApi))] public ICollection Apis { get; init; } + /// + /// 仪表板布局 + /// + #if DBTYPE_SQLSERVER + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + #endif + [Ignore] + [JsonIgnore] + public virtual string DashboardLayout { get; set; } + /// /// 数据范围 /// [Column] + [Ignore] [JsonIgnore] public virtual DataScopes DataScope { get; init; } /// /// 角色-部门映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleDept))] public ICollection Depts { get; init; } @@ -37,6 +50,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 是否显示仪表板 /// [Column] + [Ignore] [JsonIgnore] public virtual bool DisplayDashboard { get; init; } @@ -44,6 +58,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 是否启用 /// [Column] + [Ignore] [JsonIgnore] public virtual bool Enabled { get; init; } @@ -51,12 +66,14 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 是否忽略权限控制 /// [Column] + [Ignore] [JsonIgnore] public virtual bool IgnorePermissionControl { get; init; } /// /// 角色-菜单映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_RoleMenu))] public ICollection Menus { get; init; } @@ -65,12 +82,14 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 角色名称 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Name { get; init; } /// /// 发送给此角色的站内信集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgRole))] public ICollection SiteMsgs { get; init; } @@ -79,6 +98,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 排序值,越大越前 /// [Column] + [Ignore] [JsonIgnore] public virtual long Sort { get; init; } @@ -86,18 +106,20 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// 备注 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } /// /// 此角色下的用户集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_UserRole))] public ICollection Users { get; init; } /// - public void Register(TypeAdapterConfig config) + public virtual void Register(TypeAdapterConfig config) { _ = config.ForType() .Map( // diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleApi.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleApi.cs index db20f4fe..0722e97a 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleApi.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleApi.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// @@ -11,6 +9,7 @@ public record Sys_RoleApi : ImmutableEntity /// /// 关联的接口 /// + [Ignore] [JsonIgnore] public Sys_Api Api { get; init; } @@ -18,12 +17,14 @@ public record Sys_RoleApi : ImmutableEntity /// 接口编号 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public string ApiId { get; init; } /// /// 关联的角色 /// + [Ignore] [JsonIgnore] public Sys_Role Role { get; init; } @@ -31,6 +32,7 @@ public record Sys_RoleApi : ImmutableEntity /// 角色编号 /// [Column] + [Ignore] [JsonIgnore] public long RoleId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleDept.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleDept.cs index 597d5aad..ed4ee0ca 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleDept.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleDept.cs @@ -1,17 +1,17 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 角色-部门映射表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(DeptId)}", $"{nameof(RoleId)},{nameof(DeptId)}", true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(DeptId)}", $"{nameof(RoleId)},{nameof(DeptId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RoleDept))] public record Sys_RoleDept : ImmutableEntity { /// /// 关联的部门 /// + [Ignore] [JsonIgnore] public Sys_Dept Dept { get; init; } @@ -19,12 +19,14 @@ public record Sys_RoleDept : ImmutableEntity /// 可访问的部门编号 /// [Column] + [Ignore] [JsonIgnore] public long DeptId { get; init; } /// /// 关联的角色 /// + [Ignore] [JsonIgnore] public Sys_Role Role { get; init; } @@ -32,6 +34,7 @@ public record Sys_RoleDept : ImmutableEntity /// 角色编号 /// [Column] + [Ignore] [JsonIgnore] public long RoleId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleMenu.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleMenu.cs index 77c3be3f..39158152 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleMenu.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RoleMenu.cs @@ -1,17 +1,17 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 角色-菜单映射表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(MenuId)}", $"{nameof(RoleId)},{nameof(MenuId)}", true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(MenuId)}", $"{nameof(RoleId)},{nameof(MenuId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RoleMenu))] public record Sys_RoleMenu : ImmutableEntity { /// /// 关联的菜单 /// + [Ignore] [JsonIgnore] public Sys_Menu Menu { get; init; } @@ -19,12 +19,14 @@ public record Sys_RoleMenu : ImmutableEntity /// 菜单编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long MenuId { get; init; } /// /// 关联的角色 /// + [Ignore] [JsonIgnore] public Sys_Role Role { get; init; } @@ -32,6 +34,7 @@ public record Sys_RoleMenu : ImmutableEntity /// 角色编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long RoleId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs index 0b3bd0ec..f147718b 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Dto.Sys.SiteMsg; using NetAdmin.Domain.Enums.Sys; @@ -19,12 +17,14 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] public virtual string Content { get; init; } /// /// 消息-创建者映射 /// + [Ignore] [JsonIgnore] [Navigate(nameof(CreatedUserId))] public Sys_User Creator { get; init; } @@ -32,6 +32,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// /// 消息-部门映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgDept))] public ICollection Depts { get; init; } @@ -39,6 +40,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// /// 消息-标记映射 /// + [Ignore] [JsonIgnore] [Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))] public ICollection Flags { get; init; } @@ -46,12 +48,14 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// /// 消息类型 /// + [Ignore] [JsonIgnore] public virtual SiteMsgTypes MsgType { get; init; } /// /// 消息-角色映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgRole))] public ICollection Roles { get; init; } @@ -60,6 +64,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// 消息摘要 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } @@ -67,12 +72,14 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// 消息主题 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Title { get; init; } /// /// 消息-用户映射 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgUser))] public ICollection Users { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgDept.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgDept.cs index bd36f336..41b7720e 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgDept.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgDept.cs @@ -1,18 +1,17 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 站内信-部门映射表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(DeptId)}_{nameof(SiteMsgId)}", $"{nameof(DeptId)},{nameof(SiteMsgId)}" - , true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(DeptId)}_{nameof(SiteMsgId)}", $"{nameof(DeptId)},{nameof(SiteMsgId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgDept))] public record Sys_SiteMsgDept : ImmutableEntity { /// /// 关联的部门 /// + [Ignore] [JsonIgnore] public Sys_Dept Dept { get; init; } @@ -20,12 +19,14 @@ public record Sys_SiteMsgDept : ImmutableEntity /// 部门编号 /// [Column] + [Ignore] [JsonIgnore] public long DeptId { get; init; } /// /// 关联的站内信 /// + [Ignore] [JsonIgnore] public Sys_SiteMsg SiteMsg { get; init; } @@ -33,6 +34,7 @@ public record Sys_SiteMsgDept : ImmutableEntity /// 站内信编号 /// [Column] + [Ignore] [JsonIgnore] public long SiteMsgId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgFlag.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgFlag.cs index dc0cb016..cae4dd35 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgFlag.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgFlag.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.DbMaps.Sys; @@ -6,8 +5,8 @@ namespace NetAdmin.Domain.DbMaps.Sys; /// /// 站内信标记表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(SiteMsgId)}_{nameof(UserId)}", $"{nameof(SiteMsgId)},{nameof(UserId)}" - , true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(SiteMsgId)}_{nameof(UserId)}", $"{nameof(SiteMsgId)},{nameof(UserId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgFlag))] public record Sys_SiteMsgFlag : MutableEntity { @@ -15,6 +14,7 @@ public record Sys_SiteMsgFlag : MutableEntity /// 站内信编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long SiteMsgId { get; init; } @@ -22,6 +22,7 @@ public record Sys_SiteMsgFlag : MutableEntity /// 用户编号 /// [Column] + [Ignore] [JsonIgnore] public long UserId { get; init; } @@ -29,6 +30,7 @@ public record Sys_SiteMsgFlag : MutableEntity /// 用户站内信状态 /// [Column] + [Ignore] [JsonIgnore] public virtual UserSiteMsgStatues UserSiteMsgStatus { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgRole.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgRole.cs index 4b7ce500..f892e4d3 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgRole.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgRole.cs @@ -1,18 +1,17 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 站内信-角色映射表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(SiteMsgId)}", $"{nameof(RoleId)},{nameof(SiteMsgId)}" - , true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(SiteMsgId)}", $"{nameof(RoleId)},{nameof(SiteMsgId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgRole))] public record Sys_SiteMsgRole : ImmutableEntity { /// /// 关联的角色 /// + [Ignore] [JsonIgnore] public Sys_Role Role { get; init; } @@ -20,12 +19,14 @@ public record Sys_SiteMsgRole : ImmutableEntity /// 角色编号 /// [Column] + [Ignore] [JsonIgnore] public long RoleId { get; init; } /// /// 关联的站内信 /// + [Ignore] [JsonIgnore] public Sys_SiteMsg SiteMsg { get; init; } @@ -33,6 +34,7 @@ public record Sys_SiteMsgRole : ImmutableEntity /// 站内信编号 /// [Column] + [Ignore] [JsonIgnore] public long SiteMsgId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgUser.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgUser.cs index 547747ec..946e9d0a 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgUser.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsgUser.cs @@ -1,18 +1,17 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// /// 站内信-用户映射表 /// -[Index($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(UserId)}_{nameof(SiteMsgId)}", $"{nameof(UserId)},{nameof(SiteMsgId)}" - , true)] +[FreeSql.DataAnnotations.Index( // + $"{Chars.FLG_DB_INDEX_PREFIX}{nameof(UserId)}_{nameof(SiteMsgId)}", $"{nameof(UserId)},{nameof(SiteMsgId)}", true)] [Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgUser))] public record Sys_SiteMsgUser : ImmutableEntity { /// /// 关联的站内信 /// + [Ignore] [JsonIgnore] public Sys_SiteMsg SiteMsg { get; init; } @@ -20,12 +19,14 @@ public record Sys_SiteMsgUser : ImmutableEntity /// 站内信编号 /// [Column] + [Ignore] [JsonIgnore] public long SiteMsgId { get; init; } /// /// 关联的用户 /// + [Ignore] [JsonIgnore] public Sys_User User { get; init; } @@ -33,6 +34,7 @@ public record Sys_SiteMsgUser : ImmutableEntity /// 用户编号 /// [Column] + [Ignore] [JsonIgnore] public long UserId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs index 40e8bdd4..b350ce1f 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Dto.Sys.User; namespace NetAdmin.Domain.DbMaps.Sys; @@ -7,22 +5,24 @@ namespace NetAdmin.Domain.DbMaps.Sys; /// /// 用户基本信息表 /// -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Email), nameof(Email), true)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Mobile), nameof(Mobile), true)] -[Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserName), nameof(UserName), true)] -[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_User))] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Email), nameof(Email), true)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Mobile), nameof(Mobile), true)] +[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserName), nameof(UserName), true)] +[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_User))] public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister { /// /// 头像链接 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string Avatar { get; init; } /// /// 所属部门 /// + [Ignore] [JsonIgnore] [Navigate(nameof(DeptId))] public Sys_Dept Dept { get; init; } @@ -31,6 +31,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 部门编号 /// [Column] + [Ignore] [JsonIgnore] public virtual long DeptId { get; init; } @@ -38,6 +39,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 邮箱 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string Email { get; init; } @@ -45,6 +47,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 是否启用 /// [Column] + [Ignore] [JsonIgnore] public virtual bool Enabled { get; init; } @@ -52,6 +55,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 手机号码 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_15)] + [Ignore] [JsonIgnore] public virtual string Mobile { get; init; } @@ -59,18 +63,21 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 密码 /// [Column] + [Ignore] [JsonIgnore] public Guid Password { get; init; } /// /// 用户档案 /// + [Ignore] [JsonIgnore] public Sys_UserProfile Profile { get; init; } /// /// 所属角色 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_UserRole))] public ICollection Roles { get; init; } @@ -78,6 +85,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// /// 发送给此用户的站内信集合 /// + [Ignore] [JsonIgnore] [Navigate(ManyToMany = typeof(Sys_SiteMsgUser))] public ICollection SiteMsgs { get; init; } @@ -86,6 +94,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 描述 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public virtual string Summary { get; init; } @@ -93,6 +102,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 授权验证Token,全局唯一,可以随时重置(强制下线) /// [Column] + [Ignore] [JsonIgnore] public Guid Token { get; init; } @@ -100,11 +110,12 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// 用户名 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string UserName { get; init; } /// - public void Register(TypeAdapterConfig config) + public virtual void Register(TypeAdapterConfig config) { _ = config.ForType() .Map(d => d.Password, s => s.PasswordText.Pwd().Guid()) diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserProfile.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserProfile.cs index b3392337..17f522ac 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserProfile.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserProfile.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.Dto.Sys.UserProfile; namespace NetAdmin.Domain.DbMaps.Sys; @@ -17,13 +16,15 @@ public record Sys_UserProfile : VersionEntity, IRegister #else [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif + [Ignore] [JsonIgnore] - public virtual string AppConfig { get; init; } + public virtual string AppConfig { get; set; } /// /// 出生日期 /// [Column] + [Ignore] [JsonIgnore] public virtual DateTime? BornDate { get; init; } @@ -31,6 +32,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 证件号码 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string CertificateNumber { get; init; } @@ -38,6 +40,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 证件类型 /// [Column] + [Ignore] [JsonIgnore] public virtual CertificateTypes? CertificateType { get; init; } @@ -45,6 +48,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 工作地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string CompanyAddress { get; init; } @@ -52,6 +56,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 工作地区 /// [Column] + [Ignore] [JsonIgnore] public int? CompanyArea { get; init; } @@ -59,6 +64,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 工作单位 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string CompanyName { get; init; } @@ -66,6 +72,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 工作电话 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string CompanyTelephone { get; init; } @@ -73,6 +80,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 文化程度 /// [Column] + [Ignore] [JsonIgnore] public virtual Educations? Education { get; init; } @@ -80,6 +88,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 紧急联系地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string EmergencyContactAddress { get; init; } @@ -87,13 +96,15 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 紧急联系地区 /// [Column] + [Ignore] [JsonIgnore] public int? EmergencyContactArea { get; init; } /// - /// 紧急联系人手机号码 + /// 紧急联系人手机号 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_15)] + [Ignore] [JsonIgnore] public virtual string EmergencyContactMobile { get; init; } @@ -101,6 +112,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 紧急联系人 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string EmergencyContactName { get; init; } @@ -108,6 +120,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 毕业学校 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string GraduateSchool { get; init; } @@ -115,6 +128,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 身高 /// [Column] + [Ignore] [JsonIgnore] public virtual int? Height { get; init; } @@ -122,6 +136,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 住宅地址 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] + [Ignore] [JsonIgnore] public virtual string HomeAddress { get; init; } @@ -129,6 +144,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 住宅地区 /// [Column] + [Ignore] [JsonIgnore] public int? HomeArea { get; init; } @@ -136,6 +152,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 住宅电话 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string HomeTelephone { get; init; } @@ -143,6 +160,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 婚姻状况 /// [Column] + [Ignore] [JsonIgnore] public virtual MarriageStatues? MarriageStatus { get; init; } @@ -151,6 +169,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// /// 7 [Column] + [Ignore] [JsonIgnore] public virtual Nations? Nation { get; init; } @@ -158,6 +177,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 籍贯 /// [Column] + [Ignore] [JsonIgnore] public int? NationArea { get; init; } @@ -165,6 +185,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 政治面貌 /// [Column] + [Ignore] [JsonIgnore] public virtual PoliticalStatues? PoliticalStatus { get; init; } @@ -172,6 +193,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 职业 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string Profession { get; init; } @@ -179,6 +201,7 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 真实姓名 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)] + [Ignore] [JsonIgnore] public virtual string RealName { get; init; } @@ -186,12 +209,14 @@ public record Sys_UserProfile : VersionEntity, IRegister /// 性别 /// [Column] + [Ignore] [JsonIgnore] public virtual Sexes? Sex { get; init; } /// /// 用户基本信息 /// + [Ignore] [JsonIgnore] public Sys_User User { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserRole.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserRole.cs index 9706b102..e1cc70c0 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserRole.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_UserRole.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Sys; /// @@ -11,6 +9,7 @@ public record Sys_UserRole : VersionEntity /// /// 关联的角色 /// + [Ignore] [JsonIgnore] public Sys_Role Role { get; init; } @@ -18,12 +17,14 @@ public record Sys_UserRole : VersionEntity /// 角色编号 /// [Column] + [Ignore] [JsonIgnore] public long RoleId { get; init; } /// /// 关联的用户 /// + [Ignore] [JsonIgnore] public Sys_User User { get; init; } @@ -31,6 +32,7 @@ public record Sys_UserRole : VersionEntity /// 用户编号 /// [Column] + [Ignore] [JsonIgnore] public long UserId { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs index 7e2bb7e4..b830a2e4 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.DbMaps.Sys; @@ -13,6 +12,7 @@ public record Sys_VerifyCode : VersionEntity /// 验证码 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_7)] + [Ignore] [JsonIgnore] public virtual string Code { get; init; } @@ -20,6 +20,7 @@ public record Sys_VerifyCode : VersionEntity /// 目标设备 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Ignore] [JsonIgnore] public virtual string DestDevice { get; init; } @@ -27,6 +28,7 @@ public record Sys_VerifyCode : VersionEntity /// 设备类型 /// [Column] + [Ignore] [JsonIgnore] public virtual VerifyCodeDeviceTypes DeviceType { get; init; } @@ -34,6 +36,7 @@ public record Sys_VerifyCode : VersionEntity /// 发送报告 /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] + [Ignore] [JsonIgnore] public string Report { get; init; } @@ -41,6 +44,7 @@ public record Sys_VerifyCode : VersionEntity /// 验证码状态 /// [Column] + [Ignore] [JsonIgnore] public virtual VerifyCodeStatues Status { get; init; } @@ -48,6 +52,7 @@ public record Sys_VerifyCode : VersionEntity /// 验证码类型 /// [Column] + [Ignore] [JsonIgnore] public virtual VerifyCodeTypes Type { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Tpl/Tpl_Example.cs b/src/backend/NetAdmin.Domain/DbMaps/Tpl/Tpl_Example.cs index fdd06be0..1bcbaff2 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Tpl/Tpl_Example.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Tpl/Tpl_Example.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.DbMaps.Tpl; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs b/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs index 712a9a1d..c1638384 100644 --- a/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; - namespace NetAdmin.Domain.Dto.Dependency; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Api/CreateApiReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Api/CreateApiReq.cs index 7c600097..ca86afe8 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Api/CreateApiReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Api/CreateApiReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Api; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Api/ExportApiRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Api/ExportApiRsp.cs new file mode 100644 index 00000000..5996a866 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Api/ExportApiRsp.cs @@ -0,0 +1,35 @@ +namespace NetAdmin.Domain.Dto.Sys.Api; + +/// +/// 响应:导出接口 +/// +public record ExportApiRsp : QueryApiRsp +{ + /// + [Ignore] + public override IEnumerable Children { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.接口路径))] + public override string Id { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.请求方式))] + public override string Method { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.接口名称))] + public override string Name { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.接口描述))] + public override string Summary { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiReq.cs index fb0e1310..92b07f7b 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Api; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs index e94f1bcf..36465425 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs @@ -1,16 +1,12 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Api; /// /// 响应:查询接口 /// -public sealed record QueryApiRsp : Sys_Api +public record QueryApiRsp : Sys_Api { /// - public new IEnumerable Children { get; init; } + public new virtual IEnumerable Children { get; init; } /// public override string Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/CreateConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/CreateConfigReq.cs index cc4cc94b..134a6d3a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/CreateConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/CreateConfigReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Config; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs index aa3bc995..4d482470 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Config; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/ExportConfigRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/ExportConfigRsp.cs new file mode 100644 index 00000000..d3ffbef5 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/ExportConfigRsp.cs @@ -0,0 +1,60 @@ +using NetAdmin.Domain.Dto.Sys.Dept; +using NetAdmin.Domain.Dto.Sys.Role; + +namespace NetAdmin.Domain.Dto.Sys.Config; + +/// +/// 响应:导出配置 +/// +public record ExportConfigRsp : QueryConfigRsp, IRegister +{ + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.是否启用))] + public override bool Enabled { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.人工审核))] + public override bool UserRegisterConfirm { get; init; } + + /// + [Ignore] + public override QueryDeptRsp UserRegisterDept { get; init; } + + /// + /// 默认部门 + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.默认部门))] + public string UserRegisterDeptName { get; init; } + + /// + [Ignore] + public override QueryRoleRsp UserRegisterRole { get; init; } + + /// + /// 默认角色 + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.默认角色))] + public string UserRegisterRoleName { get; init; } + + /// + public void Register(TypeAdapterConfig config) + { + _ = config.ForType() + .Map(d => d.UserRegisterDeptName, s => s.UserRegisterDept.Name) + .Map(d => d.UserRegisterRoleName, s => s.UserRegisterRole.Name); + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs index f5992068..96008bb5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Config; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs index ea293dda..84938ed3 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.Domain.Dto.Sys.Role; @@ -9,7 +6,7 @@ namespace NetAdmin.Domain.Dto.Sys.Config; /// /// 响应:查询配置 /// -public sealed record QueryConfigRsp : Sys_Config +public record QueryConfigRsp : Sys_Config { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] @@ -29,7 +26,7 @@ public sealed record QueryConfigRsp : Sys_Config /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public new QueryDeptRsp UserRegisterDept { get; init; } + public new virtual QueryDeptRsp UserRegisterDept { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] @@ -37,7 +34,7 @@ public sealed record QueryConfigRsp : Sys_Config /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public new QueryRoleRsp UserRegisterRole { get; init; } + public new virtual QueryRoleRsp UserRegisterRole { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/SetConfigEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/SetConfigEnabledReq.cs index 73b9d70e..cf77c779 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/SetConfigEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/SetConfigEnabledReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Config; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/CreateDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/CreateDeptReq.cs index 78924630..5ba80ce9 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/CreateDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/CreateDeptReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs index 2820e063..664e41e1 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Dept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/ExportDeptRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/ExportDeptRsp.cs new file mode 100644 index 00000000..061c8529 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/ExportDeptRsp.cs @@ -0,0 +1,47 @@ +namespace NetAdmin.Domain.Dto.Sys.Dept; + +/// +/// 响应:导出部门 +/// +public record ExportDeptRsp : QueryDeptRsp +{ + /// + [Ignore] + public override IEnumerable Children { get; init; } + + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.是否启用))] + public override bool Enabled { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.部门名称))] + public override string Name { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.排序))] + public override long Sort { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.备注))] + public override string Summary { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs index 0271798f..54225d4f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs index cba55585..a3cdb87a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs @@ -1,16 +1,12 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dept; /// /// 响应:查询部门 /// -public sealed record QueryDeptRsp : Sys_Dept +public record QueryDeptRsp : Sys_Dept { /// - public new IEnumerable Children { get; init; } + public new virtual IEnumerable Children { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/SetDeptEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/SetDeptEnabledReq.cs index cca5973c..aac2dfe5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/SetDeptEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/SetDeptEnabledReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/CreateDicCatalogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/CreateDicCatalogReq.cs index 08da6f19..f66af602 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/CreateDicCatalogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/CreateDicCatalogReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Catalog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs index cd2bf11f..8fb81ea0 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Dic.Catalog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogReq.cs index 7109e016..0d2081a9 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Catalog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs index 76d3cb10..f538d310 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Catalog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/CreateDicContentReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/CreateDicContentReq.cs index cbff60b0..44156f0a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/CreateDicContentReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/CreateDicContentReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs index 557a0954..59ff032a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/ExportDicContentRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/ExportDicContentRsp.cs new file mode 100644 index 00000000..2d80f8cf --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/ExportDicContentRsp.cs @@ -0,0 +1,25 @@ +namespace NetAdmin.Domain.Dto.Sys.Dic.Content; + +/// +/// 响应:导出字典内容 +/// +public record ExportDicContentRsp : QueryDicContentRsp +{ + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.项名))] + public override string Key { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.项值))] + public override string Value { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/GetDicValueReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/GetDicValueReq.cs index 6be897c4..1489eed0 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/GetDicValueReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/GetDicValueReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentReq.cs index 542721db..8e6f3c52 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentRsp.cs index f1fcdecd..7df2f013 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/QueryDicContentRsp.cs @@ -1,12 +1,9 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// /// 响应:查询字典内容 /// -public sealed record QueryDicContentRsp : Sys_DicContent +public record QueryDicContentRsp : Sys_DicContent { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/CreateJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/CreateJobReq.cs index 80483d7b..a736fabc 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/CreateJobReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/CreateJobReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/ExportJobRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/ExportJobRsp.cs new file mode 100644 index 00000000..a6fe2777 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/ExportJobRsp.cs @@ -0,0 +1,81 @@ +using NetAdmin.Domain.Dto.Sys.User; +using NetAdmin.Domain.Enums.Sys; +using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; + +namespace NetAdmin.Domain.Dto.Sys.Job; + +/// +/// 响应:导出计划作业 +/// +public record ExportJobRsp : QueryJobRsp +{ + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.上次执行状态))] + public override string LastStatusCode => base.LastStatusCode; + + /// + [CsvIndex(10)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(9)] + [Ignore(false)] + [Name(nameof(Ln.是否启用))] + public override bool Enabled { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.执行计划))] + public override string ExecutionCron { get; init; } + + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.请求方式))] + public override HttpMethods HttpMethod { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.作业名称))] + public override string JobName { get; init; } + + /// + [CsvIndex(7)] + [Ignore(false)] + [Name(nameof(Ln.上次执行耗时))] + public override long? LastDuration { get; init; } + + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.上次执行时间))] + public override DateTime? LastExecTime { get; init; } + + /// + [CsvIndex(8)] + [Ignore(false)] + [Name(nameof(Ln.下次执行时间))] + public override DateTime? NextExecTime { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.作业状态))] + public override JobStatues Status { get; init; } + + /// + [Ignore] + public override QueryUserRsp User { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs index 21ba8801..21384c0a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Job; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs index 2b8e4b09..6cb1ff1f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Job; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs index ab35051b..81e493fa 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.User; using NetAdmin.Domain.Enums.Sys; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; @@ -10,10 +7,10 @@ namespace NetAdmin.Domain.Dto.Sys.Job; /// /// 响应:查询计划作业 /// -public sealed record QueryJobRsp : Sys_Job +public record QueryJobRsp : Sys_Job { /// - public new string LastStatusCode => + public new virtual string LastStatusCode => #pragma warning disable IDE0072 base.LastStatusCode switch { #pragma warning restore IDE0072 @@ -104,7 +101,7 @@ public sealed record QueryJobRsp : Sys_Job public override string Summary { get; init; } /// - public new QueryUserRsp User { get; init; } + public new virtual QueryUserRsp User { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs index 30aaf62e..0ec6f97c 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Job; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/CreateJobRecordReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/CreateJobRecordReq.cs index c9e6d53d..df6c3b8f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/CreateJobRecordReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/CreateJobRecordReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.JobRecord; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/ExportJobRecordRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/ExportJobRecordRsp.cs new file mode 100644 index 00000000..e13c99b3 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/ExportJobRecordRsp.cs @@ -0,0 +1,57 @@ +using NetAdmin.Domain.Dto.Sys.Job; + +namespace NetAdmin.Domain.Dto.Sys.JobRecord; + +/// +/// 响应:导出计划作业执行记录 +/// +public record ExportJobRecordRsp : QueryJobRecordRsp, IRegister +{ + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.响应状态码))] + public override string HttpStatusCode => base.HttpStatusCode; + + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.执行耗时))] + public override long Duration { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [Ignore] + public override QueryJobRsp Job { get; init; } + + /// + /// 作业名称 + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.作业名称))] + public string JobName { get; set; } + + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.响应体))] + public override string ResponseBody { get; init; } + + /// + public void Register(TypeAdapterConfig config) + { + _ = config.ForType().Map(d => d.JobName, s => s.Job.JobName); + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs index 3c3020eb..6c21476f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.JobRecord; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs index 70f06d9b..4c7b5366 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Job; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; @@ -9,10 +6,10 @@ namespace NetAdmin.Domain.Dto.Sys.JobRecord; /// /// 响应:查询计划作业执行记录 /// -public sealed record QueryJobRecordRsp : Sys_JobRecord +public record QueryJobRecordRsp : Sys_JobRecord { /// - public new string HttpStatusCode => + public new virtual string HttpStatusCode => base.HttpStatusCode == Numbers.HTTP_STATUS_BIZ_FAIL ? nameof(ErrorCodes.Unhandled).ToLowerCamelCase() : ((HttpStatusCode)base.HttpStatusCode).ToString().ToLowerCamelCase(); @@ -36,7 +33,7 @@ public sealed record QueryJobRecordRsp : Sys_JobRecord /// /// 作业信息 /// - public new QueryJobRsp Job { get; init; } + public new virtual QueryJobRsp Job { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/CreateMenuReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/CreateMenuReq.cs index b4bc03e9..e0527c41 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/CreateMenuReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/CreateMenuReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.Menu; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs index 768b59f5..ef1aed9b 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Menu; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs index a1e19c05..4a0c612f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Menu; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs index 3f04b5ff..0a51f482 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Menu; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/CreateRequestLogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/CreateRequestLogReq.cs index bbf1681a..f0000cd3 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/CreateRequestLogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/CreateRequestLogReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.RequestLog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/ExportRequestLogRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/ExportRequestLogRsp.cs new file mode 100644 index 00000000..65646bcb --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/ExportRequestLogRsp.cs @@ -0,0 +1,79 @@ +using NetAdmin.Domain.Dto.Sys.User; + +namespace NetAdmin.Domain.Dto.Sys.RequestLog; + +/// +/// 响应:导出请求日志 +/// +public record ExportRequestLogRsp : QueryRequestLogRsp +{ + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.客户端IP))] + public override string CreatedClientIp => base.CreatedClientIp; + + /// + [Ignore] + public override string LoginName => base.LoginName; + + /// + [CsvIndex(7)] + [Ignore(false)] + [Name(nameof(Ln.操作系统))] + public override string Os => base.Os; + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.接口路径))] + public override string ApiId { get; init; } + + /// + [CsvIndex(8)] + [Ignore(false)] + [Name(nameof(Ln.用户代理))] + public override string CreatedUserAgent { get; init; } + + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.执行耗时))] + public override long Duration { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.响应状态码))] + public override int HttpStatusCode { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.请求方式))] + public override string Method { get; init; } + + /// + [Ignore] + public override QueryUserRsp User { get; init; } + + /// + /// 用户名 + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.用户名))] + public string UserName { get; init; } + + /// + public override void Register(TypeAdapterConfig config) + { + _ = config.ForType().Map(d => d.UserName, s => s.User.UserName); + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogReq.cs index 9d175f7b..ca81e857 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.RequestLog; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogRsp.cs index bb2d296d..e9703a69 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/RequestLog/QueryRequestLogRsp.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.User; namespace NetAdmin.Domain.Dto.Sys.RequestLog; @@ -7,22 +5,22 @@ namespace NetAdmin.Domain.Dto.Sys.RequestLog; /// /// 响应:查询请求日志 /// -public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister +public record QueryRequestLogRsp : Sys_RequestLog, IRegister { /// /// 创建者客户端IP /// - public new string CreatedClientIp => base.CreatedClientIp?.ToIpV4(); + public new virtual string CreatedClientIp => base.CreatedClientIp?.ToIpV4(); /// /// 登录名 /// - public string LoginName => RequestBody?.ToObject()?.Account; + public virtual string LoginName => RequestBody?.ToObject()?.Account; /// /// 操作系统 /// - public string Os => UserAgentParser.Create(CreatedUserAgent)?.Platform; + public virtual string Os => UserAgentParser.Create(CreatedUserAgent)?.Platform; /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] @@ -94,14 +92,14 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister public override int? ServerIp { get; init; } /// - public new QueryUserRsp User { get; init; } + public new virtual QueryUserRsp User { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public override long? UserId { get; init; } /// - public void Register(TypeAdapterConfig config) + public virtual void Register(TypeAdapterConfig config) { _ = config.ForType().Map(d => d.ApiSummary, s => s.Api.Summary); } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/CreateRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/CreateRoleReq.cs index cf75bf71..4aad86af 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/CreateRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/CreateRoleReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.Role; @@ -8,13 +5,18 @@ namespace NetAdmin.Domain.Dto.Sys.Role; /// /// 请求:创建角色 /// -public record CreateRoleReq : Sys_Role +public record CreateRoleReq : Sys_Role, IValidatableObject { /// /// 角色-接口映射 /// public IReadOnlyCollection ApiIds { get; init; } + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonString] + public override string DashboardLayout { get; set; } + /// [EnumDataType(typeof(DataScopes), ErrorMessageResourceType = typeof(Ln) , ErrorMessageResourceName = nameof(Ln.角色数据范围不正确))] @@ -55,4 +57,14 @@ public record CreateRoleReq : Sys_Role /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public override string Summary { get; init; } + + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (validationContext.MemberName != null) { + DashboardLayout = JsonSerializer.Serialize(JsonDocument.Parse(DashboardLayout)); + } + + yield break; + } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs index 53e8bb7e..b0b1a37c 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/ExportRoleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/ExportRoleRsp.cs new file mode 100644 index 00000000..d9f21853 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/ExportRoleRsp.cs @@ -0,0 +1,57 @@ +using NetAdmin.Domain.Enums.Sys; + +namespace NetAdmin.Domain.Dto.Sys.Role; + +/// +/// 响应:导出角色 +/// +public sealed record ExportRoleRsp : QueryRoleRsp +{ + /// + [CsvIndex(7)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.数据范围))] + public override DataScopes DataScope { get; init; } + + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.显示仪表板))] + public override bool DisplayDashboard { get; init; } + + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.是否启用))] + public override bool Enabled { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.无限权限))] + public override bool IgnorePermissionControl { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.角色名称))] + public override string Name { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.排序))] + public override long Sort { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/GetMenusRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/GetMenusRsp.cs index 64c8153f..e7ab6c9d 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/GetMenusRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/GetMenusRsp.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs index 5be37137..9010121b 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs index 007b3b6f..6b912728 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.Role; @@ -8,7 +5,7 @@ namespace NetAdmin.Domain.Dto.Sys.Role; /// /// 响应:查询角色 /// -public sealed record QueryRoleRsp : Sys_Role, IRegister +public record QueryRoleRsp : Sys_Role { /// /// 角色-接口映射 @@ -20,6 +17,10 @@ public sealed record QueryRoleRsp : Sys_Role, IRegister [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override DateTime CreatedTime { get; init; } + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public override string DashboardLayout { get; set; } + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override DataScopes DataScope { get; init; } @@ -69,7 +70,7 @@ public sealed record QueryRoleRsp : Sys_Role, IRegister public override long Version { get; init; } /// - public new void Register(TypeAdapterConfig config) + public override void Register(TypeAdapterConfig config) { _ = config.ForType() // .IgnoreIf((s, _) => s.Depts == null, d => d.DeptIds) diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetDisplayDashboardReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetDisplayDashboardReq.cs index a4c22f34..56642969 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetDisplayDashboardReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetDisplayDashboardReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetIgnorePermissionControlReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetIgnorePermissionControlReq.cs index a6d3f4cb..02367a3a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetIgnorePermissionControlReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetIgnorePermissionControlReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetRoleEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetRoleEnabledReq.cs index adb8f04a..94b20278 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetRoleEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/SetRoleEnabledReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.Role; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/CreateSiteMsgReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/CreateSiteMsgReq.cs index 749b8af7..f1d3800f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/CreateSiteMsgReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/CreateSiteMsgReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsg; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/ExportSiteMsgRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/ExportSiteMsgRsp.cs new file mode 100644 index 00000000..2d8f480d --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/ExportSiteMsgRsp.cs @@ -0,0 +1,60 @@ +using NetAdmin.Domain.Dto.Sys.Dept; +using NetAdmin.Domain.Dto.Sys.Role; +using NetAdmin.Domain.Dto.Sys.User; +using NetAdmin.Domain.Enums.Sys; + +namespace NetAdmin.Domain.Dto.Sys.SiteMsg; + +/// +/// 响应:导出站内信 +/// +public record ExportSiteMsgRsp : QuerySiteMsgRsp +{ + /// + [CsvIndex(5)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.用户名))] + public override string CreatedUserName { get; init; } + + /// + [Ignore] + public override IEnumerable Depts { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.消息类型))] + public override SiteMsgTypes MsgType { get; init; } + + /// + [Ignore] + public override IEnumerable Roles { get; init; } + + /// + [CsvIndex(4)] + [Ignore(false)] + [Name(nameof(Ln.消息摘要))] + public override string Summary { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.消息主题))] + public override string Title { get; init; } + + /// + [Ignore] + public override IEnumerable Users { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs index 24462671..d53f43b5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsg; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs index 144771b5..3c77ba3f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.Domain.Dto.Sys.Role; using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; @@ -12,7 +9,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsg; /// /// 响应:查询站内信 /// -public sealed record QuerySiteMsgRsp : Sys_SiteMsg +public record QuerySiteMsgRsp : Sys_SiteMsg { /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] @@ -28,7 +25,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public new IEnumerable Depts { get; init; } + public new virtual IEnumerable Depts { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] @@ -49,7 +46,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public new IEnumerable Roles { get; init; } + public new virtual IEnumerable Roles { get; init; } /// /// 消息发送者 @@ -66,7 +63,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public new IEnumerable Users { get; init; } + public new virtual IEnumerable Users { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/CreateSiteMsgDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/CreateSiteMsgDeptReq.cs index 145a52c1..3cd27ff2 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/CreateSiteMsgDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/CreateSiteMsgDeptReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs index ca632094..4e722d00 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs index 97ecaf33..0674df0a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/CreateSiteMsgFlagReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/CreateSiteMsgFlagReq.cs index 442d5214..a8c37eda 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/CreateSiteMsgFlagReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/CreateSiteMsgFlagReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs index 63ce3bd9..b499a418 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.Dto.Sys.SiteMsg; namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs index de813a5e..b3e786b0 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs index b2396079..41648337 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/CreateSiteMsgRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/CreateSiteMsgRoleReq.cs index 62ea48da..04e74c36 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/CreateSiteMsgRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/CreateSiteMsgRoleReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs index 0edc66ed..9912642d 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs index a9796d27..e5b69d21 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/CreateSiteMsgUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/CreateSiteMsgUserReq.cs index 477154b2..1568d1be 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/CreateSiteMsgUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/CreateSiteMsgUserReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs index e4af9779..d90757c5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs index 1f650c82..5620466b 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckMobileAvailableReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckMobileAvailableReq.cs index f05a0238..2fe31e7f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckMobileAvailableReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckMobileAvailableReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckUserNameAvailableReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckUserNameAvailableReq.cs index 260b001b..96dd1520 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckUserNameAvailableReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CheckUserNameAvailableReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs index e665a481..b541f285 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs index 08ba8852..67a940ec 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.UserProfile; namespace NetAdmin.Domain.Dto.Sys.User; @@ -6,7 +5,7 @@ namespace NetAdmin.Domain.Dto.Sys.User; /// /// 请求:创建用户 /// -public sealed record CreateUserReq : CreateEditUserReq, IRegister +public sealed record CreateUserReq : CreateEditUserReq { /// [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.密码不能为空))] @@ -16,7 +15,7 @@ public sealed record CreateUserReq : CreateEditUserReq, IRegister public new CreateUserProfileReq Profile { get; init; } /// - public new void Register(TypeAdapterConfig config) + public override void Register(TypeAdapterConfig config) { _ = config.ForType() // .Map(d => d.Mobile, s => s.VerifySmsCodeReq.DestDevice) diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs index c49d8a66..622c7dc5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.UserProfile; namespace NetAdmin.Domain.Dto.Sys.User; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/ExportUserRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/ExportUserRsp.cs new file mode 100644 index 00000000..8ac7bead --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/ExportUserRsp.cs @@ -0,0 +1,76 @@ +using NetAdmin.Domain.Dto.Sys.Dept; +using NetAdmin.Domain.Dto.Sys.Role; + +namespace NetAdmin.Domain.Dto.Sys.User; + +/// +/// 响应:导出用户 +/// +public record ExportUserRsp : QueryUserRsp +{ + /// + [CsvIndex(7)] + [Ignore(false)] + [Name(nameof(Ln.创建时间))] + public override DateTime CreatedTime { get; init; } + + /// + [Ignore] + public override QueryDeptRsp Dept { get; init; } + + /// + /// 所属部门 + /// + [CsvIndex(5)] + [Name(nameof(Ln.所属部门))] + public string DeptName { get; init; } + + /// + [CsvIndex(3)] + [Ignore(false)] + [Name(nameof(Ln.邮箱号))] + public override string Email { get; init; } + + /// + [CsvIndex(6)] + [Ignore(false)] + [Name(nameof(Ln.是否启用))] + public override bool Enabled { get; init; } + + /// + [CsvIndex(0)] + [Ignore(false)] + [Name(nameof(Ln.唯一编码))] + public override long Id { get; init; } + + /// + [CsvIndex(2)] + [Ignore(false)] + [Name(nameof(Ln.手机号))] + public override string Mobile { get; init; } + + /// + /// 所属角色 + /// + [CsvIndex(4)] + [Name(nameof(Ln.所属角色))] + public string RoleNames { get; init; } + + /// + [Ignore] + public override IEnumerable Roles { get; init; } + + /// + [CsvIndex(1)] + [Ignore(false)] + [Name(nameof(Ln.用户名))] + public override string UserName { get; init; } + + /// + public override void Register(TypeAdapterConfig config) + { + _ = config.ForType() + .Map(d => d.DeptName, s => s.Dept.Name) + .Map(d => d.RoleNames, s => string.Join(',', s.Roles.Select(x => x.Name))); + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/LoginByPwdReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/LoginByPwdReq.cs index b61aa031..8e40bc57 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/LoginByPwdReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/LoginByPwdReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// @@ -8,7 +6,7 @@ namespace NetAdmin.Domain.Dto.Sys.User; public sealed record LoginByPwdReq : DataAbstraction { /// - /// 用户名、手机号码、邮箱 + /// 用户名、手机号、邮箱 /// [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.账号不能为空))] public string Account { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs index a96748ba..987dd5f0 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs index 7c15cc11..d27e2d9a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.Domain.Dto.Sys.Role; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/RegisterUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/RegisterUserReq.cs index 26a3706c..5f755aef 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/RegisterUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/RegisterUserReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.VerifyCode; namespace NetAdmin.Domain.Dto.Sys.User; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/ResetPasswordReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/ResetPasswordReq.cs index 29906b96..c8fa6425 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/ResetPasswordReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/ResetPasswordReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; using NetAdmin.Domain.Dto.Sys.VerifyCode; namespace NetAdmin.Domain.Dto.Sys.User; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs index 8b71e7be..2792a5fe 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetPasswordReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetPasswordReq.cs index 4d53a2e1..275fc461 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetPasswordReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetPasswordReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs index 8fdf5328..28932ceb 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.User; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/UserInfoRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/UserInfoRsp.cs index 6ec53a48..86897fd7 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/UserInfoRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/UserInfoRsp.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.Domain.Dto.Sys.Role; @@ -7,7 +6,7 @@ namespace NetAdmin.Domain.Dto.Sys.User; /// /// 响应:当前用户信息 /// -public sealed record UserInfoRsp : QueryUserRsp, IRegister +public sealed record UserInfoRsp : QueryUserRsp { /// public override QueryDeptRsp Dept { get; init; } @@ -16,7 +15,7 @@ public sealed record UserInfoRsp : QueryUserRsp, IRegister public override IEnumerable Roles { get; init; } /// - public new void Register(TypeAdapterConfig config) + public override void Register(TypeAdapterConfig config) { _ = config.ForType() // .IgnoreIf((s, _) => s.Mobile == null, d => d.Mobile) diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/CreateUserProfileReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/CreateUserProfileReq.cs index ab67718b..5875a02b 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/CreateUserProfileReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/CreateUserProfileReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dic.Content; namespace NetAdmin.Domain.Dto.Sys.UserProfile; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs index ed16df09..96e81a77 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// @@ -7,6 +5,11 @@ namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// public sealed record EditUserProfileReq : CreateUserProfileReq { + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonString] + public override string AppConfig { get; set; } + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Version { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/GetSessionUserAppConfigRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/GetSessionUserAppConfigRsp.cs index 12a390f6..40c0ce43 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/GetSessionUserAppConfigRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/GetSessionUserAppConfigRsp.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// @@ -11,7 +7,7 @@ public sealed record GetSessionUserAppConfigRsp : Sys_UserProfile { /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public override string AppConfig { get; init; } + public override string AppConfig { get; set; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs index 12a13c4a..cb9a2d96 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs index 052fd915..07ea21ad 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dic.Content; namespace NetAdmin.Domain.Dto.Sys.UserProfile; @@ -10,6 +7,10 @@ namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// public sealed record QueryUserProfileRsp : Sys_UserProfile { + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public override string AppConfig { get; set; } + /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public override DateTime? BornDate { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/SetSessionUserAppConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/SetSessionUserAppConfigReq.cs index 3da551ae..31786a04 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/SetSessionUserAppConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/SetSessionUserAppConfigReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// @@ -9,5 +7,6 @@ public record SetSessionUserAppConfigReq : Sys_UserProfile { /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public override string AppConfig { get; init; } + [JsonString] + public override string AppConfig { get; set; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/CreateVerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/CreateVerifyCodeReq.cs index edad0698..5ac27f24 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/CreateVerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/CreateVerifyCodeReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs index b8f83ffc..8abd3f58 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs index 6a4bd20c..1180146c 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs @@ -1,7 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeReq.cs index 3044492b..2ea0c9ca 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Captcha; using NetAdmin.Domain.Enums.Sys; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeRsp.cs index b4e248d7..35d11ed9 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SendVerifyCodeRsp.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs index 41dc43e7..3c2012b5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyCodeReq.cs index 6011f228..0a374ebe 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyCodeReq.cs @@ -1,6 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; - namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyEmailCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyEmailCodeReq.cs index a68a6e93..6de8758f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyEmailCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifyEmailCodeReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.VerifyCode; diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifySmsCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifySmsCodeReq.cs index 29033f47..dc14ce44 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifySmsCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/VerifySmsCodeReq.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes.DataValidation; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; namespace NetAdmin.Domain.Dto.Sys.VerifyCode; diff --git a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs index 67b2592d..dbeb8849 100644 --- a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs @@ -1,4 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Tpl; namespace NetAdmin.Domain.Dto.Tpl.Example; diff --git a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs index 46ce6cb8..27e7dffe 100644 --- a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.DbMaps.Dependency; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Tpl; namespace NetAdmin.Domain.Dto.Tpl.Example; diff --git a/src/backend/NetAdmin.Domain/Enums/Sys/JobStatues.cs b/src/backend/NetAdmin.Domain/Enums/Sys/JobStatues.cs index 69ee91da..584d9174 100644 --- a/src/backend/NetAdmin.Domain/Enums/Sys/JobStatues.cs +++ b/src/backend/NetAdmin.Domain/Enums/Sys/JobStatues.cs @@ -1,5 +1,3 @@ -using NetAdmin.Domain.Attributes; - namespace NetAdmin.Domain.Enums.Sys; /// diff --git a/src/backend/NetAdmin.Domain/NetAdmin.Domain.csproj b/src/backend/NetAdmin.Domain/NetAdmin.Domain.csproj index 3d157497..65d44c2e 100644 --- a/src/backend/NetAdmin.Domain/NetAdmin.Domain.csproj +++ b/src/backend/NetAdmin.Domain/NetAdmin.Domain.csproj @@ -9,4 +9,7 @@ + + + \ No newline at end of file diff --git a/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs b/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs index 5a049d5b..383342a5 100644 --- a/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs +++ b/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs @@ -1,6 +1,4 @@ -using NetAdmin.Domain.Attributes; using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Dependency.Fields; using Yitter.IdGenerator; namespace NetAdmin.Host.Utils; diff --git a/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs b/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs index 9830743c..d2850dd3 100644 --- a/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs +++ b/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs @@ -47,6 +47,7 @@ public static class Chars public const string FLG_FREE_SQL_GLOBAL_FILTER_MEMBER = nameof(FLG_FREE_SQL_GLOBAL_FILTER_MEMBER); public const string FLG_FREE_SQL_GLOBAL_FILTER_SELF = nameof(FLG_FREE_SQL_GLOBAL_FILTER_SELF); public const string FLG_FREE_SQL_GLOBAL_FILTER_TENANT = nameof(FLG_FREE_SQL_GLOBAL_FILTER_TENANT); + public const string FLG_FRONT_APP_SET_HOME_GRID = "APP_SET_HOME_GRID"; public const string FLG_HTTP_HEADER_KEY_ACCESS_TOKEN = "ACCESS-TOKEN"; public const string FLG_HTTP_HEADER_KEY_AUTHORIZATION = "Authorization"; public const string FLG_HTTP_HEADER_KEY_REFERER = "Referer"; diff --git a/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs b/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs index 6de67565..1443f50d 100644 --- a/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs +++ b/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs @@ -17,6 +17,7 @@ public static class Numbers public const long ID_DIC_CATALOG_GEO_AREA = 379794295185413; // 唯一编号:字典目录-行政区划字典 public const int MAX_LIMIT_BULK_REQ = 100; // 最大限制:批量请求数 + public const int MAX_LIMIT_EXPORT = 10000; // 最大限制:导出为CSV文件的条数 public const int MAX_LIMIT_PRINT_LEN_CONTENT = 4096; // 最大限制:打印长度(HTTP 内容) public const int MAX_LIMIT_PRINT_LEN_SQL = 4096; // 最大限制:打印长度(SQL 语句) public const int MAX_LIMIT_QUERY = 1000; // 最大限制:非分页查询条数 diff --git a/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminInvalidInputException.cs b/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminInvalidInputException.cs index 4286f747..f3d79819 100644 --- a/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminInvalidInputException.cs +++ b/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminInvalidInputException.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Infrastructure.Exceptions; /// /// 参数格式错误、内容校验错误等 /// -#pragma warning disable RCS1194 -public sealed class NetAdminInvalidInputException(string message = null, Exception innerException = null) - #pragma warning restore RCS1194 +#pragma warning disable DesignedForInheritance, RCS1194 +public class NetAdminInvalidInputException(string message = null, Exception innerException = null) + #pragma warning restore RCS1194, DesignedForInheritance : NetAdminException(ErrorCodes.InvalidInput, message, innerException) { } \ No newline at end of file diff --git a/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminValidateException.cs b/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminValidateException.cs index b3264d75..79260bd5 100644 --- a/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminValidateException.cs +++ b/src/backend/NetAdmin.Infrastructure/Exceptions/NetAdminValidateException.cs @@ -9,7 +9,7 @@ namespace NetAdmin.Infrastructure.Exceptions; #pragma warning disable RCS1194 public sealed class NetAdminValidateException(Dictionary validateResults) #pragma warning restore RCS1194 - : NetAdminInvalidOperationException(null) + : NetAdminInvalidInputException { /// /// 验证结果 diff --git a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj index fad99b56..0c7da1c9 100644 --- a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj +++ b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/src/backend/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs b/src/backend/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs index 13569216..d3b3aefb 100644 --- a/src/backend/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs +++ b/src/backend/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs @@ -14,6 +14,7 @@ public sealed class FreeSqlBuilder(DatabaseOptions databaseOptions) public IFreeSql Build(FreeSqlInitMethods initMethods) { var freeSql = new FreeSql.FreeSqlBuilder().UseConnectionString(databaseOptions.DbType, databaseOptions.ConnStr) + .UseGenerateCommandParameterWithLambda(true) .UseAutoSyncStructure(false) .Build(); diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs index 6b04d5f0..8321ad87 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs @@ -49,6 +49,11 @@ public interface IDicModule /// Task EditContentAsync(EditDicContentReq req); + /// + /// 导出字典内容 + /// + Task ExportContentAsync(QueryReq req); + /// /// 获取单个字典目录 /// diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs index 4eb1b95e..0cddc190 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs @@ -14,6 +14,11 @@ public interface IJobModule : ICrudModule { + /// + /// 作业记录计数 + /// + Task CountRecordAsync(QueryReq req); + /// /// 编辑作业 /// @@ -24,6 +29,16 @@ public interface IJobModule : ICrudModule Task ExecuteAsync(QueryJobReq req); + /// + /// 导出作业记录 + /// + Task ExportRecordAsync(QueryReq req); + + /// + /// 获取单个作业记录 + /// + Task GetRecordAsync(QueryJobRecordReq req); + /// /// 获取作业记录条形图数据 /// @@ -39,15 +54,10 @@ public interface IJobModule : ICrudModule Task> GetRecordPieChartByNameAsync(QueryReq req); - /// - /// 获取单个作业记录 - /// - Task RecordGetAsync(QueryJobRecordReq req); - /// /// 分页查询作业记录 /// - Task> RecordPagedQueryAsync(PagedQueryReq req); + Task> PagedQueryRecordAsync(PagedQueryReq req); /// /// 设置计划作业启用状态 diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs index 9ca28fea..c0174a64 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Api; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -57,6 +58,39 @@ public sealed class ApiService( .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.接口导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public Task GetAsync(QueryApiReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs index 1113f312..e8cafc9b 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Config; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -74,6 +75,39 @@ public sealed class ConfigService(BasicRepository rpo) // .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.配置导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryConfigReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConstantService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConstantService.cs index bc380bb5..fa27b0a9 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConstantService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConstantService.cs @@ -1,6 +1,5 @@ using Microsoft.OpenApi.Extensions; using NetAdmin.Application.Services; -using NetAdmin.Domain.Attributes; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs index 419f4b60..d8e184ad 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -92,6 +93,39 @@ public sealed class DeptService(BasicRepository rpo) // .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.部门导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryDeptReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs index e02a1851..70eb0217 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Dic.Catalog; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -80,6 +79,12 @@ public sealed class DicCatalogService(BasicRepository rpo) .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QueryDicCatalogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs index e5687b23..68a5eeee 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Dic.Content; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -94,6 +95,39 @@ public sealed class DicContentService(BasicRepository rpo) .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.字典内容导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryDicContentReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs index 723777a5..69f7cac9 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs @@ -66,6 +66,13 @@ public sealed class DicService(IDicCatalogService catalogService, IDicContentSer return contentService.EditAsync(req); } + /// + public Task ExportContentAsync(QueryReq req) + { + req.ThrowIfInvalid(); + return contentService.ExportAsync(req); + } + /// public Task GetCatalogAsync(QueryDicCatalogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs index 10711542..62128cfb 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys; using NetAdmin.Domain.Dto.Sys.JobRecord; @@ -63,6 +64,39 @@ public sealed class JobRecordService(BasicRepository rpo) / .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.计划作业执行记录导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryJobRecordReq req) { @@ -170,7 +204,8 @@ public sealed class JobRecordService(BasicRepository rpo) / .WhereDynamic(req.Filter) .WhereIf( // req.Keywords?.Length > 0 - , a => a.JobId == req.Keywords.Int64Try(0) || a.Id == req.Keywords.Int64Try(0)); + , a => a.JobId == req.Keywords.Int64Try(0) || a.Id == req.Keywords.Int64Try(0) || + a.Job.JobName == req.Keywords); switch (req.Order) { case Orders.None: return ret; diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs index ddc4c703..eb9c8b81 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs @@ -1,8 +1,9 @@ using Cronos; +using CsvHelper; using FreeSql.Internal; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys; using NetAdmin.Domain.Dto.Sys.Job; @@ -41,6 +42,12 @@ public sealed class JobService(BasicRepository rpo, IJobRecordSer .CountAsync(); } + /// + public Task CountRecordAsync(QueryReq req) + { + return jobRecordService.CountAsync(req); + } + /// public async Task CreateAsync(CreateJobReq req) { @@ -132,6 +139,46 @@ public sealed class JobService(BasicRepository rpo, IJobRecordSer .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.计划作业导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + + /// + public Task ExportRecordAsync(QueryReq req) + { + req.ThrowIfInvalid(); + return jobRecordService.ExportAsync(req); + } + /// public async Task FinishJobAsync(FinishJobReq req) { @@ -209,6 +256,13 @@ public sealed class JobService(BasicRepository rpo, IJobRecordSer #endif } + /// + public Task GetRecordAsync(QueryJobRecordReq req) + { + req.ThrowIfInvalid(); + return jobRecordService.GetAsync(req); + } + /// public Task> GetRecordBarChartAsync(QueryReq req) { @@ -247,6 +301,13 @@ public sealed class JobService(BasicRepository rpo, IJobRecordSer return new PagedQueryRsp(req.Page, req.PageSize, total, list.Adapt>()); } + /// + public Task> PagedQueryRecordAsync(PagedQueryReq req) + { + req.ThrowIfInvalid(); + return jobRecordService.PagedQueryAsync(req); + } + /// public async Task> QueryAsync(QueryReq req) { @@ -261,20 +322,6 @@ public sealed class JobService(BasicRepository rpo, IJobRecordSer return ret.Adapt>(); } - /// - public Task RecordGetAsync(QueryJobRecordReq req) - { - req.ThrowIfInvalid(); - return jobRecordService.GetAsync(req); - } - - /// - public Task> RecordPagedQueryAsync(PagedQueryReq req) - { - req.ThrowIfInvalid(); - return jobRecordService.PagedQueryAsync(req); - } - /// public async Task ReleaseStuckTaskAsync() { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs index 09d90eab..6756791a 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Menu; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -79,6 +78,12 @@ public sealed class MenuService(BasicRepository rpo, IUserServic .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QueryMenuReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs index 0b21470c..a66150f5 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys; using NetAdmin.Domain.Dto.Sys.RequestLog; @@ -65,6 +66,39 @@ public sealed class RequestLogService(BasicRepository rpo) .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.请求日志导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryRequestLogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs index 2707f7c2..9d6641e7 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs @@ -1,6 +1,7 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Role; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -86,6 +87,39 @@ public sealed class RoleService(BasicRepository rpo) // .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.角色导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryRoleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs index f392fa6d..e100ed10 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgDept; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -62,6 +61,12 @@ public sealed class SiteMsgDeptService(BasicRepository rp .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QuerySiteMsgDeptReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs index 650de106..76e04cd3 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -62,6 +61,12 @@ public sealed class SiteMsgFlagService(BasicRepository rp .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QuerySiteMsgFlagReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs index 8e734eea..428540a6 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgRole; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -62,6 +61,12 @@ public sealed class SiteMsgRoleService(BasicRepository rp .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QuerySiteMsgRoleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs index 3abc1c54..4ac138c8 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs @@ -1,7 +1,8 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsg; using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; @@ -110,6 +111,39 @@ public sealed class SiteMsgService( .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.站内信导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QuerySiteMsgReq req) { @@ -325,7 +359,7 @@ public sealed class SiteMsgService( .LeftJoin((a, _, c, _, _, _) => a.Id == c.SiteMsgId) .LeftJoin((a, _, _, d, _, _) => a.Id == d.SiteMsgId) .LeftJoin((a, _, _, _, e, _) => a.Id == e.SiteMsgId) - .LeftJoin((a, b, _, _, _, f) => a.Id == f.SiteMsgId && f.UserId == b.Id) + .LeftJoin((a, _, _, _, _, f) => a.Id == f.SiteMsgId && f.UserId == contextUserInfo.Id) .WhereDynamicFilter(req.DynamicFilter) .Where((a, _, c, d, e, f) => (SqlExt.EqualIsNull(f.UserSiteMsgStatus) || diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs index 30f04f04..24041f22 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgUser; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -62,6 +61,12 @@ public sealed class SiteMsgUserService(BasicRepository rp .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QuerySiteMsgUserReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs index adbdab7d..fa33da8e 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs @@ -1,6 +1,6 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; +using NetAdmin.Domain.Contexts; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Dic.Content; using NetAdmin.Domain.Dto.Sys.UserProfile; @@ -12,6 +12,26 @@ namespace NetAdmin.SysComponent.Application.Services.Sys; public sealed class UserProfileService(BasicRepository rpo) // : RepositoryService(rpo), IUserProfileService { + /// + /// 构建应用配置 + /// + public static string BuildAppConfig(Dictionary roles) + { + try { + return new string[][] { [ + Chars.FLG_FRONT_APP_SET_HOME_GRID + , new { + content = roles.MaxBy(x => x.Key).Value.ToObject() + , datetime = 0 + }.ToJson() + ] + }.ToJson(); + } + catch { + return "[]"; + } + } + /// public async Task BulkDeleteAsync(BulkReq req) { @@ -70,6 +90,12 @@ public sealed class UserProfileService(BasicRepository rp .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QueryUserProfileReq req) { @@ -158,6 +184,13 @@ public sealed class UserProfileService(BasicRepository rp public Task SetSessionUserAppConfigAsync(SetSessionUserAppConfigReq req) { req.ThrowIfInvalid(); + + // 默认仪表版 + if (req.AppConfig == "[]") { + req.AppConfig = BuildAppConfig(App.GetService() + .Roles.ToDictionary(x => x.Id, x => x.DashboardLayout)); + } + return UpdateAsync(req, [nameof(req.AppConfig)], null, a => a.Id == UserToken.Id, null, true); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs index 34142a48..4c3675e6 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs @@ -1,8 +1,8 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Attributes.DataValidation; using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.User; using NetAdmin.Domain.Dto.Sys.UserProfile; @@ -81,7 +81,7 @@ public sealed class UserService( public async Task CreateAsync(CreateUserReq req) { req.ThrowIfInvalid(); - await CreateEditCheckAsync(req).ConfigureAwait(false); + var roles = await CreateEditCheckAsync(req).ConfigureAwait(false); // 主表 var entity = req.Adapt(); @@ -91,7 +91,13 @@ public sealed class UserService( await Rpo.SaveManyAsync(entity, nameof(entity.Roles)).ConfigureAwait(false); // 档案表 - _ = await userProfileService.CreateAsync((req.Profile ?? new CreateUserProfileReq()) with { Id = dbUser.Id }) + var appConfig = UserProfileService.BuildAppConfig(roles); + + _ = await userProfileService.CreateAsync((req.Profile ?? new CreateUserProfileReq()) with // + { + Id = dbUser.Id // + , AppConfig = appConfig + }) .ConfigureAwait(false); var ret = await QueryAsync(new QueryReq { Filter = new QueryUserReq { Id = dbUser.Id } }) .ConfigureAwait(false); @@ -119,7 +125,7 @@ public sealed class UserService( public async Task EditAsync(EditUserReq req) { req.ThrowIfInvalid(); - await CreateEditCheckAsync(req).ConfigureAwait(false); + _ = await CreateEditCheckAsync(req).ConfigureAwait(false); // 主表 var entity = req.Adapt(); @@ -153,6 +159,43 @@ public sealed class UserService( return await (await QueryInternalAsync(req).ConfigureAwait(false)).AnyAsync().ConfigureAwait(false); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + #pragma warning disable VSTHRD103, S6966 + + // ReSharper disable once MethodHasAsyncOverload + var data = await QueryInternal(req) + #pragma warning restore S6966, VSTHRD103 + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.用户导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryUserReq req) { @@ -443,13 +486,13 @@ public sealed class UserService( }; } - private async Task CreateEditCheckAsync(CreateEditUserReq req) + private async Task> CreateEditCheckAsync(CreateEditUserReq req) { // 检查角色是否存在 var roles = await Rpo.Orm.Select() .ForUpdate() .Where(a => req.RoleIds.Contains(a.Id)) - .ToListAsync(a => a.Id) + .ToDictionaryAsync(a => a.Id, a => a.DashboardLayout) .ConfigureAwait(false); if (roles.Count != req.RoleIds.Count) { throw new NetAdminInvalidOperationException(Ln.角色不存在); @@ -462,40 +505,11 @@ public sealed class UserService( .ToListAsync(a => a.Id) .ConfigureAwait(false); - if (dept.Count != 1) { - throw new NetAdminInvalidOperationException(Ln.部门不存在); - } + return dept.Count != 1 ? throw new NetAdminInvalidOperationException(Ln.部门不存在) : roles; } - private ISelect QueryInternal(QueryReq req) + private ISelect QueryInternal(QueryReq req, IEnumerable deptIds) { - var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); - switch (req.Order) { - case Orders.None: - return ret; - case Orders.Random: - return ret.OrderByRandom(); - } - - ret = ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending); - if (!req.Prop?.Equals(nameof(req.Filter.Id), StringComparison.OrdinalIgnoreCase) ?? true) { - ret = ret.OrderByDescending(a => a.Id); - } - - return ret; - } - - private async Task> QueryInternalAsync(QueryReq req) - { - IEnumerable deptIds = null; - if (req.Filter?.DeptId > 0) { - deptIds = await Rpo.Orm.Select() - .Where(a => a.Id == req.Filter.DeptId) - .AsTreeCte() - .ToListAsync(a => a.Id) - .ConfigureAwait(false); - } - var ret = Rpo.Select.Include(a => a.Dept) .IncludeMany(a => a.Roles.Select(b => new Sys_Role { Id = b.Id, Name = b.Name })) .WhereDynamicFilter(req.DynamicFilter) @@ -524,4 +538,28 @@ public sealed class UserService( return ret; } + + private ISelect QueryInternal(QueryReq req) + { + IEnumerable deptIds = null; + if (req.Filter?.DeptId > 0) { + deptIds = Rpo.Orm.Select().Where(a => a.Id == req.Filter.DeptId).AsTreeCte().ToList(a => a.Id); + } + + return QueryInternal(req, deptIds); + } + + private async Task> QueryInternalAsync(QueryReq req) + { + IEnumerable deptIds = null; + if (req.Filter?.DeptId > 0) { + deptIds = await Rpo.Orm.Select() + .Where(a => a.Id == req.Filter.DeptId) + .AsTreeCte() + .ToListAsync(a => a.Id) + .ConfigureAwait(false); + } + + return QueryInternal(req, deptIds); + } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs index fed31b9d..8e228d0b 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs @@ -1,6 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.VerifyCode; using NetAdmin.Domain.Enums.Sys; @@ -72,6 +71,12 @@ public sealed class VerifyCodeService(BasicRepository rpo, .AnyAsync(); } + /// + public Task ExportAsync(QueryReq req) + { + throw new NotImplementedException(); + } + /// public async Task GetAsync(QueryVerifyCodeReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs index 833f9efe..4a56a722 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs @@ -1,3 +1,5 @@ +using CsvHelper; +using Microsoft.Net.Http.Headers; using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; using NetAdmin.Domain.DbMaps.Tpl; @@ -62,6 +64,39 @@ public sealed class ExampleService(BasicRepository rpo) // .AnyAsync(); } + /// + public async Task ExportAsync(QueryReq req) + { + req.ThrowIfInvalid(); + var data = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(Numbers.MAX_LIMIT_EXPORT) + .ToListAsync() + .ConfigureAwait(false); + var list = data.Adapt>(); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.WriteHeader(); + await csv.NextRecordAsync().ConfigureAwait(false); + + foreach (var item in list) { + csv.WriteRecord(item); + await csv.NextRecordAsync().ConfigureAwait(false); + } + + await csv.FlushAsync().ConfigureAwait(false); + _ = stream.Seek(0, SeekOrigin.Begin); + + App.HttpContext.Response.Headers.ContentDisposition + = new ContentDispositionHeaderValue(Chars.FLG_HTTP_HEADER_VALUE_ATTACHMENT) { + FileNameStar = $"{Ln.示例导出}_{DateTime.Now:yyyy.MM.dd-HH.mm.ss}.csv" + }.ToString(); + return new FileStreamResult(stream, Chars.FLG_HTTP_HEADER_VALUE_APPLICATION_OCTET_STREAM); + } + /// public async Task GetAsync(QueryExampleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs index e58e0e66..57c98a31 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs @@ -40,6 +40,12 @@ public sealed class ApiCache(IDistributedCache cache, IApiService service) // return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryApiReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs index 7d581a75..e2d8f737 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs @@ -46,6 +46,12 @@ public sealed class ConfigCache(IDistributedCache cache, IConfigService service) return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryConfigReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs index 40db9967..8efb5dbe 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs @@ -46,6 +46,12 @@ public sealed class DeptCache(IDistributedCache cache, IDeptService service) // return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryDeptReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs index a03aac4a..5dce66ea 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs @@ -59,6 +59,12 @@ public sealed class DicCache(IDistributedCache cache, IDicService service) // return Service.EditContentAsync(req); } + /// + public Task ExportContentAsync(QueryReq req) + { + return Service.ExportContentAsync(req); + } + /// public Task GetCatalogAsync(QueryDicCatalogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs index bfd8c001..2b75b2db 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs @@ -40,6 +40,12 @@ public sealed class DicCatalogCache(IDistributedCache cache, IDicCatalogService return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryDicCatalogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs index 5cfac46c..bd92d993 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs @@ -40,6 +40,12 @@ public sealed class DicContentCache(IDistributedCache cache, IDicContentService return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryDicContentReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs index f4282727..b0ec4393 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs @@ -24,6 +24,12 @@ public sealed class JobCache(IDistributedCache cache, IJobService service) return Service.CountAsync(req); } + /// + public Task CountRecordAsync(QueryReq req) + { + return Service.CountRecordAsync(req); + } + /// public Task CreateAsync(CreateJobReq req) { @@ -54,12 +60,30 @@ public sealed class JobCache(IDistributedCache cache, IJobService service) return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + + /// + public Task ExportRecordAsync(QueryReq req) + { + return Service.ExportRecordAsync(req); + } + /// public Task GetAsync(QueryJobReq req) { return Service.GetAsync(req); } + /// + public Task GetRecordAsync(QueryJobRecordReq req) + { + return Service.GetRecordAsync(req); + } + /// public Task> GetRecordBarChartAsync(QueryReq req) { @@ -104,24 +128,18 @@ public sealed class JobCache(IDistributedCache cache, IJobService service) return Service.PagedQueryAsync(req); } + /// + public Task> PagedQueryRecordAsync(PagedQueryReq req) + { + return Service.PagedQueryRecordAsync(req); + } + /// public Task> QueryAsync(QueryReq req) { return Service.QueryAsync(req); } - /// - public Task RecordGetAsync(QueryJobRecordReq req) - { - return Service.RecordGetAsync(req); - } - - /// - public Task> RecordPagedQueryAsync(PagedQueryReq req) - { - return Service.RecordPagedQueryAsync(req); - } - /// public Task SetEnabledAsync(SetJobEnabledReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs index 48f3a217..c619fd77 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs @@ -40,6 +40,12 @@ public sealed class JobRecordCache(IDistributedCache cache, IJobRecordService se return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryJobRecordReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs index d5b4995f..2c27d557 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs @@ -46,6 +46,12 @@ public sealed class MenuCache(IDistributedCache cache, IMenuService service) // return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryMenuReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs index 9523fb34..07b988b3 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs @@ -41,6 +41,12 @@ public sealed class RequestLogCache(IDistributedCache cache, IRequestLogService return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryRequestLogReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs index afdeb275..7850f0ce 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs @@ -46,6 +46,12 @@ public sealed class RoleCache(IDistributedCache cache, IRoleService service) // return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryRoleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs index fff7cbbd..e45c7992 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs @@ -47,6 +47,12 @@ public sealed class SiteMsgCache(IDistributedCache cache, ISiteMsgService servic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QuerySiteMsgReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs index 2f43abd0..5dfccd09 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs @@ -40,6 +40,12 @@ public sealed class SiteMsgDeptCache(IDistributedCache cache, ISiteMsgDeptServic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QuerySiteMsgDeptReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs index 98318d56..1b1b067e 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs @@ -40,6 +40,12 @@ public sealed class SiteMsgFlagCache(IDistributedCache cache, ISiteMsgFlagServic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QuerySiteMsgFlagReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs index cdd93176..f4c06615 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs @@ -40,6 +40,12 @@ public sealed class SiteMsgRoleCache(IDistributedCache cache, ISiteMsgRoleServic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QuerySiteMsgRoleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs index e20cc11a..a4a80bf3 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs @@ -40,6 +40,12 @@ public sealed class SiteMsgUserCache(IDistributedCache cache, ISiteMsgUserServic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QuerySiteMsgUserReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs index d2497c15..4301754c 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs @@ -59,6 +59,12 @@ public sealed class UserCache(IDistributedCache cache, IUserService service, IVe return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryUserReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs index 5c4c0d4f..49caa40c 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs @@ -40,6 +40,12 @@ public sealed class UserProfileCache(IDistributedCache cache, IUserProfileServic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryUserProfileReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs index a35be2a3..ca9eac2a 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs @@ -41,6 +41,12 @@ public sealed class VerifyCodeCache(IDistributedCache cache, IVerifyCodeService return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryVerifyCodeReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs index 9a0e59ba..8196d522 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs @@ -40,6 +40,12 @@ public sealed class ExampleCache(IDistributedCache cache, IExampleService servic return Service.ExistAsync(req); } + /// + public Task ExportAsync(QueryReq req) + { + return Service.ExportAsync(req); + } + /// public Task GetAsync(QueryExampleReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs index c81865eb..6ce66649 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs @@ -61,6 +61,14 @@ public sealed class ApiController(IApiCache cache) : ControllerBase + /// 导出接口 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个接口 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs index 9d23b847..4bce669e 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs @@ -68,6 +68,14 @@ public sealed class ConfigController(IConfigCache cache) : ControllerBase + /// 导出配置 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个配置 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs index 2bbee450..110d0130 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs @@ -67,6 +67,14 @@ public sealed class DeptController(IDeptCache cache) : ControllerBase + /// 导出部门 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个部门 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs index 0e48f3e2..fe602d56 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs @@ -87,6 +87,14 @@ public sealed class DicController(IDicCache cache) : ControllerBase + /// 导出字典内容 + /// + public Task ExportContentAsync(QueryReq req) + { + return Cache.ExportContentAsync(req); + } + /// /// 获取单个字典目录 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs index b9efaa8f..9d94984c 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs @@ -33,6 +33,14 @@ public sealed class JobController(IJobCache cache) : ControllerBase + /// 作业记录计数 + /// + public Task CountRecordAsync(QueryReq req) + { + return Cache.CountRecordAsync(req); + } + /// /// 创建计划作业 /// @@ -76,6 +84,22 @@ public sealed class JobController(IJobCache cache) : ControllerBase + /// 导出计划作业 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + + /// + /// 导出作业记录 + /// + public Task ExportRecordAsync(QueryReq req) + { + return Cache.ExportRecordAsync(req); + } + /// /// 获取单个计划作业 /// @@ -84,6 +108,14 @@ public sealed class JobController(IJobCache cache) : ControllerBase + /// 获取单个作业记录 + /// + public Task GetRecordAsync(QueryJobRecordReq req) + { + return Cache.GetRecordAsync(req); + } + /// /// 获取作业记录条形图数据 /// @@ -117,6 +149,14 @@ public sealed class JobController(IJobCache cache) : ControllerBase + /// 分页查询作业记录 + /// + public Task> PagedQueryRecordAsync(PagedQueryReq req) + { + return Cache.PagedQueryRecordAsync(req); + } + /// /// 查询计划作业 /// @@ -125,22 +165,6 @@ public sealed class JobController(IJobCache cache) : ControllerBase - /// 获取单个作业记录 - /// - public Task RecordGetAsync(QueryJobRecordReq req) - { - return Cache.RecordGetAsync(req); - } - - /// - /// 分页查询作业记录 - /// - public Task> RecordPagedQueryAsync(PagedQueryReq req) - { - return Cache.RecordPagedQueryAsync(req); - } - /// /// 启用/禁用作业 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs index f19a63e5..42d4cf85 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs @@ -63,6 +63,14 @@ public sealed class LogController(IRequestLogCache cache) : ControllerBase + /// 导出请求日志 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个请求日志 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs index 1da11d4e..14addf43 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs @@ -67,6 +67,15 @@ public sealed class MenuController(IMenuCache cache) : ControllerBase + /// 导出菜单 + /// + [NonAction] + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个菜单 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs index 86d74533..1c07f095 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs @@ -67,6 +67,14 @@ public sealed class RoleController(IRoleCache cache) : ControllerBase + /// 导出角色 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个角色 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs index db0b692c..d818c404 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs @@ -68,6 +68,14 @@ public sealed class SiteMsgController(ISiteMsgCache cache) : ControllerBase + /// 导出站内信 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个站内信 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs index a5ac207b..56ae60c4 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs @@ -88,6 +88,14 @@ public sealed class UserController(IUserCache cache, IConfigCache configCache) return Cache.ExistAsync(req); } + /// + /// 导出用户 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个用户 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs index 47626baf..f0deb98f 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs @@ -59,6 +59,15 @@ public sealed class VerifyCodeController(IVerifyCodeCache cache, ICaptchaCache c return Cache.ExistAsync(req); } + /// + /// 导出验证码 + /// + [NonAction] + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个验证码 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs index 4e4399cb..0ecf7d84 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs @@ -58,6 +58,14 @@ public sealed class ExampleController(IExampleCache cache) : ControllerBase + /// 导出示例 + /// + public Task ExportAsync(QueryReq req) + { + return Cache.ExportAsync(req); + } + /// /// 获取单个示例 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs index be26859e..20cdbddc 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs @@ -69,7 +69,7 @@ public sealed class ScheduledJob : WorkBase, IJob var sw = new Stopwatch(); sw.Start(); var rsp = await request.SendAsync(CancellationToken.None).ConfigureAwait(false); - if (rsp.StatusCode == HttpStatusCode.Unauthorized) { + if (rsp.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden) { var loginRsp = await _userService.LoginByUserIdAsync(job.UserId).ConfigureAwait(false); #pragma warning disable S2696 _accessToken = loginRsp.AccessToken; diff --git a/src/frontend/admin/package.json b/src/frontend/admin/package.json index e94239ec..c01e2c97 100644 --- a/src/frontend/admin/package.json +++ b/src/frontend/admin/package.json @@ -11,14 +11,14 @@ "dependencies": { "@element-plus/icons-vue": "^2.3.1", "ace-builds": "^1.35.0", - "aieditor": "^1.0.9", + "aieditor": "^1.0.10", "axios": "^1.7.2", "clipboard": "^2.0.11", "core-js": "^3.37.1", "cropperjs": "^1.6.2", "crypto-js": "^4.2.0", "echarts": "^5.5.0", - "element-plus": "^2.7.5", + "element-plus": "^2.7.6", "json-bigint": "^1.0.0", "json5-to-table": "^0.1.8", "markdown-it": "^14.1.0", @@ -28,9 +28,9 @@ "qrcodejs2": "^0.0.2", "sortablejs": "^1.15.2", "vkbeautify": "^0.99.3", - "vue": "^3.4.29", + "vue": "^3.4.30", "vue-i18n": "^9.13.1", - "vue-router": "^4.3.3", + "vue-router": "^4.4.0", "vue3-ace-editor": "^2.2.4", "vue3-json-viewer": "^2.2.2", "vuedraggable": "^4.0.3", @@ -40,7 +40,7 @@ "@vitejs/plugin-vue": "^5.0.5", "prettier": "^3.3.2", "prettier-plugin-organize-attributes": "^1.0.0", - "sass": "^1.77.5", + "sass": "^1.77.6", "terser": "^5.31.1", "vite": "^5.3.1" }, diff --git a/src/frontend/admin/src/api/sys/api.js b/src/frontend/admin/src/api/sys/api.js index 012848d9..19a83f78 100644 --- a/src/frontend/admin/src/api/sys/api.js +++ b/src/frontend/admin/src/api/sys/api.js @@ -16,6 +16,17 @@ export default { }, }, + /** + * 导出接口 + */ + export: { + url: `${config.API_URL}/api/sys/api/export`, + name: `导出接口`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 查询接口 */ diff --git a/src/frontend/admin/src/api/sys/config.js b/src/frontend/admin/src/api/sys/config.js index b112fbc3..65a43084 100644 --- a/src/frontend/admin/src/api/sys/config.js +++ b/src/frontend/admin/src/api/sys/config.js @@ -60,6 +60,17 @@ export default { }, }, + /** + * 导出配置 + */ + export: { + url: `${config.API_URL}/api/sys/config/export`, + name: `导出配置`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个配置 */ diff --git a/src/frontend/admin/src/api/sys/dept.js b/src/frontend/admin/src/api/sys/dept.js index 7460e4bf..2ea448f4 100644 --- a/src/frontend/admin/src/api/sys/dept.js +++ b/src/frontend/admin/src/api/sys/dept.js @@ -60,6 +60,17 @@ export default { }, }, + /** + * 导出部门 + */ + export: { + url: `${config.API_URL}/api/sys/dept/export`, + name: `导出部门`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个部门 */ diff --git a/src/frontend/admin/src/api/sys/dic.js b/src/frontend/admin/src/api/sys/dic.js index 51728572..d823b244 100644 --- a/src/frontend/admin/src/api/sys/dic.js +++ b/src/frontend/admin/src/api/sys/dic.js @@ -93,6 +93,17 @@ export default { }, }, + /** + * 导出字典内容 + */ + exportContent: { + url: `${config.API_URL}/api/sys/dic/export.content`, + name: `导出字典内容`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个字典目录 */ diff --git a/src/frontend/admin/src/api/sys/job.js b/src/frontend/admin/src/api/sys/job.js index e08cb631..8df4cb5e 100644 --- a/src/frontend/admin/src/api/sys/job.js +++ b/src/frontend/admin/src/api/sys/job.js @@ -27,6 +27,17 @@ export default { }, }, + /** + * 作业记录计数 + */ + countRecord: { + url: `${config.API_URL}/api/sys/job/count.record`, + name: `作业记录计数`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 创建计划作业 */ @@ -82,6 +93,28 @@ export default { }, }, + /** + * 导出计划作业 + */ + export: { + url: `${config.API_URL}/api/sys/job/export`, + name: `导出计划作业`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + + /** + * 导出作业记录 + */ + exportRecord: { + url: `${config.API_URL}/api/sys/job/export.record`, + name: `导出作业记录`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个计划作业 */ @@ -93,6 +126,17 @@ export default { }, }, + /** + * 获取单个作业记录 + */ + getRecord: { + url: `${config.API_URL}/api/sys/job/get.record`, + name: `获取单个作业记录`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取作业记录条形图数据 */ @@ -137,6 +181,17 @@ export default { }, }, + /** + * 分页查询作业记录 + */ + pagedQueryRecord: { + url: `${config.API_URL}/api/sys/job/paged.query.record`, + name: `分页查询作业记录`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 查询计划作业 */ @@ -148,28 +203,6 @@ export default { }, }, - /** - * 获取单个作业记录 - */ - recordGet: { - url: `${config.API_URL}/api/sys/job/record.get`, - name: `获取单个作业记录`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, - - /** - * 分页查询作业记录 - */ - recordPagedQuery: { - url: `${config.API_URL}/api/sys/job/record.paged.query`, - name: `分页查询作业记录`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, - /** * 启用/禁用作业 */ diff --git a/src/frontend/admin/src/api/sys/log.js b/src/frontend/admin/src/api/sys/log.js index 0a027328..cbd16aa3 100644 --- a/src/frontend/admin/src/api/sys/log.js +++ b/src/frontend/admin/src/api/sys/log.js @@ -16,6 +16,17 @@ export default { }, }, + /** + * 导出请求日志 + */ + export: { + url: `${config.API_URL}/api/sys/log/export`, + name: `导出请求日志`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个请求日志 */ diff --git a/src/frontend/admin/src/api/sys/role.js b/src/frontend/admin/src/api/sys/role.js index a68db880..60292279 100644 --- a/src/frontend/admin/src/api/sys/role.js +++ b/src/frontend/admin/src/api/sys/role.js @@ -60,6 +60,17 @@ export default { }, }, + /** + * 导出角色 + */ + export: { + url: `${config.API_URL}/api/sys/role/export`, + name: `导出角色`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个角色 */ diff --git a/src/frontend/admin/src/api/sys/sitemsg.js b/src/frontend/admin/src/api/sys/sitemsg.js index 368a6bd8..bfbebdef 100644 --- a/src/frontend/admin/src/api/sys/sitemsg.js +++ b/src/frontend/admin/src/api/sys/sitemsg.js @@ -71,6 +71,17 @@ export default { }, }, + /** + * 导出站内信 + */ + export: { + url: `${config.API_URL}/api/sys/site.msg/export`, + name: `导出站内信`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个站内信 */ diff --git a/src/frontend/admin/src/api/sys/user.js b/src/frontend/admin/src/api/sys/user.js index 113f051e..2b3b6d89 100644 --- a/src/frontend/admin/src/api/sys/user.js +++ b/src/frontend/admin/src/api/sys/user.js @@ -71,6 +71,17 @@ export default { }, }, + /** + * 导出用户 + */ + export: { + url: `${config.API_URL}/api/sys/user/export`, + name: `导出用户`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个用户 */ diff --git a/src/frontend/admin/src/api/tpl/example.js b/src/frontend/admin/src/api/tpl/example.js index 782f6bad..59db0e9d 100644 --- a/src/frontend/admin/src/api/tpl/example.js +++ b/src/frontend/admin/src/api/tpl/example.js @@ -60,6 +60,17 @@ export default { }, }, + /** + * 导出示例 + */ + export: { + url: `${config.API_URL}/api/tpl/example/export`, + name: `导出示例`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个示例 */ diff --git a/src/frontend/admin/src/components/naArea/index.vue b/src/frontend/admin/src/components/naArea/index.vue index 51f8d2f1..0737e112 100644 --- a/src/frontend/admin/src/components/naArea/index.vue +++ b/src/frontend/admin/src/components/naArea/index.vue @@ -1,9 +1,9 @@ @@ -96,8 +98,51 @@ export default { }, async created() { this.user = this.$GLOBAL.user - const res = await this.$API.sys_sitemsg.unreadCount.post() + let res = await this.$API.sys_sitemsg.unreadCount.post() this.unreadCnt = res.data + + if (this.$GLOBAL.permissions.some((x) => x === '*/*/*' || x === 'sys/job/userbar')) { + res = await this.$API.sys_job.countRecord.post({ + dynamicFilter: { + filters: [ + { + field: 'createdTime', + operator: 'dateRange', + value: [ + this.$TOOL.data.get('APP_SET_FAIL_JOB_VIEW_TIME') ?? this.$TOOL.dateFormat(new Date(), 'yyyy-MM-dd'), + this.$TOOL.dateFormat(new Date(), 'yyyy-MM-dd hh:mm:ss'), + ], + }, + { + logic: 'or', + filters: [ + { + field: 'httpStatusCode', + operator: 'range', + value: '300,399', + }, + { + field: 'httpStatusCode', + operator: 'range', + value: '400,499', + }, + { + field: 'httpStatusCode', + operator: 'range', + value: '500,599', + }, + { + field: 'httpStatusCode', + operator: 'range', + value: '900,999', + }, + ], + }, + ], + }, + }) + this.failJobCnt = res.data + } }, data() { return { @@ -111,6 +156,7 @@ export default { tasksVisible: false, msg: false, unreadCnt: 0, + failJobCnt: 0, } }, methods: { diff --git a/src/frontend/admin/src/locales/lang/en.js b/src/frontend/admin/src/locales/lang/en.js index 9a78f3a7..02a065ff 100644 --- a/src/frontend/admin/src/locales/lang/en.js +++ b/src/frontend/admin/src/locales/lang/en.js @@ -43,12 +43,10 @@ export default { 住宅地址: 'Residential address', 住宅电话: 'Residential phones', 作业中心: 'Job Center', - 作业分布: 'Job distribution', 作业名称: 'Job name', 作业名称不能为空: 'The job name cannot be empty', 作业状态: 'Status', 作业编号: 'Job ID', - 作业趋势: 'Job trends', 保存: 'Save', 修改密码: 'Change your password', 修改时间: 'Modify time', @@ -251,8 +249,6 @@ export default { 角色名称: 'Role name', 角色编号: 'Role ID', 设置邮箱: 'Set email', - 访问分布: 'Access distribution', - 访问趋势: 'Access trends', 证件号码: 'ID number', 证件类型: 'ID type', 请再次输入新密码: 'Please enter the new password again', @@ -472,4 +468,20 @@ export default { 是: 'Yes', 否: 'No', 手机: 'Mobile', + '您已退出登录或无权限访问当前资源,请重新登录后再操作': + 'You have logged out or do not have permission to access the current resource, please log in again before operating', + 访问受限: 'Access restricted', + 请求错误: 'Request error', + '正在请求不存在的服务器记录!': 'Requesting a non-existent server record!', + '服务器发生错误!': 'Server error!', + '未知错误!': 'Unknown error!', + '请求服务器无响应!': 'Request server no response!', + 仪表板布局: 'Dashboard layout', + 应用配置: 'Application configuration', + 导出文件: 'Export file', + 刷新: 'Refresh', + '访问分布(Today)': 'Access distribution (Today)', + '访问趋势(Today)': 'Access trend (Today)', + '作业分布(Today)': 'Job distribution (Today)', + '作业趋势(Today)': 'Job trend (Today)', } \ No newline at end of file diff --git a/src/frontend/admin/src/locales/lang/zh-cn.js b/src/frontend/admin/src/locales/lang/zh-cn.js index 5fefbcf6..8109d16a 100644 --- a/src/frontend/admin/src/locales/lang/zh-cn.js +++ b/src/frontend/admin/src/locales/lang/zh-cn.js @@ -43,12 +43,10 @@ export default { 住宅地址: '住宅地址', 住宅电话: '住宅电话', 作业中心: '作业中心', - 作业分布: '作业分布', 作业名称: '作业名称', 作业名称不能为空: '作业名称不能为空', 作业状态: '作业状态', 作业编号: '作业编号', - 作业趋势: '作业趋势', 保存: '保存', 修改密码: '修改密码', 修改时间: '修改时间', @@ -251,8 +249,6 @@ export default { 角色名称: '角色名称', 角色编号: '角色编号', 设置邮箱: '设置邮箱', - 访问分布: '访问分布', - 访问趋势: '访问趋势', 证件号码: '证件号码', 证件类型: '证件类型', 请再次输入新密码: '请再次输入新密码', @@ -470,4 +466,19 @@ export default { 是: '是', 否: '否', 手机: '手机', + '您已退出登录或无权限访问当前资源,请重新登录后再操作': '您已退出登录或无权限访问当前资源,请重新登录后再操作', + 访问受限: '访问受限', + 请求错误: '请求错误', + '正在请求不存在的服务器记录!': '正在请求不存在的服务器记录!', + '服务器发生错误!': '服务器发生错误!', + '未知错误!': '未知错误!', + '请求服务器无响应!': '请求服务器无响应!', + 仪表板布局: '仪表板布局', + 应用配置: '应用配置', + 导出文件: '导出文件', + 刷新: '刷新', + '访问分布(Today)': '访问分布(Today)', + '访问趋势(Today)': '访问趋势(Today)', + '作业分布(Today)': '作业分布(Today)', + '作业趋势(Today)': '作业趋势(Today)', } \ No newline at end of file diff --git a/src/frontend/admin/src/style/app.scss b/src/frontend/admin/src/style/app.scss index 262cae0d..90dff400 100644 --- a/src/frontend/admin/src/style/app.scss +++ b/src/frontend/admin/src/style/app.scss @@ -519,4 +519,8 @@ textarea { .justify-content-center { justify-content: center; +} + +.font-monospace { + font-family: 'Lucida Console', 'Microsoft YaHei', monospace; } \ No newline at end of file diff --git a/src/frontend/admin/src/utils/request.js b/src/frontend/admin/src/utils/request.js index 368855e0..e6965af4 100644 --- a/src/frontend/admin/src/utils/request.js +++ b/src/frontend/admin/src/utils/request.js @@ -6,6 +6,8 @@ import router from '@/router' import { h } from 'vue' import jsonBigInt from 'json-bigint' +import i18 from '@/locales/index' + axios.defaults.baseURL = '' axios.defaults.timeout = sysConfig.TIMEOUT @@ -119,64 +121,66 @@ axios.interceptors.response.use( if (error.response) { if (error.response.status === 404) { ElNotification.error({ - title: '请求错误', - message: 'Status:404,正在请求不存在的服务器记录!', + title: i18.global.t('请求错误'), + message: i18.global.t('正在请求不存在的服务器记录!'), }) } else if (error.response.status === 500) { ElNotification.error({ - title: '请求错误', - message: error.response.data.message || 'Status:500,服务器发生错误!', + title: i18.global.t('请求错误'), + message: error.response.data.message || i18.global.t('服务器发生错误!'), }) } else if ([401, 403].includes(error.response.status)) { // 如果token不存在,说明用户是第一次访问,直接跳转到登录页面 if (!tool.cookie.get('ACCESS-TOKEN') && window.location.href.indexOf('guest') < 0) { + tool.data.set('LOGIN_REDIRECT', window.location.href) await router.replace({ path: '/guest/login' }) return } if (!MessageBox_401_show && window.location.href.indexOf('guest') < 0) { MessageBox_401_show = true tool.timeout(100).then(async () => { - await ElMessageBox.confirm('您已退出登录或无权限访问当前资源,请重新登录后再操作。', '访问受限', { + await ElMessageBox.confirm(i18.global.t('您已退出登录或无权限访问当前资源,请重新登录后再操作'), i18.global.t('访问受限'), { type: 'error', closeOnClickModal: false, center: true, - confirmButtonText: '重新登录', + confirmButtonText: i18.global.t('重新登录'), beforeClose: (action, instance, done) => { MessageBox_401_show = false done() }, }) + tool.data.set('LOGIN_REDIRECT', window.location.href) await router.replace({ path: '/guest/login' }) }) } } else if (error.response.status === 900) { - function showErr(msg) { + function showErr(key, msg) { const title = axios.defaults.app().config.globalProperties.$GLOBAL.enums.errorCodes[error.response.data.code][1] ElNotification.error({ title: title, - message: h('p', msg), + message: h('p', [h('b', `${key} `), h('span', msg)]), }) } //业务错误 if (typeof error.response.data.msg === 'object') { Object.keys(error.response.data.msg).forEach((x) => { - showErr(error.response.data.msg[x]) + showErr(x, error.response.data.msg[x]) }) } else { showErr(error.response.data.msg) } } else { ElNotification.error({ - title: '请求错误', - message: error.message || `Status:${error.response.status},未知错误!`, + title: i18.global.t('请求错误'), + message: error.message || i18.global.t(`未知错误!`), }) } } else { ElNotification.error({ - title: '请求错误', - message: '请求服务器无响应!', + title: i18.global.t('请求错误'), + message: i18.global.t('请求服务器无响应!'), }) } diff --git a/src/frontend/admin/src/views/guest/components/passwordForm.vue b/src/frontend/admin/src/views/guest/components/passwordForm.vue index 18d4d47a..7dcb2357 100644 --- a/src/frontend/admin/src/views/guest/components/passwordForm.vue +++ b/src/frontend/admin/src/views/guest/components/passwordForm.vue @@ -72,7 +72,9 @@ export default { this.isLoading = false return false } - window.location.href = '/' + const redirect = this.$TOOL.data.get('LOGIN_REDIRECT') ?? '/' + this.$TOOL.data.remove('LOGIN_REDIRECT') + window.location.href = redirect }, }, } diff --git a/src/frontend/admin/src/views/home/widgets/components/chart-bar-jobrecord.vue b/src/frontend/admin/src/views/home/widgets/components/chart-bar-jobrecord.vue index f153480b..486edf17 100644 --- a/src/frontend/admin/src/views/home/widgets/components/chart-bar-jobrecord.vue +++ b/src/frontend/admin/src/views/home/widgets/components/chart-bar-jobrecord.vue @@ -1,21 +1,24 @@ @@ -29,9 +32,9 @@ export default { return tool }, }, - title: '作业趋势', + title: '作业趋势(Today)', icon: 'el-icon-data-line', - description: '作业趋势', + description: '作业趋势(Today)', components: { ChartBar, }, diff --git a/src/frontend/admin/src/views/home/widgets/components/chart-bar-request.vue b/src/frontend/admin/src/views/home/widgets/components/chart-bar-request.vue index ed809a9f..3a7cc5cd 100644 --- a/src/frontend/admin/src/views/home/widgets/components/chart-bar-request.vue +++ b/src/frontend/admin/src/views/home/widgets/components/chart-bar-request.vue @@ -1,21 +1,24 @@ @@ -29,9 +32,9 @@ export default { return tool }, }, - title: '访问趋势', + title: '访问趋势(Today)', icon: 'el-icon-data-line', - description: '访问趋势', + description: '访问趋势(Today)', components: { ChartBar, }, diff --git a/src/frontend/admin/src/views/home/widgets/components/chart-pie-jobrecord.vue b/src/frontend/admin/src/views/home/widgets/components/chart-pie-jobrecord.vue index 9febb0df..19bd44af 100644 --- a/src/frontend/admin/src/views/home/widgets/components/chart-pie-jobrecord.vue +++ b/src/frontend/admin/src/views/home/widgets/components/chart-pie-jobrecord.vue @@ -1,5 +1,5 @@ @@ -28,9 +29,9 @@ export default { return tool }, }, - title: '作业分布', + title: '作业分布(Today)', icon: 'el-icon-data-line', - description: '作业分布', + description: '作业分布(Today)', components: { ChartPie, }, diff --git a/src/frontend/admin/src/views/home/widgets/components/chart-pie-request.vue b/src/frontend/admin/src/views/home/widgets/components/chart-pie-request.vue index 05b8c7e9..49553acb 100644 --- a/src/frontend/admin/src/views/home/widgets/components/chart-pie-request.vue +++ b/src/frontend/admin/src/views/home/widgets/components/chart-pie-request.vue @@ -1,5 +1,5 @@ @@ -28,9 +29,9 @@ export default { return tool }, }, - title: '访问分布', + title: '访问分布(Today)', icon: 'el-icon-data-line', - description: '访问分布', + description: '访问分布(Today)', components: { ChartPie, }, diff --git a/src/frontend/admin/src/views/home/widgets/components/components/chart-bar.vue b/src/frontend/admin/src/views/home/widgets/components/components/chart-bar.vue index a868a112..01c8034a 100644 --- a/src/frontend/admin/src/views/home/widgets/components/components/chart-bar.vue +++ b/src/frontend/admin/src/views/home/widgets/components/components/chart-bar.vue @@ -1,6 +1,6 @@ @@ -46,8 +46,9 @@ export default { this.option.xAxis.data = res[0].data.map((x) => { return x.timestamp }) + let i = 0 this.option.series = res.map((x) => { - return { type: 'line', data: x.data.map((y) => y.value), symbol: 'none', areaStyle: {} } + return { name: this.api[i++].label, type: 'line', data: x.data.map((y) => y.value), symbol: 'none', areaStyle: {} } }) }, mounted() {}, diff --git a/src/frontend/admin/src/views/home/widgets/components/components/chart-pie.vue b/src/frontend/admin/src/views/home/widgets/components/components/chart-pie.vue index 0511edc1..62f9f224 100644 --- a/src/frontend/admin/src/views/home/widgets/components/components/chart-pie.vue +++ b/src/frontend/admin/src/views/home/widgets/components/components/chart-pie.vue @@ -1,6 +1,6 @@ diff --git a/src/frontend/admin/src/views/sys/api/index.vue b/src/frontend/admin/src/views/sys/api/index.vue index 0fe88676..bda38d84 100644 --- a/src/frontend/admin/src/views/sys/api/index.vue +++ b/src/frontend/admin/src/views/sys/api/index.vue @@ -8,7 +8,8 @@ - + diff --git a/src/frontend/admin/src/views/sys/config/index.vue b/src/frontend/admin/src/views/sys/config/index.vue index 20a95a36..a6fe07bf 100644 --- a/src/frontend/admin/src/views/sys/config/index.vue +++ b/src/frontend/admin/src/views/sys/config/index.vue @@ -47,9 +47,10 @@ diff --git a/src/frontend/admin/src/views/sys/dept/index.vue b/src/frontend/admin/src/views/sys/dept/index.vue index e5373a7f..39bdb0e8 100644 --- a/src/frontend/admin/src/views/sys/dept/index.vue +++ b/src/frontend/admin/src/views/sys/dept/index.vue @@ -54,10 +54,11 @@ - + diff --git a/src/frontend/admin/src/views/sys/job/index.vue b/src/frontend/admin/src/views/sys/job/index.vue index d04d4ab8..f74ffff6 100644 --- a/src/frontend/admin/src/views/sys/job/index.vue +++ b/src/frontend/admin/src/views/sys/job/index.vue @@ -20,7 +20,12 @@ const all = defineAsyncComponent(() => import('@/views/sys/job/all/index.vue')) export default { components: { all, fail }, computed: {}, - created() {}, + created() { + if (this.$route.query.view === 'fail') { + this.tabId = 'fail' + this.$TOOL.data.set('APP_SET_FAIL_JOB_VIEW_TIME', this.$TOOL.dateFormat(new Date(), 'yyyy-MM-dd hh:mm:ss')) + } + }, data() { return { tabId: 'all', diff --git a/src/frontend/admin/src/views/sys/job/record/index.vue b/src/frontend/admin/src/views/sys/job/record/index.vue index b3f4d52f..72009450 100644 --- a/src/frontend/admin/src/views/sys/job/record/index.vue +++ b/src/frontend/admin/src/views/sys/job/record/index.vue @@ -4,12 +4,6 @@
diff --git a/src/frontend/admin/src/views/sys/msg/index.vue b/src/frontend/admin/src/views/sys/msg/index.vue index b714a54e..47fbd145 100644 --- a/src/frontend/admin/src/views/sys/msg/index.vue +++ b/src/frontend/admin/src/views/sys/msg/index.vue @@ -41,10 +41,11 @@ {{ $t('用于控制角色登录后控制台的视图') }}
+ + + {{ $t('JSON格式化') }} + @@ -99,14 +107,17 @@