diff --git a/build/code.quality.props b/build/code.quality.props index 9628a1d4..76ab7ea2 100644 --- a/build/code.quality.props +++ b/build/code.quality.props @@ -19,7 +19,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/dotnet-tools.json b/dotnet-tools.json index 64cfe121..a5e0c0db 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-t4": { - "version": "2.3.1", + "version": "3.0.0", "commands": [ "t4" ] diff --git a/scripts/wait.server.stop.sh b/scripts/wait.server.stop.sh index edb73190..eb54bcd1 100644 --- a/scripts/wait.server.stop.sh +++ b/scripts/wait.server.stop.sh @@ -9,8 +9,10 @@ fi # 获取外部传入的 URL 参数 URL="$1" -# 初始化返回值 +# 初始化返回值和时间限制 response="" +start_time=$(date +%s) +time_limit=600 # 10分钟的秒数 # 循环检查 API 返回值 while [ "$response" != "1" ]; do @@ -22,7 +24,16 @@ while [ "$response" != "1" ]; do # 打印返回值 (可选) echo "$1: $response" + + # 检查时间是否超过限制 + current_time=$(date +%s) + elapsed_time=$((current_time - start_time)) + + if [ "$elapsed_time" -ge "$time_limit" ]; then + echo "Time limit exceeded. Continuing with the script..." + break + fi done -# 当返回值为 "1" 时,继续执行后续脚本 -echo "API returned 1. Continuing with the script..." \ No newline at end of file +# 无论是因为返回值为 "1" 还是超时,继续执行后续脚本 +echo "Continuing with the script..." \ No newline at end of file diff --git a/src/backend/GlobalUsings.cs b/src/backend/GlobalUsings.cs index 5b59b2ac..af39e235 100644 --- a/src/backend/GlobalUsings.cs +++ b/src/backend/GlobalUsings.cs @@ -74,7 +74,7 @@ global using NetAdmin.Domain.DbMaps.Sys; global using CsvIgnore = CsvHelper.Configuration.Attributes.IgnoreAttribute; global using CsvIndex = CsvHelper.Configuration.Attributes.IndexAttribute; global using CsvName = CsvHelper.Configuration.Attributes.NameAttribute; -global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo; +global using DynamicFilterInfo = NetAdmin.Domain.Dto.DynamicFilterInfo; global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators; global using SqlIndex = FreeSql.DataAnnotations.IndexAttribute; #endif \ No newline at end of file diff --git a/src/backend/NetAdmin.AdmServer.Host/Startup.cs b/src/backend/NetAdmin.AdmServer.Host/Startup.cs index 0c3a7a68..e4c9d4c8 100644 --- a/src/backend/NetAdmin.AdmServer.Host/Startup.cs +++ b/src/backend/NetAdmin.AdmServer.Host/Startup.cs @@ -22,12 +22,7 @@ */ using NetAdmin.AdmServer.Host; -using NetAdmin.AdmServer.Host.Extensions; -using NetAdmin.Host.Extensions; -using NetAdmin.Host.Middlewares; -using NetAdmin.SysComponent.Host.Extensions; using NetAdmin.SysComponent.Host.Middlewares; -using Spectre.Console.Cli; using ValidationResult = Spectre.Console.ValidationResult; NetAdmin.Host.Startup.Entry(args); @@ -51,6 +46,8 @@ namespace NetAdmin.AdmServer.Host public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifeTime) #pragma warning restore S2325 { + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + _ = app // .UseMiddleware() // 安全停机中间件 .EnableBuffering() // 启用请求体缓冲,允许多次读取请求体 diff --git a/src/backend/NetAdmin.Host/Extensions/UnitOfWorkManagerExtensions.cs b/src/backend/NetAdmin.Application/Extensions/UnitOfWorkManagerExtensions.cs similarity index 95% rename from src/backend/NetAdmin.Host/Extensions/UnitOfWorkManagerExtensions.cs rename to src/backend/NetAdmin.Application/Extensions/UnitOfWorkManagerExtensions.cs index 3e26ec09..2d2285db 100644 --- a/src/backend/NetAdmin.Host/Extensions/UnitOfWorkManagerExtensions.cs +++ b/src/backend/NetAdmin.Application/Extensions/UnitOfWorkManagerExtensions.cs @@ -1,4 +1,4 @@ -namespace NetAdmin.Host.Extensions; +namespace NetAdmin.Application.Extensions; /// /// 工作单元管理器扩展方法 diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs index 8fb515ab..f85e2152 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_DicContent.cs @@ -32,7 +32,7 @@ public record Sys_DicContent : VersionEntity, IFieldEnabled, IFieldSummary /// /// 键名称 /// - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)] + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] [CsvIgnore] [JsonIgnore] public virtual string Key { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/DfBuilder.cs b/src/backend/NetAdmin.Domain/Dto/DfBuilder.cs new file mode 100644 index 00000000..087d8297 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/DfBuilder.cs @@ -0,0 +1,17 @@ +using NetAdmin.Domain.Enums; + +namespace NetAdmin.Domain.Dto; + +/// +/// 动态过滤条件生成器 +/// +public sealed record DfBuilder +{ + /// + /// 构建生成器 + /// + public static DynamicFilterInfo New(DynamicFilterLogics logic) + { + return new DynamicFilterInfo { Logic = logic, Filters = [] }; + } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Dependency/DynamicFilterInfo.cs b/src/backend/NetAdmin.Domain/Dto/DynamicFilterInfo.cs similarity index 73% rename from src/backend/NetAdmin.Domain/Dto/Dependency/DynamicFilterInfo.cs rename to src/backend/NetAdmin.Domain/Dto/DynamicFilterInfo.cs index 026125c8..4742cdbb 100644 --- a/src/backend/NetAdmin.Domain/Dto/Dependency/DynamicFilterInfo.cs +++ b/src/backend/NetAdmin.Domain/Dto/DynamicFilterInfo.cs @@ -1,6 +1,6 @@ using NetAdmin.Domain.Enums; -namespace NetAdmin.Domain.Dto.Dependency; +namespace NetAdmin.Domain.Dto; /// /// 动态过滤条件 @@ -42,6 +42,43 @@ public sealed record DynamicFilterInfo : DataAbstraction return ret; } + /// + /// 添加子过滤条件 + /// + public DynamicFilterInfo Add(DynamicFilterInfo df) + { + if (Filters == null) { + return this with { Filters = [df] }; + } + + Filters.Add(df); + return this; + } + + /// + /// 添加过滤条件 + /// + public DynamicFilterInfo Add(string field, DynamicFilterOperators opt, object val) + { + return Add(new DynamicFilterInfo { Field = field, Operator = opt, Value = val }); + } + + /// + /// 添加过滤条件 + /// + public DynamicFilterInfo AddIf(bool condition, string field, DynamicFilterOperators opt, object val) + { + return !condition ? this : Add(field, opt, val); + } + + /// + /// 添加过滤条件 + /// + public DynamicFilterInfo AddIf(bool condition, DynamicFilterInfo df) + { + return !condition ? this : Add(df); + } + private static void ParseDateExp(FreeSql.Internal.Model.DynamicFilterInfo d) { var values = ((JsonElement)d.Value).Deserialize(); diff --git a/src/backend/NetAdmin.Domain/Events/Sys/UserCreatedEvent.cs b/src/backend/NetAdmin.Domain/Events/Sys/UserCreatedEvent.cs new file mode 100644 index 00000000..6d505d56 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Events/Sys/UserCreatedEvent.cs @@ -0,0 +1,40 @@ +using NetAdmin.Domain.Dto.Sys.User; + +namespace NetAdmin.Domain.Events.Sys; + +/// +/// 用户被创建事件 +/// +public sealed record UserCreatedEvent : DataAbstraction, IEventSourceGeneric +{ + /// + /// Initializes a new instance of the class. + /// + public UserCreatedEvent(UserInfoRsp data, DateTime createdTime = default, bool isConsumOnce = false, object payload = default + , CancellationToken cancellationToken = default) + { + Data = data; + CancellationToken = cancellationToken; + CreatedTime = createdTime; + IsConsumOnce = isConsumOnce; + Payload = payload; + } + + /// + public CancellationToken CancellationToken { get; } + + /// + public DateTime CreatedTime { get; } + + /// + public UserInfoRsp Data { get; } + + /// + public string EventId => nameof(UserCreatedEvent); + + /// + public bool IsConsumOnce { get; } + + /// + public object Payload { get; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Host/Filters/TransactionInterceptor.cs b/src/backend/NetAdmin.Host/Filters/TransactionInterceptor.cs index 55eb55b4..b61c881e 100644 --- a/src/backend/NetAdmin.Host/Filters/TransactionInterceptor.cs +++ b/src/backend/NetAdmin.Host/Filters/TransactionInterceptor.cs @@ -1,5 +1,4 @@ using NetAdmin.Host.Attributes; -using NetAdmin.Host.Extensions; namespace NetAdmin.Host.Filters; diff --git a/src/backend/NetAdmin.Host/Utils/RequestLogger.cs b/src/backend/NetAdmin.Host/Utils/RequestLogger.cs index 2f18dbe8..81969ef7 100644 --- a/src/backend/NetAdmin.Host/Utils/RequestLogger.cs +++ b/src/backend/NetAdmin.Host/Utils/RequestLogger.cs @@ -1,8 +1,3 @@ -using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.Dto.Sys.RequestLog; -using NetAdmin.Domain.Dto.Sys.RequestLogDetail; -using NetAdmin.Domain.Events.Sys; -using Yitter.IdGenerator; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; namespace NetAdmin.Host.Utils; @@ -44,6 +39,7 @@ public sealed class RequestLogger(ILogger logger, IEventPublisher , ResponseContentType = context.Response.ContentType , ResponseHeaders = context.Response.Headers.Json() , ServerIp = context.GetLocalIpAddressToIPv4()?.IpV4ToInt32() + , CreatedTime = DateTime.Now } , Duration = (int)duration , HttpMethod = Enum.Parse(context.Request.Method, true) @@ -54,6 +50,7 @@ public sealed class RequestLogger(ILogger logger, IEventPublisher , OwnerDeptId = associatedUser?.DeptId , Id = id , TraceId = context.GetTraceId() + , CreatedTime = DateTime.Now }; // ReSharper disable once InvertIf diff --git a/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs b/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs index a3b4d155..bbca647f 100644 --- a/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs +++ b/src/backend/NetAdmin.Infrastructure/Constant/Chars.cs @@ -77,7 +77,6 @@ public static class Chars public const string FLG_PATH_API_RPOBE = "api/probe"; public const string FLG_PATH_API_SYS_USER_LOGIN_BY_PWD = "api/sys/user/login.by.pwd"; - public const string FLG_PATH_PREFIX_HEALTH_CHECK = "probe/health.check"; public const string FLG_PATH_WEBSOCKET_PREFIX = "ws"; public const string FLG_RANDOM_UNAME_PWD = "VcXlp7WY"; public const string FLG_REDIS_INSTANCE_DATA_CACHE = "DataCache"; diff --git a/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs b/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs index 5a75d81f..663c0f45 100644 --- a/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs +++ b/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs @@ -28,7 +28,22 @@ public static class HttpResponseMessageExtensions private static async Task BuildJsonAsync( // this HttpResponseMessage me, Func bodyHandle = null) { - var body = me?.Content is null ? null : await me.Content!.ReadAsStringAsync().ConfigureAwait(false); + var body = string.Empty; + try { + body = me?.Content is null ? null : await me.Content!.ReadAsStringAsync().ConfigureAwait(false); + } + catch (Exception ex) when (ex.Message.Contains("The character set provided in ContentType is invalid") && + ex.InnerException?.Message.Contains("is not a supported encoding name") == true) { + #pragma warning disable S2589 + var sr = me?.Content is null ? null : await me.Content!.ReadAsStreamAsync().ConfigureAwait(false); + if (sr != null) { + #pragma warning restore S2589 + await using var ms = new MemoryStream(); + await sr.CopyToAsync(ms).ConfigureAwait(false); + return Encoding.UTF8.GetString(ms.ToArray()); + } + } + return new { Header = me?.ToString(), RequestHeader = me?.RequestMessage?.Headers, Body = bodyHandle is null ? body : bodyHandle(body) } .Json(); } diff --git a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj index d1e8d678..4eca7220 100644 --- a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj +++ b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj @@ -16,6 +16,7 @@ + diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/CacheService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/CacheService.cs index 0efbf3d6..2dfd6161 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/CacheService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/CacheService.cs @@ -1,9 +1,6 @@ using System.Collections.Concurrent; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Cache; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using StackExchange.Redis; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -82,6 +79,7 @@ public sealed class CacheService(IConnectionMultiplexer connectionMultiplexer) / /// public async Task GetEntryAsync(GetEntriesReq req) { + req.ThrowIfInvalid(); var database = connectionMultiplexer.GetDatabase(_redisInstance.Database); var ret = new GetEntryRsp { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs index 8ce90b47..1047f8dd 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Config; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -53,6 +51,7 @@ public sealed class ConfigService(BasicRepository rpo) // /// public async Task EditAsync(EditConfigReq req) { + req.ThrowIfInvalid(); #if DBTYPE_SQLSERVER return (await UpdateReturnListAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); #else diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs index 72c17663..94d5ca4f 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Dept; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -71,6 +69,7 @@ public sealed class DeptService(BasicRepository rpo) // /// public async Task EditAsync(EditDeptReq req) { + req.ThrowIfInvalid(); #if DBTYPE_SQLSERVER return (await UpdateReturnListAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); #else diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs index 6673cd01..c1c56150 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Dic.Catalog; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -90,6 +88,7 @@ public sealed class DicCatalogService(BasicRepository rpo) /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs index 4c03e78d..164aef38 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Menu; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -55,6 +53,7 @@ public sealed class MenuService(BasicRepository rpo, IUserServic /// public async Task EditAsync(EditMenuReq req) { + req.ThrowIfInvalid(); #if DBTYPE_SQLSERVER return (await UpdateReturnListAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); #else @@ -76,6 +75,7 @@ public sealed class MenuService(BasicRepository rpo, IUserServic /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogDetailService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogDetailService.cs index d0e4d8d7..d165ef24 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogDetailService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogDetailService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.RequestLogDetail; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -64,6 +62,7 @@ public sealed class RequestLogDetailService(BasicRepository public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs index 183430e6..d40945b9 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.SiteMsgDept; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -64,6 +62,7 @@ public sealed class SiteMsgDeptService(BasicRepository rp /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs index c0e48e46..773b3b6c 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -64,6 +62,7 @@ public sealed class SiteMsgFlagService(BasicRepository rp /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs index 5216fdcc..47f56cb9 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.SiteMsgRole; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -64,6 +62,7 @@ public sealed class SiteMsgRoleService(BasicRepository rp /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs index 2569e0ab..5cdcd5b8 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs @@ -1,7 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.SiteMsgUser; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -64,6 +62,7 @@ public sealed class SiteMsgUserService(BasicRepository rp /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ToolsService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ToolsService.cs index 4ce04a0e..319afc9b 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ToolsService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ToolsService.cs @@ -1,5 +1,4 @@ using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Sys.Tool; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -17,6 +16,7 @@ public sealed class ToolsService : ServiceBase, IToolsService /// public Task ExecuteSqlAsync(ExecuteSqlReq req) { + req.ThrowIfInvalid(); return App.GetService().Ado.CommandFluent(req.Sql).CommandTimeout(req.TimeoutSecs).ExecuteArrayAsync(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs index b7ccec7a..03569e43 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs @@ -1,9 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Dic.Content; -using NetAdmin.Domain.Dto.Sys.UserProfile; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -73,6 +69,7 @@ public sealed class UserProfileService(BasicRepository rp /// public Task EditAsync(EditUserProfileReq req) { + req.ThrowIfInvalid(); return UpdateAsync(req.Adapt(), null); } @@ -90,6 +87,7 @@ public sealed class UserProfileService(BasicRepository rp /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs index 92e4bd1c..9a728fb5 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs @@ -1,11 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.User; -using NetAdmin.Domain.Dto.Sys.UserProfile; -using NetAdmin.Domain.Dto.Sys.VerifyCode; -using NetAdmin.Domain.Events.Sys; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -100,8 +94,12 @@ public sealed class UserService( , AppConfig = appConfig }) .ConfigureAwait(false); - var ret = await QueryAsync(new QueryReq { Filter = new QueryUserReq { Id = dbUser.Id } }).ConfigureAwait(false); - return ret.First(); + var userList = await QueryAsync(new QueryReq { Filter = new QueryUserReq { Id = dbUser.Id } }).ConfigureAwait(false); + + // 发布用户创建事件 + var ret = userList.First(); + await eventPublisher.PublishAsync(new UserCreatedEvent(ret.Adapt())).ConfigureAwait(false); + return ret; } /// diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs index 77ef39b3..5d153db9 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs @@ -1,9 +1,5 @@ using NetAdmin.Application.Repositories; using NetAdmin.Application.Services; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.VerifyCode; -using NetAdmin.Domain.Enums.Sys; -using NetAdmin.Domain.Events.Sys; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; @@ -74,6 +70,7 @@ public sealed class VerifyCodeService(BasicRepository rpo, /// public Task ExportAsync(QueryReq req) { + req.ThrowIfInvalid(); throw new NotImplementedException(); } @@ -144,6 +141,7 @@ public sealed class VerifyCodeService(BasicRepository rpo, /// public Task SetVerifyCodeStatusAsync(SetVerifyCodeStatusReq req) { + req.ThrowIfInvalid(); return UpdateAsync(req, [nameof(req.Status)]); } diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs index e2360c64..94ab705d 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs @@ -1,6 +1,4 @@ using NetAdmin.Cache; -using NetAdmin.Domain.Dto.Dependency; -using NetAdmin.Domain.Dto.Sys.Dic.Content; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; using NetAdmin.SysComponent.Cache.Sys.Dependency; @@ -69,8 +67,7 @@ public sealed class DicContentCache(IDistributedCache cache, IDicContentService { #if !DEBUG return GetOrCreateAsync( // - GetCacheKey(catalogCode), () => Service.QueryByCatalogCodeAsync(catalogCode) -, TimeSpan.FromSeconds(Numbers.SECS_CACHE_DIC_CATALOG_CODE)); + GetCacheKey(catalogCode), () => Service.QueryByCatalogCodeAsync(catalogCode), TimeSpan.FromSeconds(Numbers.SECS_CACHE_DIC_CATALOG_CODE)); #else return Service.QueryByCatalogCodeAsync(catalogCode); #endif diff --git a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs index ba46f45d..207a14d3 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs @@ -1,13 +1,5 @@ -using FreeSql.Internal; -using Furion.RemoteRequest; -using Furion.RemoteRequest.Extensions; -using Furion.Schedule; -using NetAdmin.Domain.Dto.Sys.Job; -using NetAdmin.Domain.Dto.Sys.JobRecord; using NetAdmin.Host.BackgroundRunning; -using NetAdmin.Host.Extensions; using NetAdmin.Host.Middlewares; -using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Host.Jobs; diff --git a/src/frontend/admin/package.json b/src/frontend/admin/package.json index 4dd4f6e4..174eca73 100644 --- a/src/frontend/admin/package.json +++ b/src/frontend/admin/package.json @@ -10,15 +10,15 @@ }, "dependencies": { "@element-plus/icons-vue": "2.3.1", - "ace-builds": "1.36.2", - "aieditor": "1.1.7", + "ace-builds": "1.36.3", + "aieditor": "1.2.3", "axios": "1.7.7", "clipboard": "2.0.11", "core-js": "3.38.1", "cropperjs": "1.6.2", "crypto-js": "4.2.0", "echarts": "5.5.1", - "element-plus": "2.8.5", + "element-plus": "2.8.6", "json-bigint": "1.0.0", "json5-to-table": "0.1.8", "markdown-it": "14.1.0", @@ -40,9 +40,9 @@ "@vitejs/plugin-vue": "5.1.4", "prettier": "3.3.3", "prettier-plugin-organize-attributes": "1.0.0", - "sass": "1.79.5", - "terser": "5.34.1", - "vite": "5.4.8" + "sass": "1.80.5", + "terser": "5.36.0", + "vite": "5.4.10" }, "browserslist": [ "> 1%", diff --git a/src/frontend/admin/src/App.vue b/src/frontend/admin/src/App.vue index 3f90c26d..4f7f61a5 100644 --- a/src/frontend/admin/src/App.vue +++ b/src/frontend/admin/src/App.vue @@ -95,5 +95,5 @@ export default { \ No newline at end of file diff --git a/src/frontend/admin/src/components/naColTag/index.vue b/src/frontend/admin/src/components/naColTag/index.vue new file mode 100644 index 00000000..8a48213e --- /dev/null +++ b/src/frontend/admin/src/components/naColTag/index.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/src/frontend/admin/src/components/scCron/index.vue b/src/frontend/admin/src/components/scCron/index.vue index b9327e86..54c2124b 100644 --- a/src/frontend/admin/src/components/scCron/index.vue +++ b/src/frontend/admin/src/components/scCron/index.vue @@ -30,7 +30,7 @@ - +
diff --git a/src/frontend/admin/src/components/scSelectFilter/index.vue b/src/frontend/admin/src/components/scSelectFilter/index.vue index 935b6e10..43370ef8 100644 --- a/src/frontend/admin/src/components/scSelectFilter/index.vue +++ b/src/frontend/admin/src/components/scSelectFilter/index.vue @@ -10,7 +10,7 @@ {{ suffix }} + + +
@@ -102,4 +105,8 @@ export default { .dark .sc-statistic-content { color: #c0c0c0; } + +.sc-statistic-icon { + float: right; +} \ No newline at end of file diff --git a/src/frontend/admin/src/components/scTable/fieldFilter.vue b/src/frontend/admin/src/components/scTable/fieldFilter.vue index ef77ca19..18590055 100644 --- a/src/frontend/admin/src/components/scTable/fieldFilter.vue +++ b/src/frontend/admin/src/components/scTable/fieldFilter.vue @@ -1,5 +1,5 @@