From 56b111b1cfb96937e249d58d24d7e3a83ea7abdb Mon Sep 17 00:00:00 2001 From: nsnail Date: Fri, 7 Jun 2024 00:13:14 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=A1=86=E6=9E=B6=E7=9A=84=E5=AE=9E=E4=BD=93=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91=20(#137)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: tk --- assets/res/Statements.ln | 2 +- .../NetAdmin.AdmServer.Tests/AllTests.cs | 1656 ++++++++++++++++- .../Modules/ICrudModule.cs | 11 +- .../Repositories/BasicRepository.cs | 20 + .../Repositories/DefaultRepository.cs | 17 - .../Services/RedLockerService.cs | 8 +- .../Services/RepositoryService.cs | 55 +- .../DbMaps/Dependency/EntityBase.cs | 9 +- .../DbMaps/Dependency/Fields/IFieldPrimary.cs | 12 - .../DbMaps/Dependency/ImmutableEntity.cs | 5 +- .../DbMaps/Dependency/LiteImmutableEntity.cs | 9 +- .../DbMaps/Dependency/LiteMutableEntity.cs | 5 +- .../DbMaps/Dependency/LiteVersionEntity.cs | 5 +- .../DbMaps/Dependency/MutableEntity.cs | 5 +- .../DbMaps/Dependency/SimpleEntity.cs | 3 +- .../DbMaps/Dependency/VersionEntity.cs | 5 +- .../NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs | 2 +- .../NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs | 4 - .../NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs | 24 +- .../DbMaps/Sys/Sys_JobRecord.cs | 24 +- .../DbMaps/Sys/Sys_RequestLog.cs | 50 +- .../NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs | 4 - .../NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs | 14 +- .../NetAdmin.Domain/DbMaps/Sys/Sys_User.cs | 6 +- .../DbMaps/Sys/Sys_VerifyCode.cs | 4 - .../NetAdmin.Domain/Dto/Dependency/DelReq.cs | 9 +- .../Dto/Sys/Api/QueryApiRsp.cs | 3 +- .../{UpdateConfigReq.cs => EditConfigReq.cs} | 4 +- .../Dto/Sys/Config/QueryConfigReq.cs | 3 +- .../Dto/Sys/Config/QueryConfigRsp.cs | 3 +- .../Dept/{UpdateDeptReq.cs => EditDeptReq.cs} | 7 +- .../Dto/Sys/Dept/QueryDeptReq.cs | 4 +- .../Dto/Sys/Dept/QueryDeptRsp.cs | 3 +- ...eDicCatalogReq.cs => EditDicCatalogReq.cs} | 4 +- .../Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs | 3 +- ...eDicContentReq.cs => EditDicContentReq.cs} | 4 +- .../NetAdmin.Domain/Dto/Sys/Job/EditJobReq.cs | 11 + .../Dto/Sys/Job/FinishJobReq.cs | 8 + .../Dto/Sys/Job/QueryJobReq.cs | 4 +- .../Dto/Sys/Job/QueryJobRsp.cs | 3 +- .../Dto/Sys/Job/SetJobEnabledReq.cs | 18 + .../Dto/Sys/JobRecord/QueryJobRecordReq.cs | 4 +- .../Dto/Sys/JobRecord/QueryJobRecordRsp.cs | 3 +- .../Dto/Sys/JobRecord/UpdateJobRecordReq.cs | 6 - .../Menu/{UpdateMenuReq.cs => EditMenuReq.cs} | 5 +- .../Dto/Sys/Menu/QueryMenuReq.cs | 4 +- .../Dto/Sys/Menu/QueryMenuRsp.cs | 3 +- .../Role/{UpdateRoleReq.cs => EditRoleReq.cs} | 7 +- .../Dto/Sys/Role/QueryRoleReq.cs | 4 +- .../Dto/Sys/Role/QueryRoleRsp.cs | 3 +- .../Dto/Sys/SiteMsg/QuerySiteMsgReq.cs | 4 +- .../Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs | 3 +- .../Dto/Sys/SiteMsg/UpdateSiteMsgReq.cs | 13 - .../Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs | 4 +- .../Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs | 4 +- .../Sys/SiteMsgDept/UpdateSiteMsgDeptReq.cs | 6 - .../EditSiteMsgReq.cs} | 7 +- .../Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs | 4 +- .../Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs | 4 +- .../SiteMsgFlag/SetUserSiteMsgStatusReq.cs | 6 + .../Sys/SiteMsgFlag/UpdateSiteMsgFlagReq.cs | 6 - .../Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs | 4 +- .../Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs | 4 +- .../Sys/SiteMsgRole/UpdateSiteMsgRoleReq.cs | 6 - .../Sys/SiteMsgUser/QuerySiteMsgUserReq.cs | 4 +- .../Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs | 4 +- .../Sys/SiteMsgUser/UpdateSiteMsgUserReq.cs | 6 - ...eUpdateUserReq.cs => CreateEditUserReq.cs} | 4 +- .../Dto/Sys/User/CreateUserReq.cs | 4 +- .../Dto/Sys/User/EditSingleUserReq.cs | 23 + .../User/{UpdateUserReq.cs => EditUserReq.cs} | 9 +- .../Dto/Sys/User/QueryUserReq.cs | 4 +- .../Dto/Sys/User/QueryUserRsp.cs | 3 +- .../Dto/Sys/User/SetAvatarReq.cs | 6 +- .../Dto/Sys/User/SetUserEnabledReq.cs | 7 +- ...serProfileReq.cs => EditUserProfileReq.cs} | 4 +- .../Sys/UserProfile/QueryUserProfileReq.cs | 4 +- .../Sys/UserProfile/QueryUserProfileRsp.cs | 3 +- .../Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs | 4 +- .../Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs | 3 +- ...fyCodeReq.cs => SetVerifyCodeStatusReq.cs} | 4 +- .../Dto/Tpl/Example/QueryExampleReq.cs | 4 +- .../Dto/Tpl/Example/QueryExampleRsp.cs | 3 +- .../Dto/Tpl/Example/UpdateExampleReq.cs | 13 - src/backend/NetAdmin.Host/Utils/SqlAuditor.cs | 52 +- .../Constant/Numbers.cs | 2 +- .../HttpResponseMessageExtensions.cs | 6 +- .../NetAdmin.Infrastructure.csproj | 1 - .../Modules/Sys/IApiModule.cs | 1 - .../Modules/Sys/IConfigModule.cs | 6 +- .../Modules/Sys/IDeptModule.cs | 9 +- .../Modules/Sys/IDicCatalogModule.cs | 1 - .../Modules/Sys/IDicContentModule.cs | 1 - .../Modules/Sys/IDicModule.cs | 20 +- .../Modules/Sys/IJobModule.cs | 7 +- .../Modules/Sys/IJobRecordModule.cs | 1 - .../Modules/Sys/IMenuModule.cs | 6 +- .../Modules/Sys/IRequestLogModule.cs | 1 - .../Modules/Sys/IRoleModule.cs | 9 +- .../Modules/Sys/ISiteMsgDeptModule.cs | 1 - .../Modules/Sys/ISiteMsgFlagModule.cs | 1 - .../Modules/Sys/ISiteMsgModule.cs | 8 +- .../Modules/Sys/ISiteMsgRoleModule.cs | 1 - .../Modules/Sys/ISiteMsgUserModule.cs | 1 - .../Modules/Sys/IUserModule.cs | 6 +- .../Modules/Sys/IUserProfileModule.cs | 1 - .../Modules/Sys/IVerifyCodeModule.cs | 1 - .../Modules/Tpl/IExampleModule.cs | 1 - .../Services/Sys/ApiService.cs | 29 +- .../Services/Sys/ConfigService.cs | 60 +- .../Sys/Dependency/IDicCatalogService.cs | 9 +- .../Sys/Dependency/IDicContentService.cs | 9 +- .../Services/Sys/Dependency/IJobService.cs | 2 +- .../Sys/Dependency/ISiteMsgFlagService.cs | 9 +- .../Sys/Dependency/IUserProfileService.cs | 9 +- .../Services/Sys/Dependency/IUserService.cs | 10 - .../Sys/Dependency/IVerifyCodeService.cs | 9 +- .../Services/Sys/DeptService.cs | 53 +- .../Services/Sys/DevService.cs | 5 - .../Services/Sys/DicCatalogService.cs | 61 +- .../Services/Sys/DicContentService.cs | 76 +- .../Services/Sys/DicService.cs | 28 +- .../Services/Sys/JobRecordService.cs | 57 +- .../Services/Sys/JobService.cs | 131 +- .../Services/Sys/MenuService.cs | 53 +- .../Services/Sys/RequestLogService.cs | 49 +- .../Services/Sys/RoleService.cs | 60 +- .../Services/Sys/SiteMsgDeptService.cs | 48 +- .../Services/Sys/SiteMsgFlagService.cs | 52 +- .../Services/Sys/SiteMsgRoleService.cs | 48 +- .../Services/Sys/SiteMsgService.cs | 125 +- .../Services/Sys/SiteMsgUserService.cs | 48 +- .../Services/Sys/UserProfileService.cs | 50 +- .../Services/Sys/UserService.cs | 197 +- .../Services/Sys/VerifyCodeService.cs | 51 +- .../Services/Tpl/ExampleService.cs | 48 +- .../Sys/ApiCache.cs | 6 - .../Sys/ConfigCache.cs | 12 +- .../Sys/DeptCache.cs | 12 +- .../Sys/DicCache.cs | 24 +- .../Sys/DicCatalogCache.cs | 6 - .../Sys/DicContentCache.cs | 6 - .../Sys/JobCache.cs | 10 +- .../Sys/JobRecordCache.cs | 6 - .../Sys/MenuCache.cs | 12 +- .../Sys/RequestLogCache.cs | 6 - .../Sys/RoleCache.cs | 12 +- .../Sys/SiteMsgCache.cs | 14 +- .../Sys/SiteMsgDeptCache.cs | 6 - .../Sys/SiteMsgFlagCache.cs | 6 - .../Sys/SiteMsgRoleCache.cs | 6 - .../Sys/SiteMsgUserCache.cs | 6 - .../Sys/UserCache.cs | 12 +- .../Sys/UserProfileCache.cs | 6 - .../Sys/VerifyCodeCache.cs | 6 - .../Tpl/ExampleCache.cs | 6 - .../Controllers/Sys/ApiController.cs | 9 - .../Controllers/Sys/ConfigController.cs | 18 +- .../Controllers/Sys/DeptController.cs | 18 +- .../Controllers/Sys/DicController.cs | 36 +- .../Controllers/Sys/JobController.cs | 14 +- .../Controllers/Sys/LogController.cs | 10 - .../Controllers/Sys/MenuController.cs | 18 +- .../Controllers/Sys/RoleController.cs | 18 +- .../Controllers/Sys/SiteMsgController.cs | 20 +- .../Controllers/Sys/UserController.cs | 20 +- .../Controllers/Sys/VerifyCodeController.cs | 9 - .../Controllers/Tpl/ExampleController.cs | 9 - .../Jobs/ScheduledJob.cs | 2 +- .../Subscribers/EmailCodeSender.cs | 6 +- .../Subscribers/SmsCodeSender.cs | 6 +- src/frontend/admin/src/api/sys/config.js | 22 +- src/frontend/admin/src/api/sys/dept.js | 22 +- src/frontend/admin/src/api/sys/dic.js | 44 +- src/frontend/admin/src/api/sys/menu.js | 22 +- src/frontend/admin/src/api/sys/role.js | 22 +- src/frontend/admin/src/api/sys/sitemsg.js | 22 +- src/frontend/admin/src/api/sys/user.js | 34 +- src/frontend/admin/src/api/tpl/example.js | 11 - src/frontend/admin/src/global.js | 2 + src/frontend/admin/src/router/index.js | 1 - .../src/views/profile/account/set-email.vue | 6 +- .../admin/src/views/sys/config/index.vue | 2 +- .../admin/src/views/sys/config/save.vue | 2 +- .../admin/src/views/sys/dept/save.vue | 2 +- .../admin/src/views/sys/dic/list/save.vue | 2 +- src/frontend/admin/src/views/sys/dic/save.vue | 2 +- src/frontend/admin/src/views/sys/job/save.vue | 8 +- .../admin/src/views/sys/menu/save.vue | 2 +- src/frontend/admin/src/views/sys/msg/save.vue | 2 +- .../admin/src/views/sys/role/save.vue | 2 +- .../admin/src/views/sys/user/save.vue | 2 +- 192 files changed, 3011 insertions(+), 1426 deletions(-) create mode 100644 src/backend/NetAdmin.Application/Repositories/BasicRepository.cs delete mode 100644 src/backend/NetAdmin.Application/Repositories/DefaultRepository.cs delete mode 100644 src/backend/NetAdmin.Domain/DbMaps/Dependency/Fields/IFieldPrimary.cs rename src/backend/NetAdmin.Domain/Dto/Sys/Config/{UpdateConfigReq.cs => EditConfigReq.cs} (76%) rename src/backend/NetAdmin.Domain/Dto/Sys/Dept/{UpdateDeptReq.cs => EditDeptReq.cs} (69%) rename src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/{UpdateDicCatalogReq.cs => EditDicCatalogReq.cs} (74%) rename src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/{UpdateDicContentReq.cs => EditDicContentReq.cs} (74%) create mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/Job/EditJobReq.cs create mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs create mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/UpdateJobRecordReq.cs rename src/backend/NetAdmin.Domain/Dto/Sys/Menu/{UpdateMenuReq.cs => EditMenuReq.cs} (74%) rename src/backend/NetAdmin.Domain/Dto/Sys/Role/{UpdateRoleReq.cs => EditRoleReq.cs} (78%) delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/UpdateSiteMsgReq.cs delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/UpdateSiteMsgDeptReq.cs rename src/backend/NetAdmin.Domain/Dto/Sys/{Job/UpdateJobReq.cs => SiteMsgFlag/EditSiteMsgReq.cs} (57%) create mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/SetUserSiteMsgStatusReq.cs delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/UpdateSiteMsgFlagReq.cs delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/UpdateSiteMsgRoleReq.cs delete mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/UpdateSiteMsgUserReq.cs rename src/backend/NetAdmin.Domain/Dto/Sys/User/{CreateUpdateUserReq.cs => CreateEditUserReq.cs} (95%) create mode 100644 src/backend/NetAdmin.Domain/Dto/Sys/User/EditSingleUserReq.cs rename src/backend/NetAdmin.Domain/Dto/Sys/User/{UpdateUserReq.cs => EditUserReq.cs} (68%) rename src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/{UpdateUserProfileReq.cs => EditUserProfileReq.cs} (73%) rename src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/{UpdateVerifyCodeReq.cs => SetVerifyCodeStatusReq.cs} (73%) delete mode 100644 src/backend/NetAdmin.Domain/Dto/Tpl/Example/UpdateExampleReq.cs diff --git a/assets/res/Statements.ln b/assets/res/Statements.ln index fc0fc66b..42998046 100644 --- a/assets/res/Statements.ln +++ b/assets/res/Statements.ln @@ -23,7 +23,7 @@ XML注释文件不存在 学历不正确 密码不能为空 已处理完毕 -并发冲突请稍后重试 +并发冲突_请稍后重试 开始事务 性别不正确 手机号码不正确 diff --git a/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs b/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs index a73e2afd..988e0d6b 100644 --- a/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs +++ b/src/backend/NetAdmin.AdmServer.Tests/AllTests.cs @@ -1,13 +1,34 @@ +#pragma warning disable xUnit1024,xUnit1026 + using System.Diagnostics.CodeAnalysis; using System.Net.Http.Json; using Microsoft.AspNetCore.Mvc.Testing; using NetAdmin.AdmServer.Host; using NetAdmin.Application.Modules; using NetAdmin.Domain.Dto.Dependency; +using NetAdmin.Domain.Dto.Sys; using NetAdmin.Domain.Dto.Sys.Api; using NetAdmin.Domain.Dto.Sys.Cache; +using NetAdmin.Domain.Dto.Sys.Captcha; using NetAdmin.Domain.Dto.Sys.Config; +using NetAdmin.Domain.Dto.Sys.Dept; +using NetAdmin.Domain.Dto.Sys.Dev; +using NetAdmin.Domain.Dto.Sys.Dic.Catalog; +using NetAdmin.Domain.Dto.Sys.Dic.Content; +using NetAdmin.Domain.Dto.Sys.Job; +using NetAdmin.Domain.Dto.Sys.JobRecord; +using NetAdmin.Domain.Dto.Sys.Menu; +using NetAdmin.Domain.Dto.Sys.RequestLog; +using NetAdmin.Domain.Dto.Sys.Role; +using NetAdmin.Domain.Dto.Sys.SiteMsg; +using NetAdmin.Domain.Dto.Sys.SiteMsgDept; +using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; +using NetAdmin.Domain.Dto.Sys.SiteMsgRole; +using NetAdmin.Domain.Dto.Sys.SiteMsgUser; using NetAdmin.Domain.Dto.Sys.Tool; +using NetAdmin.Domain.Dto.Sys.User; +using NetAdmin.Domain.Dto.Sys.UserProfile; +using NetAdmin.Domain.Dto.Sys.VerifyCode; using NetAdmin.SysComponent.Application.Modules.Sys; using NetAdmin.Tests; using Xunit; @@ -20,13 +41,23 @@ namespace NetAdmin.AdmServer.Tests; /// [SuppressMessage("Usage", "xUnit1028:Test method must have valid return type")] public class AllTests(WebApplicationFactory factory, ITestOutputHelper testOutputHelper) - : WebApiTestBase(factory, testOutputHelper), IToolsModule, ICacheModule, IApiModule, IConfigModule + : WebApiTestBase(factory, testOutputHelper), IApiModule, ICacheModule, ICaptchaModule, IConfigModule + , IConstantModule, IDeptModule, IDevModule, IDicCatalogModule, IDicContentModule, IDicModule, IFileModule + , IJobModule, IJobRecordModule, IMenuModule, IRequestLogModule, IRoleModule, ISiteMsgDeptModule, ISiteMsgFlagModule + , ISiteMsgModule, ISiteMsgRoleModule, ISiteMsgUserModule, IToolsModule, IUserModule, IUserProfileModule + , IVerifyCodeModule { - /// - public Task BulkDeleteAsync(BulkReq req) + /// + public Task BulkDeleteCatalogAsync(BulkReq req) { - throw new NotImplementedException(); + return default; + } + + /// + public Task BulkDeleteContentAsync(BulkReq req) + { + return default; } /// @@ -39,45 +70,586 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper } /// + [InlineData(default)] + [Theory] + public Task CheckMobileAvailableAsync(CheckMobileAvailableReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CheckUserNameAvailableAsync(CheckUserNameAvailableReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CountAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task CountAsync(QueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task CountAsync(QueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateJobReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateVerifyCodeReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateUserProfileReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateSiteMsgUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateSiteMsgRoleReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateSiteMsgReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateSiteMsgFlagReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateSiteMsgDeptReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateRoleReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateRequestLogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateMenuReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateJobRecordReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateDicContentReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateDicCatalogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateAsync(CreateDeptReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task CreateAsync(CreateConfigReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task CreateAsync(CreateApiReq req) { - throw new NotImplementedException(); - } - - /// - public Task DeleteAsync(DelReq req) - { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] + public Task CreateCatalogAsync(CreateDicCatalogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task CreateContentAsync(CreateDicContentReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task DeleteCatalogAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task DeleteContentAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditRoleReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditDeptReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditConfigReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditJobReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditMenuReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditSiteMsgReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditAsync(EditUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditCatalogAsync(EditDicCatalogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task EditContentAsync(EditDicContentReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExecuteAsync(QueryJobReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ExistAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task ExistAsync(QueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task ExistAsync(QueryReq req) { - throw new NotImplementedException(); + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GenerateCsCodeAsync(GenerateCsCodeReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GenerateIconCodeAsync(GenerateIconCodeReq req) + { + return default; + } + + /// + [Fact] + public Task GenerateJsCodeAsync() + { + return default; } /// @@ -93,33 +665,284 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper } /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryJobReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryVerifyCodeReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryUserProfileReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QuerySiteMsgUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QuerySiteMsgRoleReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QuerySiteMsgReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QuerySiteMsgFlagReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QuerySiteMsgDeptReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryRoleReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryRequestLogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryMenuReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryJobRecordReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryDicContentReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryDicCatalogReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetAsync(QueryDeptReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task GetAsync(QueryConfigReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task GetAsync(QueryApiReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] + public Task> GetBarChartAsync(QueryReq req) + { + return default; + } + + /// + [Fact] + public Task GetCaptchaImageAsync() + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetCatalogAsync(QueryDicCatalogReq req) + { + return default; + } + + /// + [Fact] public Task GetChangeLogAsync() { - throw new NotImplementedException(); + return default; } /// + [Fact] + public IDictionary GetCharsDic() + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetContentAsync(QueryDicContentReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetDicValueAsync(GetDicValueReq req) + { + return default; + } + + /// + [Fact] + public IDictionary> GetEnums() + { + return default; + } + + /// + [Fact] public Task GetLatestConfigAsync() { - throw new NotImplementedException(); + return default; } /// + [Fact] + public IDictionary GetLocalizedStrings() + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task GetMineAsync(QuerySiteMsgReq req) + { + return default; + } + + /// + [Fact] public Task> GetModulesAsync() { - throw new NotImplementedException(); + return default; + } + + /// + [Fact] + public IDictionary GetNumbersDic() + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> GetPieChartByApiSummaryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> GetPieChartByHttpStatusCodeAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> GetRecordBarChartAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> GetRecordPieChartByHttpStatusCodeAsync( + QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> GetRecordPieChartByNameAsync(QueryReq req) + { + return default; } /// @@ -141,27 +964,451 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper } /// + [InlineData(default)] + [Theory] + public Task LoginByPwdAsync(LoginByPwdReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task LoginBySmsAsync(LoginBySmsReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task> PagedQueryAsync(PagedQueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task> PagedQueryAsync(PagedQueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] + public Task> PagedQueryCatalogAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryContentAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> PagedQueryMineAsync(PagedQueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] public Task> QueryAsync(QueryReq req) { - throw new NotImplementedException(); + return default; } /// + [InlineData(default)] + [Theory] public Task> QueryAsync(QueryReq req) { - throw new NotImplementedException(); + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryCatalogAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryContentAsync(QueryReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task> QueryProfileAsync(QueryReq req) + { + 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] + public Task RegisterAsync(RegisterUserReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task ResetPasswordAsync(ResetPasswordReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SendVerifyCodeAsync(SendVerifyCodeReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetAvatarAsync(SetAvatarReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetEmailAsync(SetEmailReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetEnabledAsync(SetJobEnabledReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetEnabledAsync(SetUserEnabledReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetMobileAsync(SetMobileReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetPasswordAsync(SetPasswordReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task SetSiteMsgStatusAsync(SetUserSiteMsgStatusReq req) + { + return default; } /// @@ -173,14 +1420,365 @@ public class AllTests(WebApplicationFactory factory, ITestOutputHelper } /// - public Task UpdateAsync(UpdateConfigReq req) + [Fact] + public Task UnreadCountAsync() { - throw new NotImplementedException(); + return default; } /// - public Task UpdateAsync(NopReq req) + [InlineData(default)] + [Theory] + public Task UploadAsync(IFormFile file) { - throw new NotImplementedException(); + return default; + } + + /// + [Fact] + public Task UserInfoAsync() + { + return default; + } + + /// + [Fact] + public Task> UserMenusAsync() + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task VerifyAsync(VerifyCodeReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + public Task VerifyCaptchaAsync(VerifyCaptchaReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + BulkDeleteAsync(BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.BulkDeleteAsync( + BulkReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule. + DeleteAsync(DelReq req) + { + return default; + } + + /// + [InlineData(default)] + [Theory] + Task ICrudModule.DeleteAsync(DelReq req) + { + return default; } } \ 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 4879b347..d7fedfb9 100644 --- a/src/backend/NetAdmin.Application/Modules/ICrudModule.cs +++ b/src/backend/NetAdmin.Application/Modules/ICrudModule.cs @@ -10,16 +10,12 @@ namespace NetAdmin.Application.Modules; /// 创建响应类型 /// 查询请求类型 /// 查询响应类型 -/// 修改请求类型 -/// 修改响应类型 /// 删除请求类型 -public interface ICrudModule +public interface ICrudModule where TCreateReq : DataAbstraction, new() where TCreateRsp : DataAbstraction where TQueryReq : DataAbstraction, new() where TQueryRsp : DataAbstraction - where TUpdateReq : DataAbstraction, new() - where TUpdateRsp : DataAbstraction where TDelReq : DataAbstraction, new() { /// @@ -61,9 +57,4 @@ public interface ICrudModule Task> QueryAsync(QueryReq req); - - /// - /// 更新实体 - /// - Task UpdateAsync(TUpdateReq req); } \ No newline at end of file diff --git a/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs b/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs new file mode 100644 index 00000000..a9b4f109 --- /dev/null +++ b/src/backend/NetAdmin.Application/Repositories/BasicRepository.cs @@ -0,0 +1,20 @@ +using NetAdmin.Domain.Contexts; +using NetAdmin.Domain.DbMaps.Dependency; + +namespace NetAdmin.Application.Repositories; + +/// +/// 基础仓储 +/// +public sealed class BasicRepository( + IFreeSql fSql + , UnitOfWorkManager uowManger + , ContextUserToken userToken) : DefaultRepository(fSql, uowManger) + where TEntity : EntityBase // + where TPrimary : IEquatable +{ + /// + /// 当前上下文关联的用户令牌 + /// + public ContextUserToken UserToken => userToken; +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Application/Repositories/DefaultRepository.cs b/src/backend/NetAdmin.Application/Repositories/DefaultRepository.cs deleted file mode 100644 index ed65ea05..00000000 --- a/src/backend/NetAdmin.Application/Repositories/DefaultRepository.cs +++ /dev/null @@ -1,17 +0,0 @@ -using NetAdmin.Domain.Contexts; -using NetAdmin.Domain.DbMaps.Dependency; - -namespace NetAdmin.Application.Repositories; - -/// -/// 默认仓储 -/// -public sealed class DefaultRepository(IFreeSql fSql, UnitOfWorkManager uowManger, ContextUserToken userToken) - : DefaultRepository(fSql, uowManger) - where TEntity : EntityBase -{ - /// - /// 当前上下文关联的用户令牌 - /// - public ContextUserToken UserToken => userToken; -} \ No newline at end of file diff --git a/src/backend/NetAdmin.Application/Services/RedLockerService.cs b/src/backend/NetAdmin.Application/Services/RedLockerService.cs index 59a3336b..1949260d 100644 --- a/src/backend/NetAdmin.Application/Services/RedLockerService.cs +++ b/src/backend/NetAdmin.Application/Services/RedLockerService.cs @@ -7,9 +7,11 @@ namespace NetAdmin.Application.Services; /// /// RedLocker Service Base /// -public abstract class RedLockerService(DefaultRepository rpo, RedLocker redLocker) - : RepositoryService(rpo) - where T1 : EntityBase +public abstract class RedLockerService( + BasicRepository rpo + , RedLocker redLocker) : RepositoryService(rpo) + where TEntity : EntityBase // + where TPrimary : IEquatable { /// /// 获取锁 diff --git a/src/backend/NetAdmin.Application/Services/RepositoryService.cs b/src/backend/NetAdmin.Application/Services/RepositoryService.cs index 3a4a7256..7d1fbe48 100644 --- a/src/backend/NetAdmin.Application/Services/RepositoryService.cs +++ b/src/backend/NetAdmin.Application/Services/RepositoryService.cs @@ -1,5 +1,6 @@ using NetAdmin.Application.Repositories; using NetAdmin.Domain.DbMaps.Dependency; +using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Application.Services; @@ -7,14 +8,17 @@ namespace NetAdmin.Application.Services; /// 仓储服务基类 /// /// 实体类型 +/// 主键类型 /// 日志类型 -public abstract class RepositoryService(DefaultRepository rpo) : ServiceBase - where TEntity : EntityBase +public abstract class RepositoryService(BasicRepository rpo) + : ServiceBase + where TEntity : EntityBase // + where TPrimary : IEquatable { /// /// 默认仓储 /// - protected DefaultRepository Rpo => rpo; + protected BasicRepository Rpo => rpo; /// /// 启用级联保存 @@ -25,10 +29,45 @@ public abstract class RepositoryService(DefaultRepository - /// 针对 Sqlite 数据的更新操作 + /// 更新实体 /// - /// - /// 非 Sqlite 数据库请删除 - /// - protected abstract Task UpdateForSqliteAsync(TEntity req); + protected Task UpdateAsync(TEntity dto, IEnumerable includeFields, string[] excludeFields = null + , Expression> whereExp = null) + { + whereExp ??= a => a.Id.Equals(dto.Id); + var update = BuildUpdate(dto, includeFields, excludeFields).Where(whereExp); + + return update.ExecuteAffrowsAsync(); + } + #if DBTYPE_SQLSERVER + /// + /// 更新实体 + /// + protected Task> UpdateEntityAsync(TEntity dto, IEnumerable includeFields + , string[] excludeFields = null + , Expression> whereExp = null) + { + whereExp ??= a => a.Id.Equals(dto.Id); + return BuildUpdate(dto, includeFields, excludeFields).Where(whereExp).ExecuteUpdatedAsync(); + } + #endif + + private IUpdate BuildUpdate(TEntity dto, IEnumerable includeFields, string[] excludeFields = null) + { + var ret = includeFields == null + ? Rpo.UpdateDiy.SetSource(dto) + : Rpo.UpdateDiy.SetDto(includeFields!.ToDictionary( + x => x + , x => typeof(TEntity).GetProperty(x, BindingFlags.Public | BindingFlags.Instance)! + .GetValue(dto))); + if (excludeFields != null) { + ret = ret.IgnoreColumns(excludeFields); + } + + if (dto is IFieldVersion version) { + ret = ret.Where($"{nameof(IFieldVersion.Version)} = @version", new { version = version.Version }); + } + + return ret; + } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/EntityBase.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/EntityBase.cs index db6af365..6e517e64 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/EntityBase.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/EntityBase.cs @@ -3,4 +3,11 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// /// 数据库实体基类 /// -public abstract record EntityBase : DataAbstraction; \ No newline at end of file +public abstract record EntityBase : DataAbstraction + where T : IEquatable +{ + /// + /// 唯一编码 + /// + public virtual T Id { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/Fields/IFieldPrimary.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/Fields/IFieldPrimary.cs deleted file mode 100644 index 20172a99..00000000 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/Fields/IFieldPrimary.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace NetAdmin.Domain.DbMaps.Dependency.Fields; - -/// -/// 主键字段接口 -/// -public interface IFieldPrimary -{ - /// - /// 唯一编码 - /// - T Id { get; init; } -} \ 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 450c6f92..bc15ad14 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/ImmutableEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record ImmutableEntity : ImmutableEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -17,6 +17,7 @@ public abstract record ImmutableEntity : ImmutableEntity /// /// 主键类型 public abstract record ImmutableEntity : LiteImmutableEntity, IFieldCreatedUser + where T : IEquatable { /// [Column(CanUpdate = false, Position = -1)] @@ -28,7 +29,7 @@ public abstract record ImmutableEntity : LiteImmutableEntity, IFieldCreate [JsonIgnore] public virtual string CreatedUserName { get; init; } - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] public override T Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs index 4c730a0e..ef329050 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteImmutableEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record LiteImmutableEntity : LiteImmutableEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -16,15 +16,16 @@ public abstract record LiteImmutableEntity : LiteImmutableEntity /// 轻型不可变实体 /// /// 主键类型 -public abstract record LiteImmutableEntity : EntityBase, IFieldPrimary, IFieldCreatedTime +public abstract record LiteImmutableEntity : EntityBase, IFieldCreatedTime + where T : IEquatable { /// [Column(ServerTime = DateTimeKind.Local, CanUpdate = false, Position = -1)] [JsonIgnore] public virtual DateTime CreatedTime { get; init; } - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [JsonIgnore] - public virtual T Id { get; init; } + 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 f8c45272..be0f6195 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteMutableEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record LiteMutableEntity : LiteMutableEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -16,8 +16,9 @@ public abstract record LiteMutableEntity : LiteMutableEntity /// 轻型可变实体 /// public abstract record LiteMutableEntity : LiteImmutableEntity, IFieldModifiedTime + where T : IEquatable { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] public override T Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs index 17219d19..f791d826 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/LiteVersionEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record LiteVersionEntity : LiteVersionEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -16,8 +16,9 @@ public abstract record LiteVersionEntity : LiteVersionEntity /// 乐观锁轻型可变实体 /// public abstract record LiteVersionEntity : LiteMutableEntity, IFieldVersion + where T : IEquatable { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] public override T Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs index 5fd8fb19..37ee5975 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/MutableEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record MutableEntity : MutableEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -16,8 +16,9 @@ public abstract record MutableEntity : MutableEntity /// 可变实体 /// public abstract record MutableEntity : LiteMutableEntity, IFieldModifiedUser + where T : IEquatable { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] public override T Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs index 71bf2c1e..b3269621 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/SimpleEntity.cs @@ -3,4 +3,5 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// /// 简单实体 /// -public abstract record SimpleEntity : EntityBase; \ No newline at end of file +public abstract record SimpleEntity : EntityBase + where T : IEquatable; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs b/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs index 958f6765..83b3859e 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Dependency/VersionEntity.cs @@ -6,7 +6,7 @@ namespace NetAdmin.Domain.DbMaps.Dependency; /// public abstract record VersionEntity : VersionEntity { - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Snowflake] public override long Id { get; init; } @@ -16,6 +16,7 @@ public abstract record VersionEntity : VersionEntity /// 乐观锁可变实体 /// public abstract record VersionEntity : LiteVersionEntity, IFieldModifiedUser, IFieldCreatedUser + where T : IEquatable { /// [Column(CanUpdate = false, Position = -1)] @@ -27,7 +28,7 @@ public abstract record VersionEntity : LiteVersionEntity, IFieldModifiedUs [JsonIgnore] public virtual string CreatedUserName { get; init; } - /// + /// [Column(IsIdentity = false, IsPrimary = true, Position = 1)] public override T Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs index 70c096f2..723eb490 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs @@ -16,7 +16,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary [Navigate(nameof(ParentId))] public IEnumerable Children { get; init; } - /// + /// [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127, IsIdentity = false, IsPrimary = true, Position = 1)] [JsonIgnore] public override string Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs index 4117c689..a5246585 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs @@ -61,11 +61,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort /// /// 部门描述 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] - #endif [JsonIgnore] public virtual string Summary { 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 a86d0b7f..52628ee8 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Job.cs @@ -75,10 +75,10 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// /// 请求体 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestBody { get; init; } @@ -86,10 +86,10 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// /// 请求头 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestHeader { get; init; } @@ -97,10 +97,10 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary /// /// 请求的网络地址 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestUrl { get; init; } @@ -113,10 +113,10 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary public virtual JobStatues Status { get; init; } /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string Summary { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs index 21896848..ca171f8d 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_JobRecord.cs @@ -48,10 +48,10 @@ public record Sys_JobRecord : LiteImmutableEntity /// /// 请求体 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestBody { get; init; } @@ -59,10 +59,10 @@ public record Sys_JobRecord : LiteImmutableEntity /// /// 请求头 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestHeader { get; init; } @@ -77,10 +77,10 @@ public record Sys_JobRecord : LiteImmutableEntity /// /// 响应体 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string ResponseBody { get; init; } @@ -88,10 +88,10 @@ public record Sys_JobRecord : LiteImmutableEntity /// /// 响应头 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string ResponseHeader { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs index dadaa9ce..ed9692dc 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_RequestLog.cs @@ -35,21 +35,17 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 创建者来源地址 /// - #if DBTYPE_SQLITE [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #endif [JsonIgnore] public string CreatedReferer { get; init; } /// /// 创建者客户端用户代理 /// - #if DBTYPE_SQLITE - [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_1022)] + #else + [Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string CreatedUserAgent { get; init; } @@ -71,10 +67,10 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 异常信息 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string Exception { get; init; } @@ -82,10 +78,10 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 附加数据 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string ExtraData { get; init; } @@ -107,21 +103,17 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 来源地址 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #endif [JsonIgnore] public virtual string ReferUrl { get; init; } /// /// 请求内容 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestBody { get; init; } @@ -136,10 +128,10 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 请求头信息 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string RequestHeaders { get; init; } @@ -154,10 +146,10 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 响应内容 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string ResponseBody { get; init; } @@ -172,10 +164,10 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient /// /// 响应头 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string ResponseHeaders { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs index 56bc95df..97eb6462 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs @@ -85,11 +85,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary /// /// 备注 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] - #endif [JsonIgnore] public virtual string Summary { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs index b4d264bc..0b3bd0ec 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs @@ -14,10 +14,10 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// /// 消息内容 /// - #if DBTYPE_SQLITE - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else + #if DBTYPE_SQLSERVER [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] + #else + [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] #endif [JsonIgnore] public virtual string Content { get; init; } @@ -59,22 +59,14 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary /// /// 消息摘要 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] - #endif [JsonIgnore] public virtual string Summary { get; init; } /// /// 消息主题 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] - #endif [JsonIgnore] public virtual string Title { get; init; } diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs index 6e3ee237..9f4b35ec 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs @@ -85,11 +85,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister /// /// 描述 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #endif [JsonIgnore] public virtual string Summary { get; init; } @@ -119,7 +115,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister ? Array.Empty() : s.RoleIds.Select(x => new Sys_Role { Id = x })); - _ = config.ForType() + _ = config.ForType() .Map( // d => d.Password, s => s.PasswordText.NullOrEmpty() ? Guid.Empty : s.PasswordText.Pwd().Guid()) .Map( // diff --git a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs index b8ac0a48..7e2bb7e4 100644 --- a/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs +++ b/src/backend/NetAdmin.Domain/DbMaps/Sys/Sys_VerifyCode.cs @@ -33,11 +33,7 @@ public record Sys_VerifyCode : VersionEntity /// /// 发送报告 /// - #if DBTYPE_SQLITE [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] - #else - [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)] - #endif [JsonIgnore] public string Report { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs b/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs index ba0a300f..712a9a1d 100644 --- a/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Dependency/DelReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; namespace NetAdmin.Domain.Dto.Dependency; @@ -8,8 +8,9 @@ public sealed record DelReq : DelReq; /// /// 请求:通过编号删除 /// -public record DelReq : DataAbstraction, IFieldPrimary +public record DelReq : EntityBase + where T : IEquatable { - /// - public T Id { get; init; } + /// + public override T Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs index a211bf2e..e94f1bcf 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Api/QueryApiRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -11,7 +12,7 @@ public sealed record QueryApiRsp : Sys_Api /// public new IEnumerable Children { get; init; } - /// + /// public override string Id { get; init; } /// diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/UpdateConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs similarity index 76% rename from src/backend/NetAdmin.Domain/Dto/Sys/Config/UpdateConfigReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs index 11cd77ba..aa3bc995 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/UpdateConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/EditConfigReq.cs @@ -3,9 +3,9 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Config; /// -/// 请求:更新配置 +/// 请求:编辑配置 /// -public sealed record UpdateConfigReq : CreateConfigReq +public sealed record EditConfigReq : CreateConfigReq { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs index 999244ed..f5992068 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigReq.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -12,7 +13,7 @@ public sealed record QueryConfigReq : Sys_Config [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public new bool? Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs index 4d2aaf20..ea293dda 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Config/QueryConfigRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; @@ -18,7 +19,7 @@ public sealed record QueryConfigRsp : Sys_Config [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/UpdateDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs similarity index 69% rename from src/backend/NetAdmin.Domain/Dto/Sys/Dept/UpdateDeptReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs index eba8983e..2820e063 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/UpdateDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/EditDeptReq.cs @@ -1,13 +1,14 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Dept; /// -/// 请求:更新部门 +/// 请求:编辑部门 /// -public sealed record UpdateDeptReq : CreateDeptReq +public sealed record EditDeptReq : CreateDeptReq { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs index 891961cb..0271798f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.Dept; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.Dept; /// public sealed record QueryDeptReq : Sys_Dept { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs index 9f226df5..cba55585 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dept/QueryDeptRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -19,7 +20,7 @@ public sealed record QueryDeptRsp : Sys_Dept [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/UpdateDicCatalogReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs similarity index 74% rename from src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/UpdateDicCatalogReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs index cb71d31f..cd2bf11f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/UpdateDicCatalogReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/EditDicCatalogReq.cs @@ -3,9 +3,9 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Dic.Catalog; /// -/// 请求:更新字典目录 +/// 请求:编辑字典目录 /// -public sealed record UpdateDicCatalogReq : CreateDicCatalogReq +public sealed record EditDicCatalogReq : CreateDicCatalogReq { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] 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 9cbd0156..76d3cb10 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Catalog/QueryDicCatalogRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -15,7 +16,7 @@ public sealed record QueryDicCatalogRsp : Sys_DicCatalog [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public override string Code { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/UpdateDicContentReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs similarity index 74% rename from src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/UpdateDicContentReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs index c2a1ba76..557a0954 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/UpdateDicContentReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Dic/Content/EditDicContentReq.cs @@ -3,9 +3,9 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Dic.Content; /// -/// 请求:更新字典内容 +/// 请求:编辑字典内容 /// -public sealed record UpdateDicContentReq : CreateDicContentReq +public sealed record EditDicContentReq : CreateDicContentReq { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/EditJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/EditJobReq.cs new file mode 100644 index 00000000..2a5f49f1 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/EditJobReq.cs @@ -0,0 +1,11 @@ +namespace NetAdmin.Domain.Dto.Sys.Job; + +/// +/// 请求:编辑计划作业 +/// +public sealed record EditJobReq : CreateJobReq +{ + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Version { 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 new file mode 100644 index 00000000..891048be --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/FinishJobReq.cs @@ -0,0 +1,8 @@ +using NetAdmin.Domain.DbMaps.Sys; + +namespace NetAdmin.Domain.Dto.Sys.Job; + +/// +/// 请求:完成计划作业 +/// +public sealed record FinishJobReq : Sys_Job; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs index 2d2147a6..2b8e4b09 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.Job; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.Job; /// public sealed record QueryJobReq : Sys_Job { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs index 7f40593a..38aac976 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/QueryJobRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.User; @@ -35,7 +36,7 @@ public sealed record QueryJobRsp : Sys_Job [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override HttpMethods HttpMethod { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs new file mode 100644 index 00000000..30aaf62e --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Job/SetJobEnabledReq.cs @@ -0,0 +1,18 @@ +using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Sys; + +namespace NetAdmin.Domain.Dto.Sys.Job; + +/// +/// 请求:设置计划作业启用状态 +/// +public sealed record SetJobEnabledReq : Sys_Job +{ + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override bool Enabled { get; init; } + + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Version { get; init; } +} \ 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 46ac8059..3c3020eb 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.JobRecord; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.JobRecord; /// public sealed record QueryJobRecordReq : Sys_JobRecord { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs index 1933ad23..0d4d375a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/QueryJobRecordRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using HttpMethods = NetAdmin.Domain.Enums.HttpMethods; @@ -25,7 +26,7 @@ public sealed record QueryJobRecordRsp : Sys_JobRecord [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override HttpMethods HttpMethod { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/UpdateJobRecordReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/UpdateJobRecordReq.cs deleted file mode 100644 index d262634e..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/JobRecord/UpdateJobRecordReq.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NetAdmin.Domain.Dto.Sys.JobRecord; - -/// -/// 请求:更新计划作业执行记录 -/// -public sealed record UpdateJobRecordReq : CreateJobRecordReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/UpdateMenuReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs similarity index 74% rename from src/backend/NetAdmin.Domain/Dto/Sys/Menu/UpdateMenuReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs index d0275beb..768b59f5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/UpdateMenuReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/EditMenuReq.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Menu; @@ -5,9 +6,9 @@ namespace NetAdmin.Domain.Dto.Sys.Menu; /// /// 请求:更新菜单 /// -public sealed record UpdateMenuReq : CreateMenuReq +public sealed record EditMenuReq : CreateMenuReq { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs index bf2af730..a1e19c05 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.Menu; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.Menu; /// public sealed record QueryMenuReq : Sys_Menu { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs index abd9ac96..3f04b5ff 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Menu/QueryMenuRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -36,7 +37,7 @@ public sealed record QueryMenuRsp : Sys_Menu, IRegister [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool HiddenBreadCrumb { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/UpdateRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs similarity index 78% rename from src/backend/NetAdmin.Domain/Dto/Sys/Role/UpdateRoleReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs index 813c3206..b12e1f5d 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/UpdateRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/EditRoleReq.cs @@ -1,13 +1,14 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.Role; /// -/// 请求:修改角色 +/// 请求:编辑角色 /// -public sealed record UpdateRoleReq : CreateRoleReq +public sealed record EditRoleReq : CreateRoleReq { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.唯一编码不能为空))] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs index db256ba9..5be37137 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.Role; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.Role; /// public sealed record QueryRoleReq : Sys_Role { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs index 221817f5..007b3b6f 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/Role/QueryRoleRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; @@ -37,7 +38,7 @@ public sealed record QueryRoleRsp : Sys_Role, IRegister [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs index a2586b3a..24462671 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsg; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsg; /// public sealed record QuerySiteMsgReq : Sys_SiteMsg { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs index 073968b0..144771b5 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/QuerySiteMsgRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; @@ -29,7 +30,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new IEnumerable Depts { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/UpdateSiteMsgReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/UpdateSiteMsgReq.cs deleted file mode 100644 index b2a4c76c..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsg/UpdateSiteMsgReq.cs +++ /dev/null @@ -1,13 +0,0 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - -namespace NetAdmin.Domain.Dto.Sys.SiteMsg; - -/// -/// 请求:更新站内信 -/// -public sealed record UpdateSiteMsgReq : CreateSiteMsgReq -{ - /// - [JsonIgnore(Condition = JsonIgnoreCondition.Never)] - public override long Version { get; init; } -} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs index 8709ecb9..ca632094 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; /// public sealed record QuerySiteMsgDeptReq : Sys_SiteMsgDept { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs index f27de248..97ecaf33 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/QuerySiteMsgDeptRsp.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; /// public sealed record QuerySiteMsgDeptRsp : Sys_SiteMsgDept { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/UpdateSiteMsgDeptReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/UpdateSiteMsgDeptReq.cs deleted file mode 100644 index 0aae9dff..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgDept/UpdateSiteMsgDeptReq.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NetAdmin.Domain.Dto.Sys.SiteMsgDept; - -/// -/// 请求:更新站内信-部门映射 -/// -public sealed record UpdateSiteMsgDeptReq : CreateSiteMsgDeptReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/Job/UpdateJobReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs similarity index 57% rename from src/backend/NetAdmin.Domain/Dto/Sys/Job/UpdateJobReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs index e8b4b02f..63ce3bd9 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/Job/UpdateJobReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/EditSiteMsgReq.cs @@ -1,11 +1,12 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.Dto.Sys.SiteMsg; -namespace NetAdmin.Domain.Dto.Sys.Job; +namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; /// -/// 请求:更新计划作业 +/// 请求:编辑站内信 /// -public sealed record UpdateJobReq : CreateJobReq +public sealed record EditSiteMsgReq : CreateSiteMsgReq { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs index 2628ad43..de813a5e 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; /// public sealed record QuerySiteMsgFlagReq : Sys_SiteMsgFlag { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs index cd447e95..b2396079 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/QuerySiteMsgFlagRsp.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Enums.Sys; @@ -9,7 +9,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; /// public sealed record QuerySiteMsgFlagRsp : Sys_SiteMsgFlag { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/SetUserSiteMsgStatusReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/SetUserSiteMsgStatusReq.cs new file mode 100644 index 00000000..c5e8aab8 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/SetUserSiteMsgStatusReq.cs @@ -0,0 +1,6 @@ +namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; + +/// +/// 请求:设置用户站内信状态 +/// +public sealed record SetUserSiteMsgStatusReq : CreateSiteMsgFlagReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/UpdateSiteMsgFlagReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/UpdateSiteMsgFlagReq.cs deleted file mode 100644 index 40f320f0..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgFlag/UpdateSiteMsgFlagReq.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NetAdmin.Domain.Dto.Sys.SiteMsgFlag; - -/// -/// 请求:更新站内信标记 -/// -public sealed record UpdateSiteMsgFlagReq : CreateSiteMsgFlagReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs index cfcbedc9..0edc66ed 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; /// public sealed record QuerySiteMsgRoleReq : Sys_SiteMsgRole { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs index 4f718465..a9796d27 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/QuerySiteMsgRoleRsp.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; /// public sealed record QuerySiteMsgRoleRsp : Sys_SiteMsgRole { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/UpdateSiteMsgRoleReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/UpdateSiteMsgRoleReq.cs deleted file mode 100644 index 06ce55df..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgRole/UpdateSiteMsgRoleReq.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NetAdmin.Domain.Dto.Sys.SiteMsgRole; - -/// -/// 请求:更新站内信-角色映射 -/// -public sealed record UpdateSiteMsgRoleReq : CreateSiteMsgRoleReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs index a4fba7e0..e4af9779 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; /// public sealed record QuerySiteMsgUserReq : Sys_SiteMsgUser { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs index 262478cd..1f650c82 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/QuerySiteMsgUserRsp.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; /// public sealed record QuerySiteMsgUserRsp : Sys_SiteMsgUser { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/UpdateSiteMsgUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/UpdateSiteMsgUserReq.cs deleted file mode 100644 index 41101f5b..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Sys/SiteMsgUser/UpdateSiteMsgUserReq.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NetAdmin.Domain.Dto.Sys.SiteMsgUser; - -/// -/// 请求:更新站内信-用户映射 -/// -public sealed record UpdateSiteMsgUserReq : CreateSiteMsgUserReq; \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUpdateUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs similarity index 95% rename from src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUpdateUserReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs index f1ce026c..e665a481 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUpdateUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateEditUserReq.cs @@ -5,9 +5,9 @@ using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.User; /// -/// 请求:创建更新用户 +/// 请求:创建编辑用户 /// -public abstract record CreateUpdateUserReq : Sys_User +public abstract record CreateEditUserReq : Sys_User { /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs index a3fd26e5..08ba8852 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/CreateUserReq.cs @@ -6,9 +6,9 @@ namespace NetAdmin.Domain.Dto.Sys.User; /// /// 请求:创建用户 /// -public sealed record CreateUserReq : CreateUpdateUserReq, IRegister +public sealed record CreateUserReq : CreateEditUserReq, IRegister { - /// + /// [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.密码不能为空))] public override string PasswordText { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/EditSingleUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditSingleUserReq.cs new file mode 100644 index 00000000..5091b4f7 --- /dev/null +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditSingleUserReq.cs @@ -0,0 +1,23 @@ +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; + +/// +/// 请求:编辑用户单体 +/// +public sealed record EditSingleUserReq : CreateEditUserReq +{ + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Id { get; init; } + + /// + public new EditUserProfileReq Profile { get; init; } + + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Version { get; init; } +} \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/UpdateUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs similarity index 68% rename from src/backend/NetAdmin.Domain/Dto/Sys/User/UpdateUserReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs index 8bb806c8..c49d8a66 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/UpdateUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/EditUserReq.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.UserProfile; @@ -5,16 +6,16 @@ using NetAdmin.Domain.Dto.Sys.UserProfile; namespace NetAdmin.Domain.Dto.Sys.User; /// -/// 请求:更新用户 +/// 请求:编辑用户 /// -public sealed record UpdateUserReq : CreateUpdateUserReq +public sealed record EditUserReq : CreateEditUserReq { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } /// - public new UpdateUserProfileReq Profile { get; init; } + public new EditUserProfileReq Profile { get; init; } /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs index 4dda852f..a96748ba 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.User; @@ -12,7 +12,7 @@ public sealed record QueryUserReq : Sys_User [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long DeptId { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs index 08388ff4..7c15cc11 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/QueryUserRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dept; @@ -29,7 +30,7 @@ public record QueryUserRsp : Sys_User [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs index 758bf1f6..8b71e7be 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetAvatarReq.cs @@ -3,7 +3,7 @@ using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.User; /// -/// 请求:更新用户头像 +/// 请求:设置用户头像 /// public sealed record SetAvatarReq : Sys_User { @@ -12,4 +12,8 @@ public sealed record SetAvatarReq : Sys_User [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.用户头像不能为空))] [Url(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.网络地址不正确))] public override string Avatar { get; init; } + + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Version { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs index e3485a00..d562b0fc 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/User/SetUserEnabledReq.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -12,8 +13,12 @@ public sealed record SetUserEnabledReq : Sys_User [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override bool Enabled { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.用户编号不能为空))] public override long Id { get; init; } + + /// + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public override long Version { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/UpdateUserProfileReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs similarity index 73% rename from src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/UpdateUserProfileReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs index ee467ee9..ed16df09 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/UpdateUserProfileReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/EditUserProfileReq.cs @@ -3,9 +3,9 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// -/// 请求:更新用户档案 +/// 请求:编辑用户档案 /// -public sealed record UpdateUserProfileReq : CreateUserProfileReq +public sealed record EditUserProfileReq : CreateUserProfileReq { /// [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 38d2ac12..12a13c4a 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.UserProfile; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.UserProfile; /// public sealed record QueryUserProfileReq : Sys_UserProfile { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs index e10bfb1f..052fd915 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/UserProfile/QueryUserProfileRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Sys.Dic.Content; @@ -74,7 +75,7 @@ public sealed record QueryUserProfileRsp : Sys_UserProfile [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public override string HomeTelephone { get; init; } - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs index 502325c5..b8f83ffc 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Sys; namespace NetAdmin.Domain.Dto.Sys.VerifyCode; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// public sealed record QueryVerifyCodeReq : Sys_VerifyCode { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs index 82084c48..6a4bd20c 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/QueryVerifyCodeRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Sys; @@ -8,7 +9,7 @@ namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// public sealed record QueryVerifyCodeRsp : Sys_VerifyCode { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/UpdateVerifyCodeReq.cs b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs similarity index 73% rename from src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/UpdateVerifyCodeReq.cs rename to src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs index f6186caa..41dc43e7 100644 --- a/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/UpdateVerifyCodeReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Sys/VerifyCode/SetVerifyCodeStatusReq.cs @@ -3,9 +3,9 @@ using NetAdmin.Domain.DbMaps.Dependency.Fields; namespace NetAdmin.Domain.Dto.Sys.VerifyCode; /// -/// 请求:更新验证码 +/// 请求:设置验证码状态 /// -public sealed record UpdateVerifyCodeReq : CreateVerifyCodeReq +public sealed record SetVerifyCodeStatusReq : CreateVerifyCodeReq { /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] diff --git a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs index 2db659c8..67b2592d 100644 --- a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs +++ b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleReq.cs @@ -1,4 +1,4 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Tpl; namespace NetAdmin.Domain.Dto.Tpl.Example; @@ -8,7 +8,7 @@ namespace NetAdmin.Domain.Dto.Tpl.Example; /// public sealed record QueryExampleReq : Tpl_Example { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs index b07f12fa..46ce6cb8 100644 --- a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs +++ b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/QueryExampleRsp.cs @@ -1,3 +1,4 @@ +using NetAdmin.Domain.DbMaps.Dependency; using NetAdmin.Domain.DbMaps.Dependency.Fields; using NetAdmin.Domain.DbMaps.Tpl; @@ -8,7 +9,7 @@ namespace NetAdmin.Domain.Dto.Tpl.Example; /// public sealed record QueryExampleRsp : Tpl_Example { - /// + /// [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public override long Id { get; init; } diff --git a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/UpdateExampleReq.cs b/src/backend/NetAdmin.Domain/Dto/Tpl/Example/UpdateExampleReq.cs deleted file mode 100644 index a8ffd174..00000000 --- a/src/backend/NetAdmin.Domain/Dto/Tpl/Example/UpdateExampleReq.cs +++ /dev/null @@ -1,13 +0,0 @@ -using NetAdmin.Domain.DbMaps.Dependency.Fields; - -namespace NetAdmin.Domain.Dto.Tpl.Example; - -/// -/// 请求:更新示例 -/// -public sealed record UpdateExampleReq : CreateExampleReq -{ - /// - [JsonIgnore(Condition = JsonIgnoreCondition.Never)] - public override long Version { get; init; } -} \ 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 7af371e7..87477013 100644 --- a/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs +++ b/src/backend/NetAdmin.Host/Utils/SqlAuditor.cs @@ -47,7 +47,7 @@ public sealed class SqlAuditor : ISingleton SetOwner(e, user); break; case AuditValueType.Update: - SetUpdater(e, user); + SetModificator(e, user); break; case AuditValueType.InsertOrUpdate: break; @@ -127,6 +127,31 @@ public sealed class SqlAuditor : ISingleton } } + /// + /// 设置更新人 + /// + private static void SetModificator(AuditValueEventArgs e, ContextUserInfo userInfo) + { + switch (e.Property.Name) { + // case nameof(IFieldModifiedTime.ModifiedTime): + // e.Value = DateTime.Now; + // break; + case nameof(IFieldModifiedUser.ModifiedUserId): + if (userInfo != null && e.Value is null or (long and 0)) { + e.Value = userInfo.Id; + } + + break; + + case nameof(IFieldModifiedUser.ModifiedUserName): + if (userInfo != null && e.Value is null or "") { + e.Value = userInfo.UserName; + } + + break; + } + } + /// /// 设置拥有者 /// @@ -163,31 +188,6 @@ public sealed class SqlAuditor : ISingleton } } - /// - /// 设置更新人 - /// - private static void SetUpdater(AuditValueEventArgs e, ContextUserInfo userInfo) - { - switch (e.Property.Name) { - // case nameof(IFieldModifiedTime.ModifiedTime): - // e.Value = DateTime.Now; - // break; - case nameof(IFieldModifiedUser.ModifiedUserId): - if (userInfo != null && e.Value is null or (long and 0)) { - e.Value = userInfo.Id; - } - - break; - - case nameof(IFieldModifiedUser.ModifiedUserName): - if (userInfo != null && e.Value is null or "") { - e.Value = userInfo.UserName; - } - - break; - } - } - // /// // /// 设置服务器时间字段 // /// diff --git a/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs b/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs index 395cdb9b..6de67565 100644 --- a/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs +++ b/src/backend/NetAdmin.Infrastructure/Constant/Numbers.cs @@ -25,7 +25,7 @@ public static class Numbers public const int SECS_CACHE_CHART = 300; // 秒:缓存时间-仪表 public const int SECS_CACHE_DEFAULT = 60; // 秒:缓存时间-默认 - public const int SECS_RED_LOCK_EXPIRY = 30; // 秒:RedLock-锁过期时间,锁区域内的逻辑执行如果超过过期时间,锁将被释放 + public const int SECS_RED_LOCK_EXPIRY = 30; // 秒:RedLock-锁过期时间,假如持有锁的进程挂掉,最多在此时间内锁将被释放(如持有锁的进程正常,此值不会生效) public const int SECS_RED_LOCK_RETRY = 1; // 秒:RedLock-锁等待时间内,多久尝试获取一次 public const int SECS_RED_LOCK_WAIT = 10; // 秒:RedLock-锁等待时间,相同的 resource 如果当前的锁被其他线程占用,最多等待时间 public const int SECS_TIMEOUT_JOB = 600; // 秒:超时时间-作业 diff --git a/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs b/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs index 408052a3..ba6e4f14 100644 --- a/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs +++ b/src/backend/NetAdmin.Infrastructure/Extensions/HttpResponseMessageExtensions.cs @@ -33,6 +33,10 @@ public static class HttpResponseMessageExtensions this HttpResponseMessage me, Func bodyHandle = null) { var body = me?.Content is null ? null : await me.Content!.ReadAsStringAsync().ConfigureAwait(false); - return new { Header = me?.ToString(), Body = bodyHandle is null ? body : bodyHandle(body) }.ToJson(); + return new { + Header = me?.ToString() + , RequestHeader = me?.RequestMessage?.Headers + , Body = bodyHandle is null ? body : bodyHandle(body) + }.ToJson(); } } \ No newline at end of file diff --git a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj index 065173c0..4fdb361d 100644 --- a/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj +++ b/src/backend/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj @@ -8,7 +8,6 @@ - diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs index d31a9946..b7d5a6ec 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs @@ -9,7 +9,6 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IApiModule : ICrudModule { diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IConfigModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IConfigModule.cs index 37871bcd..d7d74c42 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IConfigModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IConfigModule.cs @@ -9,10 +9,14 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IConfigModule : ICrudModule { + /// + /// 编辑配置 + /// + Task EditAsync(EditConfigReq req); + /// /// 获取最新有效配置 /// diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDeptModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDeptModule.cs index d59b4489..54a3e87e 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDeptModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDeptModule.cs @@ -9,6 +9,11 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IDeptModule : ICrudModule; \ No newline at end of file +> +{ + /// + /// 编辑部门 + /// + Task EditAsync(EditDeptReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicCatalogModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicCatalogModule.cs index 53a16029..42c8a544 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicCatalogModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicCatalogModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IDicCatalogModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicContentModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicContentModule.cs index a4f89bdc..13e6fc91 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicContentModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicContentModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IDicContentModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs index 4cf68a23..6b04d5f0 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IDicModule.cs @@ -39,6 +39,16 @@ public interface IDicModule /// Task DeleteContentAsync(DelReq req); + /// + /// 编辑字典目录 + /// + Task EditCatalogAsync(EditDicCatalogReq req); + + /// + /// 编辑字典内容 + /// + Task EditContentAsync(EditDicContentReq req); + /// /// 获取单个字典目录 /// @@ -73,14 +83,4 @@ public interface IDicModule /// 查询字典内容 /// Task> QueryContentAsync(QueryReq req); - - /// - /// 更新字典目录 - /// - Task UpdateCatalogAsync(UpdateDicCatalogReq req); - - /// - /// 更新字典内容 - /// - Task UpdateContentAsync(UpdateDicContentReq req); } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs index dfddacbd..da1e070b 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobModule.cs @@ -11,14 +11,13 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IJobModule : ICrudModule { /// /// 编辑作业 /// - Task EditAsync(UpdateJobReq req); + Task EditAsync(EditJobReq req); /// /// 执行作业 @@ -51,7 +50,7 @@ public interface IJobModule : ICrudModule> RecordPagedQueryAsync(PagedQueryReq req); /// - /// 启用/禁用作业 + /// 设置计划作业启用状态 /// - Task SetEnabledAsync(UpdateJobReq req); + Task SetEnabledAsync(SetJobEnabledReq req); } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobRecordModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobRecordModule.cs index 0b001721..dc7a8b95 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobRecordModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IJobRecordModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IJobRecordModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IMenuModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IMenuModule.cs index a48668da..b03ccf7d 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IMenuModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IMenuModule.cs @@ -9,10 +9,14 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IMenuModule : ICrudModule { + /// + /// 编辑菜单 + /// + Task EditAsync(EditMenuReq req); + /// /// 当前用户菜单 /// diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRequestLogModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRequestLogModule.cs index 741f268e..392c8357 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRequestLogModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRequestLogModule.cs @@ -10,7 +10,6 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IRequestLogModule : ICrudModule { diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRoleModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRoleModule.cs index 3069070b..36a46256 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRoleModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IRoleModule.cs @@ -9,6 +9,11 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IRoleModule : ICrudModule; \ No newline at end of file +> +{ + /// + /// 编辑角色 + /// + Task EditAsync(EditRoleReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgDeptModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgDeptModule.cs index 9d3f10ae..22fdf914 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgDeptModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgDeptModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface ISiteMsgDeptModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgFlagModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgFlagModule.cs index c1b7be76..4b6647f4 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgFlagModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgFlagModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface ISiteMsgFlagModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgModule.cs index c05f267e..c05e0078 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgModule.cs @@ -10,10 +10,14 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface ISiteMsgModule : ICrudModule { + /// + /// 编辑站内信 + /// + Task EditAsync(EditSiteMsgReq req); + /// /// 获取单个我的站内信 /// @@ -27,7 +31,7 @@ public interface ISiteMsgModule : ICrudModule /// 设置站内信状态 /// - Task SetSiteMsgStatusAsync(UpdateSiteMsgFlagReq req); + Task SetSiteMsgStatusAsync(SetUserSiteMsgStatusReq req); /// /// 未读数量 diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgRoleModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgRoleModule.cs index 8233b54b..50a71524 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgRoleModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgRoleModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface ISiteMsgRoleModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgUserModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgUserModule.cs index cccba399..18fbef06 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgUserModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/ISiteMsgUserModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface ISiteMsgUserModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserModule.cs index 309ee209..c87e7f0a 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserModule.cs @@ -10,7 +10,6 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IUserModule : ICrudModule { @@ -24,6 +23,11 @@ public interface IUserModule : ICrudModule Task CheckUserNameAvailableAsync(CheckUserNameAvailableReq req); + /// + /// 编辑用户 + /// + Task EditAsync(EditUserReq req); + /// /// 密码登录 /// diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserProfileModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserProfileModule.cs index fb916566..cafc9981 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserProfileModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IUserProfileModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IUserProfileModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IVerifyCodeModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IVerifyCodeModule.cs index aa6bf83a..b15b70c6 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IVerifyCodeModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Sys/IVerifyCodeModule.cs @@ -9,7 +9,6 @@ namespace NetAdmin.SysComponent.Application.Modules.Sys; /// public interface IVerifyCodeModule : ICrudModule { diff --git a/src/backend/NetAdmin.SysComponent.Application/Modules/Tpl/IExampleModule.cs b/src/backend/NetAdmin.SysComponent.Application/Modules/Tpl/IExampleModule.cs index c7b4a228..1fc57e1b 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Modules/Tpl/IExampleModule.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Modules/Tpl/IExampleModule.cs @@ -9,6 +9,5 @@ namespace NetAdmin.SysComponent.Application.Modules.Tpl; /// public interface IExampleModule : ICrudModule; \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs index 63b53c14..9ca28fea 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ApiService.cs @@ -9,10 +9,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys; /// public sealed class ApiService( - DefaultRepository rpo // + BasicRepository rpo // , XmlCommentReader xmlCommentReader // , IActionDescriptorCollectionProvider actionDescriptorCollectionProvider) // - : RepositoryService(rpo), IApiService + : RepositoryService(rpo), IApiService { /// public Task BulkDeleteAsync(BulkReq req) @@ -25,7 +25,11 @@ public sealed class ApiService( public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -46,7 +50,11 @@ public sealed class ApiService( public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -119,19 +127,6 @@ public sealed class ApiService( } } - /// - public Task UpdateAsync(NopReq req) - { - req.ThrowIfInvalid(); - throw new NotImplementedException(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_Api req) - { - throw new NotImplementedException(); - } - private IEnumerable GetChildren(IEnumerable actionDescriptors) { return actionDescriptors // diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs index 677d4329..6eb590ba 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/ConfigService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Config; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class ConfigService(DefaultRepository rpo) // - : RepositoryService(rpo), IConfigService +public sealed class ConfigService(BasicRepository rpo) // + : RepositoryService(rpo), IConfigService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class ConfigService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -48,11 +51,27 @@ public sealed class ConfigService(DefaultRepository rpo) // return Rpo.DeleteAsync(a => a.Id == req.Id); } + /// + public async Task EditAsync(EditConfigReq req) + { + #if DBTYPE_SQLSERVER + return (await UpdateEntityAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); + #else + return await UpdateAsync(req, null).ConfigureAwait(false) > 0 + ? await GetAsync(new QueryConfigReq { Id = req.Id }).ConfigureAwait(false) + : null; + #endif + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -78,6 +97,9 @@ public sealed class ConfigService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -90,30 +112,16 @@ public sealed class ConfigService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateConfigReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QueryConfigRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_Config req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryConfigReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.Include(a => a.UserRegisterDept) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicCatalogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicCatalogService.cs index 5efdf6cf..b58c84f7 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicCatalogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicCatalogService.cs @@ -1,4 +1,5 @@ using NetAdmin.Application.Services; +using NetAdmin.Domain.Dto.Sys.Dic.Catalog; using NetAdmin.SysComponent.Application.Modules.Sys; namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -6,4 +7,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// /// 字典目录服务 /// -public interface IDicCatalogService : IService, IDicCatalogModule; \ No newline at end of file +public interface IDicCatalogService : IService, IDicCatalogModule +{ + /// + /// 编辑字典目录 + /// + Task EditAsync(EditDicCatalogReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicContentService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicContentService.cs index f52b21ad..a4e9a902 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicContentService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IDicContentService.cs @@ -1,4 +1,5 @@ using NetAdmin.Application.Services; +using NetAdmin.Domain.Dto.Sys.Dic.Content; using NetAdmin.SysComponent.Application.Modules.Sys; namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -6,4 +7,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// /// 字典内容服务 /// -public interface IDicContentService : IService, IDicContentModule; \ No newline at end of file +public interface IDicContentService : IService, IDicContentModule +{ + /// + /// 编辑字典内容 + /// + Task EditAsync(EditDicContentReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IJobService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IJobService.cs index d6b877c5..7a22ea63 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IJobService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IJobService.cs @@ -12,7 +12,7 @@ public interface IJobService : IService, IJobModule /// /// 完成计划作业 /// - Task FinishJobAsync(UpdateJobReq req); + Task FinishJobAsync(FinishJobReq req); /// /// 获取下一个要执行的计划作业 diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/ISiteMsgFlagService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/ISiteMsgFlagService.cs index 332877d7..cb2401e6 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/ISiteMsgFlagService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/ISiteMsgFlagService.cs @@ -1,4 +1,5 @@ using NetAdmin.Application.Services; +using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; using NetAdmin.SysComponent.Application.Modules.Sys; namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -6,4 +7,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// /// 站内信标记服务 /// -public interface ISiteMsgFlagService : IService, ISiteMsgFlagModule; \ No newline at end of file +public interface ISiteMsgFlagService : IService, ISiteMsgFlagModule +{ + /// + /// 设置用户站内信状态 + /// + Task SetUserSiteMsgStatusAsync(SetUserSiteMsgStatusReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserProfileService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserProfileService.cs index e758a14c..1132d128 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserProfileService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserProfileService.cs @@ -1,4 +1,5 @@ using NetAdmin.Application.Services; +using NetAdmin.Domain.Dto.Sys.UserProfile; using NetAdmin.SysComponent.Application.Modules.Sys; namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -6,4 +7,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// /// 用户档案服务 /// -public interface IUserProfileService : IService, IUserProfileModule; \ No newline at end of file +public interface IUserProfileService : IService, IUserProfileModule +{ + /// + /// 编辑用户档案 + /// + Task EditAsync(EditUserProfileReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs index 4cdd6129..8b60086c 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs @@ -9,18 +9,8 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// public interface IUserService : IService, IUserModule { - /// - /// 获取单个用户(带更新锁) - /// - Task GetForUpdateAsync(QueryUserReq req); - /// /// 用户编号登录 /// Task LoginByUserIdAsync(long userId); - - /// - /// 单体更新 - /// - Task UpdateSingleAsync(UpdateUserReq req); } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IVerifyCodeService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IVerifyCodeService.cs index 3549bc0b..0674ae89 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IVerifyCodeService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IVerifyCodeService.cs @@ -1,4 +1,5 @@ using NetAdmin.Application.Services; +using NetAdmin.Domain.Dto.Sys.VerifyCode; using NetAdmin.SysComponent.Application.Modules.Sys; namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; @@ -6,4 +7,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys.Dependency; /// /// 验证码服务 /// -public interface IVerifyCodeService : IService, IVerifyCodeModule; \ No newline at end of file +public interface IVerifyCodeService : IService, IVerifyCodeModule +{ + /// + /// 设置验证码状态 + /// + Task SetVerifyCodeStatusAsync(SetVerifyCodeStatusReq req); +} \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs index 00adbd0c..ef91e015 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DeptService.cs @@ -8,8 +8,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class DeptService(DefaultRepository rpo) // - : RepositoryService(rpo), IDeptService +public sealed class DeptService(BasicRepository rpo) // + : RepositoryService(rpo), IDeptService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -29,7 +29,11 @@ public sealed class DeptService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -65,11 +69,27 @@ public sealed class DeptService(DefaultRepository rpo) // return await Rpo.DeleteAsync(x => x.Id == req.Id).ConfigureAwait(false); } + /// + public async Task EditAsync(EditDeptReq req) + { + #if DBTYPE_SQLSERVER + return (await UpdateEntityAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); + #else + return await UpdateAsync(req, null).ConfigureAwait(false) > 0 + ? await GetAsync(new QueryDeptReq { Id = req.Id }).ConfigureAwait(false) + : null; + #endif + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -91,25 +111,12 @@ public sealed class DeptService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - return (await QueryInternal(req).ToTreeListAsync().ConfigureAwait(false)).Adapt>(); - } - - /// - public async Task UpdateAsync(UpdateDeptReq req) - { - req.ThrowIfInvalid(); - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : (await QueryInternal(new QueryReq { Filter = new QueryDeptReq { Id = req.Id } }, true) - .ToTreeListAsync() - .ConfigureAwait(false))[0] - .Adapt(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_Dept req) - { - throw new NotImplementedException(); + return (await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .ToTreeListAsync() + .ConfigureAwait(false)).Adapt>(); } private ISelect QueryInternal(QueryReq req, bool asTreeCte = false) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DevService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DevService.cs index b755159e..603e05b0 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DevService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DevService.cs @@ -64,11 +64,6 @@ public sealed class DevService(IApiService apiService) : ServiceBase , Path.Combine(dtoDir, $"Create{req.ModuleName}Req.cs")) .ConfigureAwait(false); - // UpdateReq - await WriteCodeFileAsync(req, Path.Combine(dataDir, "Dto", "Tpl", "Example", "UpdateExampleReq.cs") - , Path.Combine(dtoDir, $"Update{req.ModuleName}Req.cs")) - .ConfigureAwait(false); - // QueryReq await WriteCodeFileAsync(req, Path.Combine(dataDir, "Dto", "Tpl", "Example", "QueryExampleReq.cs") , Path.Combine(dtoDir, $"Query{req.ModuleName}Req.cs")) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs index 67b61a9b..e02a1851 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicCatalogService.cs @@ -8,8 +8,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class DicCatalogService(DefaultRepository rpo) // - : RepositoryService(rpo), IDicCatalogService +public sealed class DicCatalogService(BasicRepository rpo) // + : RepositoryService(rpo), IDicCatalogService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -29,7 +29,11 @@ public sealed class DicCatalogService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -54,11 +58,26 @@ public sealed class DicCatalogService(DefaultRepository rpo) // return ret.Count; } + /// + /// The_parent_node_does_not_exist + public async Task EditAsync(EditDicCatalogReq req) + { + req.ThrowIfInvalid(); + return req.ParentId == 0 || + await Rpo.Where(a => a.Id == req.ParentId).ForUpdate().AnyAsync().ConfigureAwait(false) + ? await UpdateAsync(req, null).ConfigureAwait(false) + : throw new NetAdminInvalidOperationException(Ln.父节点不存在); + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -77,6 +96,9 @@ public sealed class DicCatalogService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -89,34 +111,15 @@ public sealed class DicCatalogService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).ToTreeListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .ToTreeListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - /// The_parent_node_does_not_exist - public async Task UpdateAsync(UpdateDicCatalogReq req) - { - req.ThrowIfInvalid(); - if (req.ParentId != 0 && - !await Rpo.Where(a => a.Id == req.ParentId).ForUpdate().AnyAsync().ConfigureAwait(false)) { - throw new NetAdminInvalidOperationException(Ln.父节点不存在); - } - - if (await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0) { - return null; - } - - var ret = await Rpo.Where(a => a.Id == req.Id).ToOneAsync().ConfigureAwait(false); - return ret.Adapt(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_DicCatalog req) - { - throw new NotImplementedException(); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs index 9599c90e..bcd2b6d3 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicContentService.cs @@ -8,8 +8,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class DicContentService(DefaultRepository rpo) // - : RepositoryService(rpo), IDicContentService +public sealed class DicContentService(BasicRepository rpo) // + : RepositoryService(rpo), IDicContentService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -29,7 +29,11 @@ public sealed class DicContentService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -56,11 +60,37 @@ public sealed class DicContentService(DefaultRepository rpo) // return Rpo.DeleteAsync(a => a.Id == req.Id); } + /// + /// Dictionary_directory_does_not_exist + public async Task EditAsync(EditDicContentReq req) + { + req.ThrowIfInvalid(); + if (!await Rpo.Orm.Select() + .Where(a => a.Id == req.CatalogId) + .ForUpdate() + .AnyAsync() + .ConfigureAwait(false)) { + throw new NetAdminInvalidOperationException(Ln.字典目录不存在); + } + + #if DBTYPE_SQLSERVER + return (await UpdateEntityAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); + #else + return await UpdateAsync(req, null).ConfigureAwait(false) > 0 + ? await GetAsync(new QueryDicContentReq { Id = req.Id }).ConfigureAwait(false) + : null; + #endif + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -79,6 +109,9 @@ public sealed class DicContentService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -91,37 +124,16 @@ public sealed class DicContentService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - /// Dictionary_directory_does_not_exist - public async Task UpdateAsync(UpdateDicContentReq req) - { - req.ThrowIfInvalid(); - if (!await Rpo.Orm.Select() - .Where(a => a.Id == req.CatalogId) - .ForUpdate() - .AnyAsync() - .ConfigureAwait(false)) { - throw new NetAdminInvalidOperationException(Ln.字典目录不存在); - } - - if (await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0) { - return null; - } - - var ret = await Rpo.Where(a => a.Id == req.Id).ToOneAsync().ConfigureAwait(false); - return ret.Adapt(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_DicContent req) - { - throw new NotImplementedException(); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs index a04989cc..723777a5 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/DicService.cs @@ -52,6 +52,20 @@ public sealed class DicService(IDicCatalogService catalogService, IDicContentSer return contentService.DeleteAsync(req); } + /// + public Task EditCatalogAsync(EditDicCatalogReq req) + { + req.ThrowIfInvalid(); + return catalogService.EditAsync(req); + } + + /// + public Task EditContentAsync(EditDicContentReq req) + { + req.ThrowIfInvalid(); + return contentService.EditAsync(req); + } + /// public Task GetCatalogAsync(QueryDicCatalogReq req) { @@ -115,18 +129,4 @@ public sealed class DicService(IDicCatalogService catalogService, IDicContentSer req.ThrowIfInvalid(); return contentService.QueryAsync(req); } - - /// - public Task UpdateCatalogAsync(UpdateDicCatalogReq req) - { - req.ThrowIfInvalid(); - return catalogService.UpdateAsync(req); - } - - /// - public Task UpdateContentAsync(UpdateDicContentReq req) - { - req.ThrowIfInvalid(); - return contentService.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs index dc5d70cc..0ed155c3 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobRecordService.cs @@ -5,13 +5,12 @@ using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys; using NetAdmin.Domain.Dto.Sys.JobRecord; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class JobRecordService(DefaultRepository rpo) // - : RepositoryService(rpo), IJobRecordService +public sealed class JobRecordService(BasicRepository rpo) // + : RepositoryService(rpo), IJobRecordService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -31,7 +30,11 @@ public sealed class JobRecordService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -53,7 +56,11 @@ public sealed class JobRecordService(DefaultRepository rpo) // public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -72,6 +79,9 @@ public sealed class JobRecordService(DefaultRepository rpo) // req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .GroupBy(a => new { a.CreatedTime.Year , a.CreatedTime.Month @@ -94,6 +104,9 @@ public sealed class JobRecordService(DefaultRepository rpo) // { req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Include(a => a.Job) .GroupBy(a => a.HttpStatusCode) #pragma warning disable CA1305 @@ -109,6 +122,9 @@ public sealed class JobRecordService(DefaultRepository rpo) // { req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Include(a => a.Job) .GroupBy(a => a.Job.JobName) .ToListAsync(a => new GetPieChartRsp { Value = a.Count(), Key = a.Key }) @@ -122,6 +138,9 @@ public sealed class JobRecordService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -134,30 +153,16 @@ public sealed class JobRecordService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateJobRecordReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QueryJobRecordRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_JobRecord req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryJobRecordReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs index 2855ed23..59421c01 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/JobService.cs @@ -9,13 +9,12 @@ using NetAdmin.Domain.Dto.Sys.Job; using NetAdmin.Domain.Dto.Sys.JobRecord; using NetAdmin.Domain.Enums.Sys; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class JobService(DefaultRepository rpo, IJobRecordService jobRecordService) // - : RepositoryService(rpo), IJobService +public sealed class JobService(BasicRepository rpo, IJobRecordService jobRecordService) // + : RepositoryService(rpo), IJobService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -35,7 +34,11 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -61,7 +64,7 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService } /// - public async Task EditAsync(UpdateJobReq req) + public async Task EditAsync(EditJobReq req) { req.ThrowIfInvalid(); var update = Rpo.UpdateDiy.Set(a => a.ExecutionCron == req.ExecutionCron) @@ -72,17 +75,16 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService .Set(a => a.RequestBody == req.RequestBody) .Set(a => a.RequestUrl == req.RequestUrl) .Set(a => a.UserId == req.UserId) - .Where(a => a.Id == req.Id); + .Where(a => a.Id == req.Id) + .Where(a => a.Version == req.Version); - #pragma warning disable IDE0046 - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - #pragma warning restore IDE0046 - return await update.ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryJobReq { Id = req.Id }).ConfigureAwait(false); - } - - return (await update.ExecuteUpdatedAsync().ConfigureAwait(false))[0].Adapt(); + #if DBTYPE_SQLSERVER + return (await update.ExecuteUpdatedAsync().ConfigureAwait(false)).FirstOrDefault()?.Adapt(); + #else + return await update.ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 + ? null + : await GetAsync(new QueryJobReq { Id = req.Id }).ConfigureAwait(false); + #endif } /// @@ -109,14 +111,13 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService var nextExecTime = GetNextExecTime(Chars.FLG_CRON_PER_SECS); try { - _ = await UpdateAsync(job.Adapt() with { - NextExecTime = nextExecTime - , NextTimeId = nextExecTime?.TimeUnixUtc() - }) + _ = await UpdateAsync( // + job with { NextExecTime = nextExecTime, NextTimeId = nextExecTime?.TimeUnixUtc() } + , [nameof(job.NextExecTime), nameof(job.NextTimeId)]) .ConfigureAwait(false); } catch (DbUpdateVersionException) { - throw new NetAdminInvalidOperationException(Ln.并发冲突请稍后重试); + throw new NetAdminInvalidOperationException(Ln.并发冲突_请稍后重试); } } @@ -124,19 +125,28 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// - public async Task FinishJobAsync(UpdateJobReq req) + public async Task FinishJobAsync(FinishJobReq req) { req.ThrowIfInvalid(); var nextExecTime = GetNextExecTime(req.ExecutionCron); - _ = await UpdateAsync(req with { - Status = JobStatues.Idle - , NextExecTime = nextExecTime - , NextTimeId = nextExecTime?.TimeUnixUtc() - }) + _ = await UpdateAsync( + req with { + Status = JobStatues.Idle + , NextExecTime = nextExecTime + , NextTimeId = nextExecTime?.TimeUnixUtc() + } + , [ + nameof(req.Status), nameof(req.NextExecTime), nameof(req.NextTimeId), nameof(req.LastDuration) + , nameof(req.LastStatusCode) + ]) .ConfigureAwait(false); } @@ -178,13 +188,25 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService .Any()) .ToOneAsync() .ConfigureAwait(false); - return job == null - ? null - : await UpdateAsync(job.Adapt() with { - Status = JobStatues.Running - , LastExecTime = DateTime.Now - }) - .ConfigureAwait(false); + if (job == null) { + return null; + } + + #if DBTYPE_SQLSERVER + var ret = await UpdateEntityAsync( // + job with { Status = JobStatues.Running, LastExecTime = DateTime.Now } + , [nameof(job.Status), nameof(job.LastExecTime)]) + .ConfigureAwait(false); + + return ret.FirstOrDefault()?.Adapt(); + #else + return await UpdateAsync( // + job with { Status = JobStatues.Running, LastExecTime = DateTime.Now } + , [nameof(job.Status), nameof(job.LastExecTime)]) + .ConfigureAwait(false) > 0 + ? await GetAsync(new QueryJobReq { Id = job.Id }).ConfigureAwait(false) + : null; + #endif } /// @@ -215,6 +237,9 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -226,7 +251,13 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } @@ -247,36 +278,16 @@ public sealed class JobService(DefaultRepository rpo, IJobRecordService /// public Task ReleaseStuckTaskAsync() { - return Rpo.UpdateDiy.Set(a => a.Status == JobStatues.Idle) - .Where(a => a.Status == JobStatues.Running && - a.LastExecTime < DateTime.Now.AddSeconds(-Numbers.SECS_TIMEOUT_JOB)) - .ExecuteAffrowsAsync(); + return UpdateAsync( // + new Sys_Job { Status = JobStatues.Idle }, [nameof(Sys_Job.Status)], null + , a => a.Status == JobStatues.Running && a.LastExecTime < DateTime.Now.AddSeconds(-Numbers.SECS_TIMEOUT_JOB)); } /// - public Task SetEnabledAsync(UpdateJobReq req) + public Task SetEnabledAsync(SetJobEnabledReq req) { req.ThrowIfInvalid(); - return Rpo.UpdateDiy.Set(a => a.Enabled == req.Enabled).Where(a => a.Id == req.Id).ExecuteAffrowsAsync(); - } - - /// - public async Task UpdateAsync(UpdateJobReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return (await UpdateForSqliteAsync(req).ConfigureAwait(false)).Adapt(); - } - - _ = await Rpo.UpdateAsync(req).ConfigureAwait(false); - return req.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_Job req) - { - _ = await Rpo.UpdateAsync(req).ConfigureAwait(false); - return req; + return UpdateAsync(req, [nameof(Sys_Job.Enabled)]); } private static DateTime? GetNextExecTime(string cron) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs index 75d7a289..665ce3ed 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/MenuService.cs @@ -8,8 +8,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class MenuService(DefaultRepository rpo, IUserService userService) // - : RepositoryService(rpo), IMenuService +public sealed class MenuService(BasicRepository rpo, IUserService userService) // + : RepositoryService(rpo), IMenuService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -29,7 +29,11 @@ public sealed class MenuService(DefaultRepository rpo, IUserService us public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,11 +56,27 @@ public sealed class MenuService(DefaultRepository rpo, IUserService us return ret; } + /// + public async Task EditAsync(EditMenuReq req) + { + #if DBTYPE_SQLSERVER + return (await UpdateEntityAsync(req, null).ConfigureAwait(false)).FirstOrDefault()?.Adapt(); + #else + return await UpdateAsync(req, null).ConfigureAwait(false) > 0 + ? await GetAsync(new QueryMenuReq { Id = req.Id }).ConfigureAwait(false) + : null; + #endif + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -78,22 +98,15 @@ public sealed class MenuService(DefaultRepository rpo, IUserService us public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).ToTreeListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .ToTreeListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateMenuReq req) - { - req.ThrowIfInvalid(); - if (await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0) { - return null; - } - - var ret = await Rpo.Where(a => a.Id == req.Id).ToOneAsync().ConfigureAwait(false); - return ret.Adapt(); - } - /// public async Task> UserMenusAsync() { @@ -122,12 +135,6 @@ public sealed class MenuService(DefaultRepository rpo, IUserService us return await ret.ConfigureAwait(false); } - /// - protected override Task UpdateForSqliteAsync(Sys_Menu req) - { - throw new NotImplementedException(); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs index 08e09bd8..65875f52 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RequestLogService.cs @@ -9,8 +9,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class RequestLogService(DefaultRepository rpo) // - : RepositoryService(rpo), IRequestLogService +public sealed class RequestLogService(BasicRepository rpo) // + : RepositoryService(rpo), IRequestLogService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +30,11 @@ public sealed class RequestLogService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +56,11 @@ public sealed class RequestLogService(DefaultRepository rpo) // public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +79,9 @@ public sealed class RequestLogService(DefaultRepository rpo) // req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .GroupBy(a => new { a.CreatedTime.Year , a.CreatedTime.Month @@ -92,6 +103,9 @@ public sealed class RequestLogService(DefaultRepository rpo) // { req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .GroupBy(a => a.Api.Summary) .ToListAsync(a => new GetPieChartRsp { Value = a.Count(), Key = a.Key }) .ConfigureAwait(false); @@ -104,6 +118,9 @@ public sealed class RequestLogService(DefaultRepository rpo) // { req.ThrowIfInvalid(); var ret = await QueryInternal(req with { Order = Orders.None }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .GroupBy(a => a.HttpStatusCode) #pragma warning disable CA1305 .ToListAsync(a => new GetPieChartRsp { Value = a.Count(), Key = a.Key.ToString() }) @@ -119,6 +136,9 @@ public sealed class RequestLogService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync(a => new { a.ApiId @@ -143,23 +163,16 @@ public sealed class RequestLogService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public Task UpdateAsync(NopReq req) - { - req.ThrowIfInvalid(); - throw new NotImplementedException(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_RequestLog req) - { - throw new NotImplementedException(); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.Include(a => a.Api).WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs index 289270f1..6734745d 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/RoleService.cs @@ -8,8 +8,8 @@ using NetAdmin.SysComponent.Application.Services.Sys.Dependency; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class RoleService(DefaultRepository rpo) // - : RepositoryService(rpo), IRoleService +public sealed class RoleService(BasicRepository rpo) // + : RepositoryService(rpo), IRoleService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -29,7 +29,11 @@ public sealed class RoleService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -57,11 +61,29 @@ public sealed class RoleService(DefaultRepository rpo) // : await Rpo.DeleteAsync(a => a.Id == req.Id).ConfigureAwait(false); } + /// + public async Task EditAsync(EditRoleReq req) + { + req.ThrowIfInvalid(); + var entity = req.Adapt(); + _ = await Rpo.UpdateAsync(entity).ConfigureAwait(false); + await Rpo.SaveManyAsync(entity, nameof(entity.Depts)).ConfigureAwait(false); + await Rpo.SaveManyAsync(entity, nameof(entity.Menus)).ConfigureAwait(false); + await Rpo.SaveManyAsync(entity, nameof(entity.Apis)).ConfigureAwait(false); + + return (await QueryAsync(new QueryReq { Filter = new QueryRoleReq { Id = req.Id } }) + .ConfigureAwait(false)).First(); + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -78,6 +100,9 @@ public sealed class RoleService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -89,30 +114,15 @@ public sealed class RoleService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateRoleReq req) - { - req.ThrowIfInvalid(); - var entity = req.Adapt(); - _ = await Rpo.UpdateAsync(entity).ConfigureAwait(false); - await Rpo.SaveManyAsync(entity, nameof(entity.Depts)).ConfigureAwait(false); - await Rpo.SaveManyAsync(entity, nameof(entity.Menus)).ConfigureAwait(false); - await Rpo.SaveManyAsync(entity, nameof(entity.Apis)).ConfigureAwait(false); - - return (await QueryAsync(new QueryReq { Filter = new QueryRoleReq { Id = req.Id } }) - .ConfigureAwait(false)).First(); - } - - /// - protected override Task UpdateForSqliteAsync(Sys_Role req) - { - throw new NotImplementedException(); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.IncludeMany(a => a.Depts.Select(b => new Sys_Dept { Id = b.Id })) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs index 34212dd6..f392fa6d 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgDeptService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgDept; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class SiteMsgDeptService(DefaultRepository rpo) // - : RepositoryService(rpo), ISiteMsgDeptService +public sealed class SiteMsgDeptService(BasicRepository rpo) // + : RepositoryService(rpo), ISiteMsgDeptService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class SiteMsgDeptService(DefaultRepository rpo) / public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +55,11 @@ public sealed class SiteMsgDeptService(DefaultRepository rpo) / public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +78,9 @@ public sealed class SiteMsgDeptService(DefaultRepository rpo) / req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -83,30 +93,16 @@ public sealed class SiteMsgDeptService(DefaultRepository rpo) / public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateSiteMsgDeptReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QuerySiteMsgDeptRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_SiteMsgDept req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QuerySiteMsgDeptReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs index eed2e43e..650de106 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgFlagService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgFlag; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class SiteMsgFlagService(DefaultRepository rpo) // - : RepositoryService(rpo), ISiteMsgFlagService +public sealed class SiteMsgFlagService(BasicRepository rpo) // + : RepositoryService(rpo), ISiteMsgFlagService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class SiteMsgFlagService(DefaultRepository rpo) / public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +55,11 @@ public sealed class SiteMsgFlagService(DefaultRepository rpo) / public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +78,9 @@ public sealed class SiteMsgFlagService(DefaultRepository rpo) / req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -83,34 +93,22 @@ public sealed class SiteMsgFlagService(DefaultRepository rpo) / public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } /// - public async Task UpdateAsync(UpdateSiteMsgFlagReq req) + public Task SetUserSiteMsgStatusAsync(SetUserSiteMsgStatusReq req) { req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QuerySiteMsgFlagRsp; - } - - var ret = await Rpo.UpdateDiy.Set(a => a.UserSiteMsgStatus == req.UserSiteMsgStatus) - .Where(a => a.UserId == req.UserId && a.SiteMsgId == req.SiteMsgId) - .ExecuteUpdatedAsync() - .ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_SiteMsgFlag req) - { - return await Rpo.UpdateDiy.Set(a => a.UserSiteMsgStatus == req.UserSiteMsgStatus) - .Where(a => a.UserId == req.UserId && a.SiteMsgId == req.SiteMsgId) - .ExecuteAffrowsAsync() - .ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QuerySiteMsgFlagReq { Id = req.Id }).ConfigureAwait(false); + return UpdateAsync(req, [nameof(req.UserSiteMsgStatus)], null + , a => a.UserId == req.UserId && a.SiteMsgId == req.SiteMsgId); } private ISelect QueryInternal(QueryReq req) diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs index 14974036..8e734eea 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgRoleService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgRole; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class SiteMsgRoleService(DefaultRepository rpo) // - : RepositoryService(rpo), ISiteMsgRoleService +public sealed class SiteMsgRoleService(BasicRepository rpo) // + : RepositoryService(rpo), ISiteMsgRoleService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class SiteMsgRoleService(DefaultRepository rpo) / public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +55,11 @@ public sealed class SiteMsgRoleService(DefaultRepository rpo) / public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +78,9 @@ public sealed class SiteMsgRoleService(DefaultRepository rpo) / req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -83,30 +93,16 @@ public sealed class SiteMsgRoleService(DefaultRepository rpo) / public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateSiteMsgRoleReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QuerySiteMsgRoleRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_SiteMsgRole req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QuerySiteMsgRoleReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs index d85901f9..fa006d28 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgService.cs @@ -13,10 +13,10 @@ namespace NetAdmin.SysComponent.Application.Services.Sys; /// public sealed class SiteMsgService( - DefaultRepository rpo - , ContextUserInfo contextUserInfo - , ISiteMsgFlagService siteMsgFlagService) // - : RepositoryService(rpo), ISiteMsgService + BasicRepository rpo + , ContextUserInfo contextUserInfo + , ISiteMsgFlagService siteMsgFlagService) // + : RepositoryService(rpo), ISiteMsgService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -36,14 +36,18 @@ public sealed class SiteMsgService( public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// public async Task CreateAsync(CreateSiteMsgReq req) { req.ThrowIfInvalid(); - await CreateUpdateCheckAsync(req).ConfigureAwait(false); + await CreateEditCheckAsync(req).ConfigureAwait(false); // 主表 var entity = req.Adapt(); @@ -72,11 +76,38 @@ public sealed class SiteMsgService( return ret.Count; } + /// + public async Task EditAsync(EditSiteMsgReq req) + { + req.ThrowIfInvalid(); + await CreateEditCheckAsync(req).ConfigureAwait(false); + + // 主表 + var entity = req.Adapt(); + _ = await UpdateAsync(entity, null).ConfigureAwait(false); + + // 分表 + await Rpo.SaveManyAsync(entity, nameof(entity.Roles)).ConfigureAwait(false); + + // 分表 + await Rpo.SaveManyAsync(entity, nameof(entity.Users)).ConfigureAwait(false); + + // 分表 + await Rpo.SaveManyAsync(entity, nameof(entity.Depts)).ConfigureAwait(false); + + return (await QueryAsync(new QueryReq { Filter = new QuerySiteMsgReq { Id = req.Id } }) + .ConfigureAwait(false)).First(); + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -115,6 +146,9 @@ public sealed class SiteMsgService( req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync(a => new { a.CreatedTime @@ -142,12 +176,18 @@ public sealed class SiteMsgService( public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } /// - public async Task SetSiteMsgStatusAsync(UpdateSiteMsgFlagReq req) + public async Task SetSiteMsgStatusAsync(SetUserSiteMsgStatusReq req) { req.ThrowIfInvalid(); if (!await ExistAsync(new QueryReq { Filter = new QuerySiteMsgReq { Id = req.SiteMsgId } }) @@ -159,7 +199,8 @@ public sealed class SiteMsgService( _ = await siteMsgFlagService.CreateAsync(req with { UserId = contextUserInfo.Id }).ConfigureAwait(false); } catch { - _ = await siteMsgFlagService.UpdateAsync(req with { UserId = contextUserInfo.Id }).ConfigureAwait(false); + await siteMsgFlagService.SetUserSiteMsgStatusAsync(req with { UserId = contextUserInfo.Id }) + .ConfigureAwait(false); } } @@ -176,38 +217,7 @@ public sealed class SiteMsgService( return await QueryMineInternal(new QueryReq()).CountAsync().ConfigureAwait(false) - subtract; } - /// - public async Task UpdateAsync(UpdateSiteMsgReq req) - { - req.ThrowIfInvalid(); - await CreateUpdateCheckAsync(req).ConfigureAwait(false); - - // 主表 - var entity = req.Adapt(); - _ = await Rpo.UpdateDiy.SetSource(entity).ExecuteAffrowsAsync().ConfigureAwait(false); - - // 分表 - await Rpo.SaveManyAsync(entity, nameof(entity.Roles)).ConfigureAwait(false); - - // 分表 - await Rpo.SaveManyAsync(entity, nameof(entity.Users)).ConfigureAwait(false); - - // 分表 - await Rpo.SaveManyAsync(entity, nameof(entity.Depts)).ConfigureAwait(false); - - return (await QueryAsync(new QueryReq { Filter = new QuerySiteMsgReq { Id = req.Id } }) - .ConfigureAwait(false)).First(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_SiteMsg req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QuerySiteMsgReq { Id = req.Id }).ConfigureAwait(false); - } - - private async Task CreateUpdateCheckAsync(CreateSiteMsgReq req) + private async Task CreateEditCheckAsync(CreateSiteMsgReq req) { // 检查角色是否存在 if (!req.RoleIds.NullOrEmpty()) { @@ -306,19 +316,22 @@ public sealed class SiteMsgService( { var roleIds = contextUserInfo.Roles.Select(x => x.Id).ToList(); - return Rpo.Orm - .Select() - .LeftJoin((a, b, _, _, _, _) => a.CreatedUserId == b.Id) - .LeftJoin((a, _, c, _, _, _) => a.Id == c.SiteMsgId) - .LeftJoin((a, _, _, d, _, _) => a.Id == d.SiteMsgId) - .LeftJoin((a, _, _, _, e, _) => a.Id == e.SiteMsgId) - .LeftJoin((a, _, _, _, _, f) => a.Id == f.SiteMsgId) - .WhereDynamicFilter(req.DynamicFilter) - .Where((a, _, c, d, e, f) => - (SqlExt.EqualIsNull(f.UserSiteMsgStatus) || - f.UserSiteMsgStatus != UserSiteMsgStatues.Deleted) && - (a.MsgType == SiteMsgTypes.Public || c.DeptId == contextUserInfo.DeptId || - roleIds.Contains(d.RoleId) || e.UserId == contextUserInfo.Id)) - .GroupBy((a, _, _, _, _, _) => a.Id); + return Rpo + .Orm.Select() + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .LeftJoin((a, b, _, _, _, _) => a.CreatedUserId == b.Id) + .LeftJoin((a, _, c, _, _, _) => a.Id == c.SiteMsgId) + .LeftJoin((a, _, _, d, _, _) => a.Id == d.SiteMsgId) + .LeftJoin((a, _, _, _, e, _) => a.Id == e.SiteMsgId) + .LeftJoin((a, _, _, _, _, f) => a.Id == f.SiteMsgId) + .WhereDynamicFilter(req.DynamicFilter) + .Where((a, _, c, d, e, f) => + (SqlExt.EqualIsNull(f.UserSiteMsgStatus) || + f.UserSiteMsgStatus != UserSiteMsgStatues.Deleted) && + (a.MsgType == SiteMsgTypes.Public || c.DeptId == contextUserInfo.DeptId || + roleIds.Contains(d.RoleId) || e.UserId == contextUserInfo.Id)) + .GroupBy((a, _, _, _, _, _) => a.Id); } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs index a9c9891d..30f04f04 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/SiteMsgUserService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Sys; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.SiteMsgUser; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class SiteMsgUserService(DefaultRepository rpo) // - : RepositoryService(rpo), ISiteMsgUserService +public sealed class SiteMsgUserService(BasicRepository rpo) // + : RepositoryService(rpo), ISiteMsgUserService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class SiteMsgUserService(DefaultRepository rpo) / public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +55,11 @@ public sealed class SiteMsgUserService(DefaultRepository rpo) / public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +78,9 @@ public sealed class SiteMsgUserService(DefaultRepository rpo) / req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -83,30 +93,16 @@ public sealed class SiteMsgUserService(DefaultRepository rpo) / public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateSiteMsgUserReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QuerySiteMsgUserRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_SiteMsgUser req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QuerySiteMsgUserReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs index 9073e424..3a6f5b83 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserProfileService.cs @@ -5,13 +5,12 @@ 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; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class UserProfileService(DefaultRepository rpo) // - : RepositoryService(rpo), IUserProfileService +public sealed class UserProfileService(BasicRepository rpo) // + : RepositoryService(rpo), IUserProfileService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -31,7 +30,11 @@ public sealed class UserProfileService(DefaultRepository rpo) / public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -50,11 +53,21 @@ public sealed class UserProfileService(DefaultRepository rpo) / return Rpo.DeleteAsync(a => a.Id == req.Id); } + /// + public Task EditAsync(EditUserProfileReq req) + { + return UpdateAsync(req, null); + } + /// public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -73,6 +86,9 @@ public sealed class UserProfileService(DefaultRepository rpo) / req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync((a, b, c, d, e) => new { a @@ -99,6 +115,9 @@ public sealed class UserProfileService(DefaultRepository rpo) / { req.ThrowIfInvalid(); var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Take(req.Count) .ToListAsync((a, b, c, d, e) => new { a @@ -128,27 +147,6 @@ public sealed class UserProfileService(DefaultRepository rpo) / }); } - /// - public async Task UpdateAsync(UpdateUserProfileReq req) - { - req.ThrowIfInvalid(); - var entity = req.Adapt(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(entity).ConfigureAwait(false) as QueryUserProfileRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(entity).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Sys_UserProfile req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryUserProfileReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal( QueryReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs index 63a52232..5e2d3687 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/UserService.cs @@ -14,11 +14,11 @@ namespace NetAdmin.SysComponent.Application.Services.Sys; /// public sealed class UserService( - DefaultRepository rpo // - , IUserProfileService userProfileService // - , IVerifyCodeService verifyCodeService // - , IEventPublisher eventPublisher) // - : RepositoryService(rpo), IUserService + BasicRepository rpo // + , IUserProfileService userProfileService // + , IVerifyCodeService verifyCodeService // + , IEventPublisher eventPublisher) // + : RepositoryService(rpo), IUserService { private readonly Expression> _selectUserFields = a => new Sys_User { Id = a.Id @@ -69,7 +69,11 @@ public sealed class UserService( { req.ThrowIfInvalid(); #pragma warning disable VSTHRD103 - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); #pragma warning restore VSTHRD103 } @@ -77,7 +81,7 @@ public sealed class UserService( public async Task CreateAsync(CreateUserReq req) { req.ThrowIfInvalid(); - await CreateUpdateCheckAsync(req).ConfigureAwait(false); + await CreateEditCheckAsync(req).ConfigureAwait(false); // 主表 var entity = req.Adapt(); @@ -111,6 +115,37 @@ public sealed class UserService( return ret; } + /// + public async Task EditAsync(EditUserReq req) + { + req.ThrowIfInvalid(); + await CreateEditCheckAsync(req).ConfigureAwait(false); + + // 主表 + var entity = req.Adapt(); + var ignoreCols = new List { nameof(Sys_User.Id), nameof(Sys_User.Token) }; + if (entity.Password == Guid.Empty) { + ignoreCols.Add(nameof(Sys_User.Password)); + } + + _ = await UpdateAsync(entity, null, ignoreCols.ToArray()).ConfigureAwait(false); + + // 档案表 + if (req.Profile != null) { + _ = await userProfileService.EditAsync(req.Profile).ConfigureAwait(false); + } + + // 分表 + await Rpo.SaveManyAsync(entity, nameof(entity.Roles)).ConfigureAwait(false); + + var ret = (await QueryAsync(new QueryReq { Filter = new QueryUserReq { Id = req.Id } }) + .ConfigureAwait(false)).First(); + + // 发布用户更新事件 + await eventPublisher.PublishAsync(new UserUpdatedEvent(ret.Adapt())).ConfigureAwait(false); + return ret; + } + /// public async Task ExistAsync(QueryReq req) { @@ -128,20 +163,6 @@ public sealed class UserService( return ret.Adapt(); } - /// - public async Task GetForUpdateAsync(QueryUserReq req) - { - req.ThrowIfInvalid(); - - // ReSharper disable once MethodHasAsyncOverload - #pragma warning disable VSTHRD103,S6966 - return (await QueryInternal(new QueryReq { Filter = req }) - #pragma warning restore S6966, VSTHRD103 - .ForUpdate() - .ToOneAsync() - .ConfigureAwait(false)).Adapt(); - } - /// /// 用户名或密码错误 public async Task LoginByPwdAsync(LoginByPwdReq req) @@ -195,6 +216,10 @@ public sealed class UserService( { req.ThrowIfInvalid(); var list = await (await QueryInternalAsync(req).ConfigureAwait(false)).Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | + SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync(_selectUserFields) .ConfigureAwait(false); @@ -237,33 +262,31 @@ public sealed class UserService( public async Task ResetPasswordAsync(ResetPasswordReq req) { req.ThrowIfInvalid(); - return !await verifyCodeService.VerifyAsync(req.VerifySmsCodeReq).ConfigureAwait(false) - ? throw new NetAdminInvalidOperationException(Ln.验证码不正确) - : (uint)await Rpo.UpdateDiy - .SetSource((await Rpo.Where(a => a.Mobile == req.VerifySmsCodeReq.DestDevice) - .ToOneAsync(a => new { a.Version, a.Id }) - .ConfigureAwait(false)).Adapt() with { - Password = req.PasswordText.Pwd().Guid() - }) - .UpdateColumns(a => a.Password) - .ExecuteAffrowsAsync() - .ConfigureAwait(false); + if (await verifyCodeService.VerifyAsync(req.VerifySmsCodeReq).ConfigureAwait(false)) { + var dto = (await Rpo.Where(a => a.Mobile == req.VerifySmsCodeReq.DestDevice) + .ToOneAsync(a => new { a.Version, a.Id }) + .ConfigureAwait(false)).Adapt() with { + Password = req.PasswordText.Pwd() + .Guid() + }; + return (uint)await UpdateAsync(dto, [nameof(Sys_User.Password)]).ConfigureAwait(false); + } + + throw new NetAdminInvalidOperationException(Ln.验证码不正确); } /// public async Task SetAvatarAsync(SetAvatarReq req) { req.ThrowIfInvalid(); - if (await Rpo.UpdateDiy - .SetSource(req with { - Id = UserToken.Id - , Version = await Rpo.Where(a => a.Id == UserToken.Id) - .ToOneAsync(a => a.Version) - .ConfigureAwait(false) - }) - .UpdateColumns(a => a.Avatar) - .ExecuteAffrowsAsync() - .ConfigureAwait(false) <= 0) { + if (await UpdateAsync( + req with { + Id = UserToken.Id + , Version = await Rpo.Where(a => a.Id == UserToken.Id) + .ToOneAsync(a => a.Version) + .ConfigureAwait(false) + }, [nameof(Sys_User.Avatar)]) + .ConfigureAwait(false) <= 0) { return null; } @@ -295,11 +318,10 @@ public sealed class UserService( } } - if (await Rpo.UpdateDiy - .SetSource(new Sys_User { Email = req.DestDevice, Id = UserToken.Id, Version = user.Version }) - .UpdateColumns(a => a.Email) - .ExecuteAffrowsAsync() - .ConfigureAwait(false) <= 0) { + if (await UpdateAsync( // + new Sys_User { Email = req.DestDevice, Id = UserToken.Id, Version = user.Version } + , [nameof(Sys_User.Email)]) + .ConfigureAwait(false) <= 0) { return null; } @@ -316,7 +338,7 @@ public sealed class UserService( public Task SetEnabledAsync(SetUserEnabledReq req) { req.ThrowIfInvalid(); - return Rpo.UpdateDiy.Set(a => a.Enabled == req.Enabled).Where(a => a.Id == req.Id).ExecuteAffrowsAsync(); + return UpdateAsync(req, [nameof(req.Enabled)]); } /// @@ -343,15 +365,14 @@ public sealed class UserService( throw new NetAdminInvalidOperationException($"{Ln.新手机号码验证码不正确}"); } - if (await Rpo.UpdateDiy - .SetSource(new Sys_User { - Version = user.Version - , Id = UserToken.Id - , Mobile = req.NewVerifySmsCodeReq.DestDevice - }) - .UpdateColumns(a => a.Mobile) - .ExecuteAffrowsAsync() - .ConfigureAwait(false) <= 0) { + if (await UpdateAsync( + new Sys_User { + Version = user.Version + , Id = UserToken.Id + , Mobile = req.NewVerifySmsCodeReq.DestDevice + } + , [nameof(Sys_User.Mobile)]) + .ConfigureAwait(false) <= 0) { return null; } @@ -372,59 +393,13 @@ public sealed class UserService( .ToOneAsync(a => new long?(a.Version)) .ConfigureAwait(false) ?? throw new NetAdminInvalidOperationException($"{Ln.旧密码不正确}"); - var ret = await Rpo.UpdateDiy - .SetSource(new Sys_User { - Id = UserToken.Id - , Password = req.NewPassword.Pwd().Guid() - , Version = version - }) - .UpdateColumns(a => a.Password) - .ExecuteAffrowsAsync() - .ConfigureAwait(false); + var ret = await UpdateAsync( + new Sys_User { Id = UserToken.Id, Password = req.NewPassword.Pwd().Guid(), Version = version } + , [nameof(Sys_User.Password)]) + .ConfigureAwait(false); return (uint)ret; } - /// - public async Task UpdateAsync(UpdateUserReq req) - { - req.ThrowIfInvalid(); - await CreateUpdateCheckAsync(req).ConfigureAwait(false); - - // 主表 - var entity = req.Adapt(); - var ignoreCols = new List { nameof(Sys_User.Token) }; - if (entity.Password == Guid.Empty) { - ignoreCols.Add(nameof(Sys_User.Password)); - } - - _ = await Rpo.UpdateDiy.SetSource(entity) - .IgnoreColumns(ignoreCols.ToArray()) - .ExecuteAffrowsAsync() - .ConfigureAwait(false); - - // 档案表 - if (req.Profile != null) { - _ = await userProfileService.UpdateAsync(req.Profile).ConfigureAwait(false); - } - - // 分表 - await Rpo.SaveManyAsync(entity, nameof(entity.Roles)).ConfigureAwait(false); - - var ret = (await QueryAsync(new QueryReq { Filter = new QueryUserReq { Id = req.Id } }) - .ConfigureAwait(false)).First(); - - // 发布用户更新事件 - await eventPublisher.PublishAsync(new UserUpdatedEvent(ret.Adapt())).ConfigureAwait(false); - return ret; - } - - /// - public Task UpdateSingleAsync(UpdateUserReq req) - { - req.ThrowIfInvalid(); - return Rpo.UpdateAsync(req); - } - /// public async Task UserInfoAsync() { @@ -441,12 +416,6 @@ public sealed class UserService( return dbUser.Adapt(); } - /// - protected override Task UpdateForSqliteAsync(Sys_User req) - { - throw new NotImplementedException(); - } - private static LoginRsp LoginInternal(Sys_User dbUser) { if (!dbUser.Enabled) { @@ -463,7 +432,7 @@ public sealed class UserService( }; } - private async Task CreateUpdateCheckAsync(CreateUpdateUserReq req) + private async Task CreateEditCheckAsync(CreateEditUserReq req) { // 检查角色是否存在 var roles = await Rpo.Orm.Select() diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs index 526ef7b7..fed31b9d 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Sys/VerifyCodeService.cs @@ -6,13 +6,12 @@ using NetAdmin.Domain.Dto.Sys.VerifyCode; using NetAdmin.Domain.Enums.Sys; using NetAdmin.Domain.Events.Sys; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Sys; /// -public sealed class VerifyCodeService(DefaultRepository rpo, IEventPublisher eventPublisher) // - : RepositoryService(rpo), IVerifyCodeService +public sealed class VerifyCodeService(BasicRepository rpo, IEventPublisher eventPublisher) // + : RepositoryService(rpo), IVerifyCodeService { private static readonly int[] _randRange = [0, 10000]; @@ -34,7 +33,11 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -62,7 +65,11 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -81,6 +88,9 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -93,7 +103,13 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } @@ -125,15 +141,9 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv } /// - public async Task UpdateAsync(UpdateVerifyCodeReq req) + public Task SetVerifyCodeStatusAsync(SetVerifyCodeStatusReq req) { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QueryVerifyCodeRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); + return UpdateAsync(req, [nameof(req.Status)]); } /// @@ -156,20 +166,12 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv return false; } - _ = await UpdateAsync((lastSent with { Status = VerifyCodeStatues.Verified }).Adapt()) + _ = await UpdateAsync(lastSent with { Status = VerifyCodeStatues.Verified }, [nameof(lastSent.Status)]) .ConfigureAwait(false); return true; } - /// - protected override async Task UpdateForSqliteAsync(Sys_VerifyCode req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryVerifyCodeReq { Id = req.Id }).ConfigureAwait(false); - } - private Task GetLastSentAsync(string destDevice) { return QueryInternal(new QueryReq { @@ -181,6 +183,9 @@ public sealed class VerifyCodeService(DefaultRepository rpo, IEv , Value = destDevice } }) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Take(1) .ToOneAsync(); } diff --git a/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs b/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs index 05a099ca..833f9efe 100644 --- a/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs +++ b/src/backend/NetAdmin.SysComponent.Application/Services/Tpl/ExampleService.cs @@ -4,13 +4,12 @@ using NetAdmin.Domain.DbMaps.Tpl; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Tpl.Example; using NetAdmin.SysComponent.Application.Services.Tpl.Dependency; -using DataType = FreeSql.DataType; namespace NetAdmin.SysComponent.Application.Services.Tpl; /// -public sealed class ExampleService(DefaultRepository rpo) // - : RepositoryService(rpo), IExampleService +public sealed class ExampleService(BasicRepository rpo) // + : RepositoryService(rpo), IExampleService { /// public async Task BulkDeleteAsync(BulkReq req) @@ -30,7 +29,11 @@ public sealed class ExampleService(DefaultRepository rpo) // public Task CountAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).CountAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .CountAsync(); } /// @@ -52,7 +55,11 @@ public sealed class ExampleService(DefaultRepository rpo) // public Task ExistAsync(QueryReq req) { req.ThrowIfInvalid(); - return QueryInternal(req).AnyAsync(); + return QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .AnyAsync(); } /// @@ -71,6 +78,9 @@ public sealed class ExampleService(DefaultRepository rpo) // req.ThrowIfInvalid(); var list = await QueryInternal(req) .Page(req.Page, req.PageSize) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif .Count(out var total) .ToListAsync() .ConfigureAwait(false); @@ -83,30 +93,16 @@ public sealed class ExampleService(DefaultRepository rpo) // public async Task> QueryAsync(QueryReq req) { req.ThrowIfInvalid(); - var ret = await QueryInternal(req).Take(req.Count).ToListAsync().ConfigureAwait(false); + var ret = await QueryInternal(req) + #if DBTYPE_SQLSERVER + .WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait) + #endif + .Take(req.Count) + .ToListAsync() + .ConfigureAwait(false); return ret.Adapt>(); } - /// - public async Task UpdateAsync(UpdateExampleReq req) - { - req.ThrowIfInvalid(); - if (Rpo.Orm.Ado.DataType == DataType.Sqlite) { - return await UpdateForSqliteAsync(req).ConfigureAwait(false) as QueryExampleRsp; - } - - var ret = await Rpo.UpdateDiy.SetSource(req).ExecuteUpdatedAsync().ConfigureAwait(false); - return ret.FirstOrDefault()?.Adapt(); - } - - /// - protected override async Task UpdateForSqliteAsync(Tpl_Example req) - { - return await Rpo.UpdateDiy.SetSource(req).ExecuteAffrowsAsync().ConfigureAwait(false) <= 0 - ? null - : await GetAsync(new QueryExampleReq { Id = req.Id }).ConfigureAwait(false); - } - private ISelect QueryInternal(QueryReq req) { var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs index 6f87ea6b..e58e0e66 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/ApiCache.cs @@ -63,10 +63,4 @@ public sealed class ApiCache(IDistributedCache cache, IApiService service) // { return Service.SyncAsync(); } - - /// - public Task UpdateAsync(NopReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs index 21a2760b..f104e061 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/ConfigCache.cs @@ -34,6 +34,12 @@ public sealed class ConfigCache(IDistributedCache cache, IConfigService service) return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditConfigReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -63,10 +69,4 @@ public sealed class ConfigCache(IDistributedCache cache, IConfigService service) { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateConfigReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs index 96ccb347..98a5ade1 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DeptCache.cs @@ -34,6 +34,12 @@ public sealed class DeptCache(IDistributedCache cache, IDeptService service) // return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditDeptReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -57,10 +63,4 @@ public sealed class DeptCache(IDistributedCache cache, IDeptService service) // { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateDeptReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs index eb3cc3e4..a03aac4a 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCache.cs @@ -47,6 +47,18 @@ public sealed class DicCache(IDistributedCache cache, IDicService service) // return Service.DeleteContentAsync(req); } + /// + public Task EditCatalogAsync(EditDicCatalogReq req) + { + return Service.EditCatalogAsync(req); + } + + /// + public Task EditContentAsync(EditDicContentReq req) + { + return Service.EditContentAsync(req); + } + /// public Task GetCatalogAsync(QueryDicCatalogReq req) { @@ -94,16 +106,4 @@ public sealed class DicCache(IDistributedCache cache, IDicService service) // { return Service.QueryContentAsync(req); } - - /// - public Task UpdateCatalogAsync(UpdateDicCatalogReq req) - { - return Service.UpdateCatalogAsync(req); - } - - /// - public Task UpdateContentAsync(UpdateDicContentReq req) - { - return Service.UpdateContentAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs index f61cf800..bfd8c001 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicCatalogCache.cs @@ -57,10 +57,4 @@ public sealed class DicCatalogCache(IDistributedCache cache, IDicCatalogService { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateDicCatalogReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs index ee0f096c..5cfac46c 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/DicContentCache.cs @@ -57,10 +57,4 @@ public sealed class DicContentCache(IDistributedCache cache, IDicContentService { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateDicContentReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs index 68db7111..5a461182 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobCache.cs @@ -37,7 +37,7 @@ public sealed class JobCache(IDistributedCache cache, IJobService service) } /// - public Task EditAsync(UpdateJobReq req) + public Task EditAsync(EditJobReq req) { return Service.EditAsync(req); } @@ -123,14 +123,8 @@ public sealed class JobCache(IDistributedCache cache, IJobService service) } /// - public Task SetEnabledAsync(UpdateJobReq req) + public Task SetEnabledAsync(SetJobEnabledReq req) { return Service.SetEnabledAsync(req); } - - /// - public Task UpdateAsync(UpdateJobReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs index 415c0922..48f3a217 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/JobRecordCache.cs @@ -57,10 +57,4 @@ public sealed class JobRecordCache(IDistributedCache cache, IJobRecordService se { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateJobRecordReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs index 15310602..d5b4995f 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/MenuCache.cs @@ -34,6 +34,12 @@ public sealed class MenuCache(IDistributedCache cache, IMenuService service) // return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditMenuReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -58,12 +64,6 @@ public sealed class MenuCache(IDistributedCache cache, IMenuService service) // return Service.QueryAsync(req); } - /// - public Task UpdateAsync(UpdateMenuReq req) - { - return Service.UpdateAsync(req); - } - /// public Task> UserMenusAsync() { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs index 8af41b1a..9523fb34 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/RequestLogCache.cs @@ -94,10 +94,4 @@ public sealed class RequestLogCache(IDistributedCache cache, IRequestLogService { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(NopReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs index d3119f97..3ab6ce64 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/RoleCache.cs @@ -34,6 +34,12 @@ public sealed class RoleCache(IDistributedCache cache, IRoleService service) // return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditRoleReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -57,10 +63,4 @@ public sealed class RoleCache(IDistributedCache cache, IRoleService service) // { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateRoleReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs index 17366674..fff7cbbd 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgCache.cs @@ -35,6 +35,12 @@ public sealed class SiteMsgCache(IDistributedCache cache, ISiteMsgService servic return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditSiteMsgReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -72,7 +78,7 @@ public sealed class SiteMsgCache(IDistributedCache cache, ISiteMsgService servic } /// - public Task SetSiteMsgStatusAsync(UpdateSiteMsgFlagReq req) + public Task SetSiteMsgStatusAsync(SetUserSiteMsgStatusReq req) { return Service.SetSiteMsgStatusAsync(req); } @@ -82,10 +88,4 @@ public sealed class SiteMsgCache(IDistributedCache cache, ISiteMsgService servic { return Service.UnreadCountAsync(); } - - /// - public Task UpdateAsync(UpdateSiteMsgReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs index 05d4981f..2f43abd0 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgDeptCache.cs @@ -57,10 +57,4 @@ public sealed class SiteMsgDeptCache(IDistributedCache cache, ISiteMsgDeptServic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateSiteMsgDeptReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs index 7ffd75e2..98318d56 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgFlagCache.cs @@ -57,10 +57,4 @@ public sealed class SiteMsgFlagCache(IDistributedCache cache, ISiteMsgFlagServic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateSiteMsgFlagReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs index 5f591c6d..cdd93176 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgRoleCache.cs @@ -57,10 +57,4 @@ public sealed class SiteMsgRoleCache(IDistributedCache cache, ISiteMsgRoleServic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateSiteMsgRoleReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs index 8c60aef4..e20cc11a 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/SiteMsgUserCache.cs @@ -57,10 +57,4 @@ public sealed class SiteMsgUserCache(IDistributedCache cache, ISiteMsgUserServic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateSiteMsgUserReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs index 57df7a43..1d91b6af 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserCache.cs @@ -47,6 +47,12 @@ public sealed class UserCache(IDistributedCache cache, IUserService service, IVe return Service.DeleteAsync(req); } + /// + public Task EditAsync(EditUserReq req) + { + return Service.EditAsync(req); + } + /// public Task ExistAsync(QueryReq req) { @@ -188,12 +194,6 @@ public sealed class UserCache(IDistributedCache cache, IUserService service, IVe return Service.SetPasswordAsync(req); } - /// - public Task UpdateAsync(UpdateUserReq req) - { - return Service.UpdateAsync(req); - } - /// public Task UserInfoAsync() { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs index c13aac4f..5c4c0d4f 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/UserProfileCache.cs @@ -57,10 +57,4 @@ public sealed class UserProfileCache(IDistributedCache cache, IUserProfileServic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateUserProfileReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs index 9bd7106a..a35be2a3 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Sys/VerifyCodeCache.cs @@ -65,12 +65,6 @@ public sealed class VerifyCodeCache(IDistributedCache cache, IVerifyCodeService return Service.SendVerifyCodeAsync(req); } - /// - public Task UpdateAsync(UpdateVerifyCodeReq req) - { - return Service.UpdateAsync(req); - } - /// public Task VerifyAsync(VerifyCodeReq req) { diff --git a/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs b/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs index 3063a01b..9a0e59ba 100644 --- a/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs +++ b/src/backend/NetAdmin.SysComponent.Cache/Tpl/ExampleCache.cs @@ -57,10 +57,4 @@ public sealed class ExampleCache(IDistributedCache cache, IExampleService servic { return Service.QueryAsync(req); } - - /// - public Task UpdateAsync(UpdateExampleReq req) - { - return Service.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs index 21a56e6a..c81865eb 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ApiController.cs @@ -95,13 +95,4 @@ public sealed class ApiController(IApiCache cache) : ControllerBase - /// 更新接口 - /// - [NonAction] - public Task UpdateAsync(NopReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs index 821046b3..ac1adea7 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/ConfigController.cs @@ -50,6 +50,15 @@ public sealed class ConfigController(IConfigCache cache) : ControllerBase + /// 编辑配置 + /// + [Transaction] + public Task EditAsync(EditConfigReq req) + { + return Cache.EditAsync(req); + } + /// /// 配置是否存在 /// @@ -90,13 +99,4 @@ public sealed class ConfigController(IConfigCache cache) : ControllerBase - /// 更新配置 - /// - [Transaction] - public Task UpdateAsync(UpdateConfigReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs index 8d79c6db..8b7916ff 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DeptController.cs @@ -49,6 +49,15 @@ public sealed class DeptController(IDeptCache cache) : ControllerBase + /// 编辑部门 + /// + [Transaction] + public Task EditAsync(EditDeptReq req) + { + return Cache.EditAsync(req); + } + /// /// 部门是否存在 /// @@ -82,13 +91,4 @@ public sealed class DeptController(IDeptCache cache) : ControllerBase - /// 更新部门 - /// - [Transaction] - public Task UpdateAsync(UpdateDeptReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs index f291031c..0e48f3e2 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/DicController.cs @@ -69,6 +69,24 @@ public sealed class DicController(IDicCache cache) : ControllerBase + /// 编辑字典目录 + /// + [Transaction] + public Task EditCatalogAsync(EditDicCatalogReq req) + { + return Cache.EditCatalogAsync(req); + } + + /// + /// 编辑字典内容 + /// + [Transaction] + public Task EditContentAsync(EditDicContentReq req) + { + return Cache.EditContentAsync(req); + } + /// /// 获取单个字典目录 /// @@ -124,22 +142,4 @@ public sealed class DicController(IDicCache cache) : ControllerBase - /// 更新字典目录 - /// - [Transaction] - public Task UpdateCatalogAsync(UpdateDicCatalogReq req) - { - return Cache.UpdateCatalogAsync(req); - } - - /// - /// 更新字典内容 - /// - [Transaction] - public Task UpdateContentAsync(UpdateDicContentReq req) - { - return Cache.UpdateContentAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs index d6e44192..ca961ae7 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/JobController.cs @@ -55,7 +55,7 @@ public sealed class JobController(IJobCache cache) : ControllerBase [Transaction] - public Task EditAsync(UpdateJobReq req) + public Task EditAsync(EditJobReq req) { return Cache.EditAsync(req); } @@ -144,18 +144,8 @@ public sealed class JobController(IJobCache cache) : ControllerBase /// 启用/禁用作业 /// - public Task SetEnabledAsync(UpdateJobReq req) + public Task SetEnabledAsync(SetJobEnabledReq req) { return Cache.SetEnabledAsync(req); } - - /// - /// 更新计划作业 - /// - [NonAction] - [Transaction] - public Task UpdateAsync(UpdateJobReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs index 205d3bb1..f19a63e5 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/LogController.cs @@ -110,14 +110,4 @@ public sealed class LogController(IRequestLogCache cache) : ControllerBase - /// 更新请求日志 - /// - [NonAction] - [Transaction] - public Task UpdateAsync(NopReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs index ef84718f..1da11d4e 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/MenuController.cs @@ -49,6 +49,15 @@ public sealed class MenuController(IMenuCache cache) : ControllerBase + /// 编辑菜单 + /// + [Transaction] + public Task EditAsync(EditMenuReq req) + { + return Cache.EditAsync(req); + } + /// /// 菜单是否存在 /// @@ -83,15 +92,6 @@ public sealed class MenuController(IMenuCache cache) : ControllerBase - /// 更新菜单 - /// - [Transaction] - public Task UpdateAsync(UpdateMenuReq req) - { - return Cache.UpdateAsync(req); - } - /// /// 当前用户菜单 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs index c984662c..480f8228 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/RoleController.cs @@ -49,6 +49,15 @@ public sealed class RoleController(IRoleCache cache) : ControllerBase + /// 编辑角色 + /// + [Transaction] + public Task EditAsync(EditRoleReq req) + { + return Cache.EditAsync(req); + } + /// /// 角色是否存在 /// @@ -81,13 +90,4 @@ public sealed class RoleController(IRoleCache cache) : ControllerBase - /// 更新角色 - /// - [Transaction] - public Task UpdateAsync(UpdateRoleReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs index 56455af2..db0b692c 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/SiteMsgController.cs @@ -51,6 +51,15 @@ public sealed class SiteMsgController(ISiteMsgCache cache) : ControllerBase + /// 编辑站内信 + /// + [Transaction] + public Task EditAsync(EditSiteMsgReq req) + { + return Cache.EditAsync(req); + } + /// /// 站内信是否存在 /// @@ -102,7 +111,7 @@ public sealed class SiteMsgController(ISiteMsgCache cache) : ControllerBase /// 设置站内信状态 /// - public Task SetSiteMsgStatusAsync(UpdateSiteMsgFlagReq req) + public Task SetSiteMsgStatusAsync(SetUserSiteMsgStatusReq req) { return Cache.SetSiteMsgStatusAsync(req); } @@ -114,13 +123,4 @@ public sealed class SiteMsgController(ISiteMsgCache cache) : ControllerBase - /// 更新站内信 - /// - [Transaction] - public Task UpdateAsync(UpdateSiteMsgReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs index f02c23c7..00021d61 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/UserController.cs @@ -70,6 +70,15 @@ public sealed class UserController(IUserCache cache, IConfigCache configCache) return Cache.DeleteAsync(req); } + /// + /// 编辑用户 + /// + [Transaction] + public Task EditAsync(EditUserReq req) + { + return Cache.EditAsync(req); + } + /// /// 用户是否存在 /// @@ -165,7 +174,7 @@ public sealed class UserController(IUserCache cache, IConfigCache configCache) } /// - /// 更新用户头像 + /// 设置用户头像 /// [Transaction] public Task SetAvatarAsync(SetAvatarReq req) @@ -209,15 +218,6 @@ public sealed class UserController(IUserCache cache, IConfigCache configCache) return Cache.SetPasswordAsync(req); } - /// - /// 更新用户 - /// - [Transaction] - public Task UpdateAsync(UpdateUserReq req) - { - return Cache.UpdateAsync(req); - } - /// /// 当前用户信息 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs index 82da5b41..47626baf 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Sys/VerifyCodeController.cs @@ -97,15 +97,6 @@ public sealed class VerifyCodeController(IVerifyCodeCache cache, ICaptchaCache c return await Cache.SendVerifyCodeAsync(req).ConfigureAwait(false); } - /// - /// 更新验证码 - /// - [NonAction] - public Task UpdateAsync(UpdateVerifyCodeReq req) - { - return Cache.UpdateAsync(req); - } - /// /// 完成验证 /// diff --git a/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs b/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs index f25c7f82..4e4399cb 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Controllers/Tpl/ExampleController.cs @@ -81,13 +81,4 @@ public sealed class ExampleController(IExampleCache cache) : ControllerBase - /// 更新示例 - /// - [Transaction] - public Task UpdateAsync(UpdateExampleReq req) - { - return Cache.UpdateAsync(req); - } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs index c3627b55..be26859e 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Jobs/ScheduledJob.cs @@ -98,7 +98,7 @@ public sealed class ScheduledJob : WorkBase, IJob }; _ = await _jobRecordService.CreateAsync(jobRecord).ConfigureAwait(false); await _jobService - .FinishJobAsync(job.Adapt() with { + .FinishJobAsync(job.Adapt() with { LastStatusCode = rsp.StatusCode , LastDuration = jobRecord.Duration }) diff --git a/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs b/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs index 1e598b6c..803f5593 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs @@ -23,11 +23,11 @@ public sealed class EmailCodeSender(ILogger logger) : IEventSub // 发送... var verifyCodeService = App.GetService(); - _ = await verifyCodeService.UpdateAsync( - verifyCodeCreatedEvent.Data.Adapt() with { + _ = await verifyCodeService.SetVerifyCodeStatusAsync( + verifyCodeCreatedEvent.Data.Adapt() with { Status = VerifyCodeStatues.Sent }) .ConfigureAwait(false); - logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已处理完毕}"); + logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.SetVerifyCodeStatusAsync)} {Ln.已处理完毕}"); } } \ No newline at end of file diff --git a/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs b/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs index d0e4903c..cb84e6f3 100644 --- a/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs +++ b/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs @@ -23,11 +23,11 @@ public sealed class SmsCodeSender(ILogger logger) : IEventSubscri // 发送... var verifyCodeService = App.GetService(); - _ = await verifyCodeService.UpdateAsync( - verifyCodeCreatedEvent.Data.Adapt() with { + _ = await verifyCodeService.SetVerifyCodeStatusAsync( + verifyCodeCreatedEvent.Data.Adapt() with { Status = VerifyCodeStatues.Sent }) .ConfigureAwait(false); - logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已处理完毕}"); + logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.SetVerifyCodeStatusAsync)} {Ln.已处理完毕}"); } } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/config.js b/src/frontend/admin/src/api/sys/config.js index 4802fdf3..2f5c6115 100644 --- a/src/frontend/admin/src/api/sys/config.js +++ b/src/frontend/admin/src/api/sys/config.js @@ -49,6 +49,17 @@ export default { }, }, + /** + * 编辑配置 + */ + edit: { + url: `${config.API_URL}/api/sys/config/edit`, + name: `编辑配置`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个配置 */ @@ -92,15 +103,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新配置 - */ - update: { - url: `${config.API_URL}/api/sys/config/update`, - name: `更新配置`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/dept.js b/src/frontend/admin/src/api/sys/dept.js index 2db052a3..ed41b83a 100644 --- a/src/frontend/admin/src/api/sys/dept.js +++ b/src/frontend/admin/src/api/sys/dept.js @@ -49,6 +49,17 @@ export default { }, }, + /** + * 编辑部门 + */ + edit: { + url: `${config.API_URL}/api/sys/dept/edit`, + name: `编辑部门`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个部门 */ @@ -70,15 +81,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新部门 - */ - update: { - url: `${config.API_URL}/api/sys/dept/update`, - name: `更新部门`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/dic.js b/src/frontend/admin/src/api/sys/dic.js index a61f7dba..51728572 100644 --- a/src/frontend/admin/src/api/sys/dic.js +++ b/src/frontend/admin/src/api/sys/dic.js @@ -71,6 +71,28 @@ export default { }, }, + /** + * 编辑字典目录 + */ + editCatalog: { + url: `${config.API_URL}/api/sys/dic/edit.catalog`, + name: `编辑字典目录`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + + /** + * 编辑字典内容 + */ + editContent: { + url: `${config.API_URL}/api/sys/dic/edit.content`, + name: `编辑字典内容`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个字典目录 */ @@ -147,26 +169,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新字典目录 - */ - updateCatalog: { - url: `${config.API_URL}/api/sys/dic/update.catalog`, - name: `更新字典目录`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, - - /** - * 更新字典内容 - */ - updateContent: { - url: `${config.API_URL}/api/sys/dic/update.content`, - name: `更新字典内容`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/menu.js b/src/frontend/admin/src/api/sys/menu.js index 4e701004..a578aa27 100644 --- a/src/frontend/admin/src/api/sys/menu.js +++ b/src/frontend/admin/src/api/sys/menu.js @@ -49,6 +49,17 @@ export default { }, }, + /** + * 编辑菜单 + */ + edit: { + url: `${config.API_URL}/api/sys/menu/edit`, + name: `编辑菜单`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个菜单 */ @@ -71,17 +82,6 @@ export default { }, }, - /** - * 更新菜单 - */ - update: { - url: `${config.API_URL}/api/sys/menu/update`, - 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 ba9ad366..70287e14 100644 --- a/src/frontend/admin/src/api/sys/role.js +++ b/src/frontend/admin/src/api/sys/role.js @@ -49,6 +49,17 @@ export default { }, }, + /** + * 编辑角色 + */ + edit: { + url: `${config.API_URL}/api/sys/role/edit`, + name: `编辑角色`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个角色 */ @@ -81,15 +92,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新角色 - */ - update: { - url: `${config.API_URL}/api/sys/role/update`, - name: `更新角色`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/sitemsg.js b/src/frontend/admin/src/api/sys/sitemsg.js index 07ccee08..368a6bd8 100644 --- a/src/frontend/admin/src/api/sys/sitemsg.js +++ b/src/frontend/admin/src/api/sys/sitemsg.js @@ -49,6 +49,17 @@ export default { }, }, + /** + * 编辑站内信 + */ + edit: { + url: `${config.API_URL}/api/sys/site.msg/edit`, + name: `编辑站内信`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 站内信是否存在 */ @@ -136,15 +147,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新站内信 - */ - update: { - url: `${config.API_URL}/api/sys/site.msg/update`, - name: `更新站内信`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/api/sys/user.js b/src/frontend/admin/src/api/sys/user.js index df6e25ef..d26c3c47 100644 --- a/src/frontend/admin/src/api/sys/user.js +++ b/src/frontend/admin/src/api/sys/user.js @@ -6,11 +6,11 @@ import config from '@/config' import http from '@/utils/request' export default { /** - * 检查手机号是否可用 + * 检查手机号码是否可用 */ checkMobileAvailable: { url: `${config.API_URL}/api/sys/user/check.mobile.available`, - name: `检查手机号是否可用`, + name: `检查手机号码是否可用`, post: async function (data = {}, config = {}) { return await http.post(this.url, data, config) }, @@ -60,6 +60,17 @@ export default { }, }, + /** + * 编辑用户 + */ + edit: { + url: `${config.API_URL}/api/sys/user/edit`, + name: `编辑用户`, + post: async function (data = {}, config = {}) { + return await http.post(this.url, data, config) + }, + }, + /** * 获取单个用户 */ @@ -149,11 +160,11 @@ export default { }, /** - * 更新用户头像 + * 设置用户头像 */ setAvatar: { url: `${config.API_URL}/api/sys/user/set.avatar`, - name: `更新用户头像`, + name: `设置用户头像`, post: async function (data = {}, config = {}) { return await http.post(this.url, data, config) }, @@ -182,11 +193,11 @@ export default { }, /** - * 设置手机号 + * 设置手机号码 */ setMobile: { url: `${config.API_URL}/api/sys/user/set.mobile`, - name: `设置手机号`, + name: `设置手机号码`, post: async function (data = {}, config = {}) { return await http.post(this.url, data, config) }, @@ -203,17 +214,6 @@ export default { }, }, - /** - * 更新用户 - */ - update: { - url: `${config.API_URL}/api/sys/user/update`, - 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 2b7add3d..782f6bad 100644 --- a/src/frontend/admin/src/api/tpl/example.js +++ b/src/frontend/admin/src/api/tpl/example.js @@ -92,15 +92,4 @@ export default { return await http.post(this.url, data, config) }, }, - - /** - * 更新示例 - */ - update: { - url: `${config.API_URL}/api/tpl/example/update`, - name: `更新示例`, - post: async function (data = {}, config = {}) { - return await http.post(this.url, data, config) - }, - }, } \ No newline at end of file diff --git a/src/frontend/admin/src/global.js b/src/frontend/admin/src/global.js index 793ee319..9fa454e0 100644 --- a/src/frontend/admin/src/global.js +++ b/src/frontend/admin/src/global.js @@ -34,6 +34,7 @@ import scFormTable from '@/components/scFormTable' import scPageHeader from '@/components/scPageHeader' import scSelect from '@/components/scSelect' import scSelectFilter from '@/components/scSelectFilter' +import scStatistic from '@/components/scStatistic/index.vue' import scStatusIndicator from '@/components/scMini/scStatusIndicator' import scTable from '@/components/scTable' import scTableColumn from '@/components/scTable/column.js' @@ -112,6 +113,7 @@ export default { app.component('scPageHeader', scPageHeader) app.component('scSelect', scSelect) app.component('scSelectFilter', scSelectFilter) + app.component('scStatistic', scStatistic) app.component('scStatusIndicator', scStatusIndicator) app.component('scTable', scTable) app.component('scTableColumn', scTableColumn) diff --git a/src/frontend/admin/src/router/index.js b/src/frontend/admin/src/router/index.js index a0266f04..d712ae06 100644 --- a/src/frontend/admin/src/router/index.js +++ b/src/frontend/admin/src/router/index.js @@ -3,7 +3,6 @@ import { ElNotification } from 'element-plus' import config from '@/config' import NProgress from 'nprogress' import 'nprogress/nprogress.css' -import tool from '@/utils/tool' import systemRouter from './systemRouter' import userRoutes from '@/config/route' import { afterEach, beforeEach } from './scrollBehavior' diff --git a/src/frontend/admin/src/views/profile/account/set-email.vue b/src/frontend/admin/src/views/profile/account/set-email.vue index 8a0b341e..2caba97e 100644 --- a/src/frontend/admin/src/views/profile/account/set-email.vue +++ b/src/frontend/admin/src/views/profile/account/set-email.vue @@ -6,12 +6,12 @@ + form-name="form" /> x.id) })) this.loading = false diff --git a/src/frontend/admin/src/views/sys/role/save.vue b/src/frontend/admin/src/views/sys/role/save.vue index 02eb2159..cde9dff9 100644 --- a/src/frontend/admin/src/views/sys/role/save.vue +++ b/src/frontend/admin/src/views/sys/role/save.vue @@ -161,7 +161,7 @@ export default { } this.loading = true - const method = this.mode === 'add' ? this.$API.sys_role.create : this.$API.sys_role.update + const method = this.mode === 'add' ? this.$API.sys_role.create : this.$API.sys_role.edit const postData = Object.assign({}, this.form, { deptIds: this.$refs.dept.getCheckedKeys().concat(this.$refs.dept.getHalfCheckedKeys()), menuIds: this.$refs.menu.getCheckedKeys().concat(this.$refs.menu.getHalfCheckedKeys()), diff --git a/src/frontend/admin/src/views/sys/user/save.vue b/src/frontend/admin/src/views/sys/user/save.vue index 1f14caa9..9fc71912 100644 --- a/src/frontend/admin/src/views/sys/user/save.vue +++ b/src/frontend/admin/src/views/sys/user/save.vue @@ -337,7 +337,7 @@ export default { } try { - const method = this.mode === 'add' ? this.$API.sys_user.create : this.$API.sys_user.update + const method = this.mode === 'add' ? this.$API.sys_user.create : this.$API.sys_user.edit this.loading = true const res = await method.post(Object.assign({}, this.form)) this.loading = false