diff --git a/CloudBuilder/CloudBuilder.Request/Security/LocaleRequest.auto.cs b/CloudBuilder/CloudBuilder.Request/Security/LocaleRequest.auto.cs index 17821f0..d00e2d1 100644 --- a/CloudBuilder/CloudBuilder.Request/Security/LocaleRequest.auto.cs +++ b/CloudBuilder/CloudBuilder.Request/Security/LocaleRequest.auto.cs @@ -65,6 +65,10 @@ return Task.Run(() => serviceRequest.PostAsJsonAsync serviceRequest.PostAsJsonAsync("/Locale/Delete" , key)).GetAwaiter().GetResult(); } + public dynamic Copy() + { +return Task.Run(() => serviceRequest.GetAsync("/Locale/Copy")).GetAwaiter().GetResult(); } + } } \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs b/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs index d47c538..566366b 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/LocaleService.cs @@ -1,4 +1,4 @@ -using CloudBuilder.Core.DatabaseAccessor; +using CloudBuilder.Core.DatabaseAccessor; using CloudBuilder.Core.DatabaseAccessor.Entity; using CloudBuilder.Core.Service; using CloudBuilder.Security.Data; @@ -180,5 +180,118 @@ namespace CloudBuilder.Security.Service } + [AllowAnonymous] + [HttpGet] + public dynamic Copy() + { + repository.ChangeSecondaryDatabase(); + //repositorySecurityUser.ChangeSecondaryDatabase(); + //repositorySecurityUserActor.ChangeSecondaryDatabase(); + //repositorySecurityActor.ChangeSecondaryDatabase(); + //repositorySecurityActorGroup.ChangeSecondaryDatabase(); + //repositorySecurityGroup.ChangeSecondaryDatabase(); + //repositorySecurityGroupPermission.ChangeSecondaryDatabase(); + //repositorySecurityGroupPermissionDependent.ChangeSecondaryDatabase(); + //repositorySecurityPermission.ChangeSecondaryDatabase(); + //repositorySecurityPermissionDependent.ChangeSecondaryDatabase(); + //repositorySecurityPermissionFunctionMap.ChangeSecondaryDatabase(); + //repositorySecurityFunction.ChangeSecondaryDatabase(); + //repositorySecurityFunctionMap.ChangeSecondaryDatabase(); + //repositorySecurityMaster.ChangeSecondaryDatabase(); + //repositorySecurityGeneratorNumber.ChangeSecondaryDatabase(); + + + var locales = repository.DetachedEntities.ToArray(); + //var SecurityUsers = repositorySecurityUser.DetachedEntities.ToArray(); + //var SecurityUserActors = repositorySecurityUserActor.DetachedEntities.ToArray(); + //var SecurityActors = repositorySecurityActor.DetachedEntities.ToArray(); + //var SecurityActorGroups = repositorySecurityActorGroup.DetachedEntities.ToArray(); + //var SecurityGroups = repositorySecurityGroup.DetachedEntities.ToArray(); + //var SecurityGroupPermissions = repositorySecurityGroupPermission.DetachedEntities.ToArray(); + //var SecurityGroupPermissionDependents = repositorySecurityGroupPermissionDependent.DetachedEntities.ToArray(); + //var SecurityPermissions = repositorySecurityPermission.DetachedEntities.ToArray(); + //var SecurityPermissionDependents = repositorySecurityPermissionDependent.DetachedEntities.ToArray(); + //var SecurityPermissionFunctionMaps = repositorySecurityPermissionFunctionMap.DetachedEntities.ToArray(); + //var SecurityFunctions = repositorySecurityFunction.DetachedEntities.ToArray(); + //var SecurityFunctionMaps = repositorySecurityFunctionMap.DetachedEntities.ToArray(); + //var SecurityMasters = repositorySecurityMaster.DetachedEntities.ToArray(); + //var SecurityGeneratorNumbers = repositorySecurityGeneratorNumber.DetachedEntities.ToArray(); + + repository.ChangeMasterDatabase(); + //repositorySecurityUser.ChangeMasterDatabase(); + //repositorySecurityUserActor.ChangeMasterDatabase(); + //repositorySecurityActor.ChangeMasterDatabase(); + //repositorySecurityActorGroup.ChangeMasterDatabase(); + //repositorySecurityGroup.ChangeMasterDatabase(); + //repositorySecurityGroupPermission.ChangeMasterDatabase(); + //repositorySecurityGroupPermissionDependent.ChangeMasterDatabase(); + //repositorySecurityPermission.ChangeMasterDatabase(); + //repositorySecurityPermissionDependent.ChangeMasterDatabase(); + //repositorySecurityPermissionFunctionMap.ChangeMasterDatabase(); + //repositorySecurityFunction.ChangeMasterDatabase(); + //repositorySecurityFunctionMap.ChangeMasterDatabase(); + //repositorySecurityMaster.ChangeMasterDatabase(); + //repositorySecurityGeneratorNumber.ChangeMasterDatabase(); + + // 取得 MasterDbContext,開啟跳審計,保留原始 CreatedBy / UpdatedBy + var secDbCtx = repository.GetDbContext() as MasterDbContext; + if (secDbCtx != null) + { + secDbCtx.SkipAudit = true; + } + + repository.ExecuteNonQuery("TRUNCATE TABLE " + LocaleEntity.DB_NAME_LOCALE); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserEntity.DB_NAME_SECURITY_USER); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorEntity.DB_NAME_SECURITY_ACTOR); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserActorEntity.DB_NAME_SECURITY_USER_ACTOR); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorGroupEntity.DB_NAME_SECURITY_ACTOR_GROUP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupEntity.DB_NAME_SECURITY_GROUP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionEntity.DB_NAME_SECURITY_GROUP_PERMISSION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionDependentEntity.DB_NAME_SECURITY_GROUP_PERMISSION_DEPENDENT); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionEntity.DB_NAME_SECURITY_PERMISSION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionDependentEntity.DB_NAME_SECURITY_PERMISSION_DEPENDENT); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionFunctionMapEntity.DB_NAME_SECURITY_PERMISSION_FUNCTION_MAP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionEntity.DB_NAME_SECURITY_FUNCTION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionMapEntity.DB_NAME_SECURITY_FUNCTION_MAP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityMasterEntity.DB_NAME_SECURITY_MASTER); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER); + + repository.InsertNow(locales); + //repositorySecurityUser.InsertNow(SecurityUsers); + //repositorySecurityUserActor.InsertNow(SecurityUserActors); + //repositorySecurityActor.InsertNow(SecurityActors); + //repositorySecurityActorGroup.InsertNow(SecurityActorGroups); + //repositorySecurityGroup.InsertNow(SecurityGroups); + //repositorySecurityGroupPermission.InsertNow(SecurityGroupPermissions); + //repositorySecurityGroupPermissionDependent.InsertNow(SecurityGroupPermissionDependents); + //repositorySecurityPermission.InsertNow(SecurityPermissions); + //repositorySecurityPermissionDependent.InsertNow(SecurityPermissionDependents); + //repositorySecurityPermissionFunctionMap.InsertNow(SecurityPermissionFunctionMaps); + //repositorySecurityFunction.InsertNow(SecurityFunctions); + //repositorySecurityFunctionMap.InsertNow(SecurityFunctionMaps); + //repositorySecurityMaster.InsertNow(SecurityMasters); + + ////Copy 到 MySQL 不需要 + //if (secDbCtx.Database.ProviderName.Contains("SqlServer")) + //{ + // repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " ON;"); + //} + + //repositorySecurityGeneratorNumber.InsertNow(SecurityGeneratorNumbers); + + ////Copy 到 MySQL 不需要 + //if (secDbCtx.Database.ProviderName.Contains("SqlServer")) + //{ + // repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " OFF;"); + //} + + // ⚠️務必關閉 SkipAudit,避免後續正常業務失效 + if (secDbCtx != null) + { + secDbCtx.SkipAudit = false; + } + + return string.Empty; + } } } diff --git a/CloudBuilder/CloudBuilder.Security.Service/YesNoPolicyService.cs b/CloudBuilder/CloudBuilder.Security.Service/YesNoPolicyService.cs index dd7f9dc..cfafd78 100644 --- a/CloudBuilder/CloudBuilder.Security.Service/YesNoPolicyService.cs +++ b/CloudBuilder/CloudBuilder.Security.Service/YesNoPolicyService.cs @@ -84,53 +84,53 @@ namespace CloudBuilder.Security.Service public dynamic Copy() { repository.ChangeSecondaryDatabase(); - repositorySecurityUser.ChangeSecondaryDatabase(); - repositorySecurityUserActor.ChangeSecondaryDatabase(); - repositorySecurityActor.ChangeSecondaryDatabase(); - repositorySecurityActorGroup.ChangeSecondaryDatabase(); - repositorySecurityGroup.ChangeSecondaryDatabase(); - repositorySecurityGroupPermission.ChangeSecondaryDatabase(); - repositorySecurityGroupPermissionDependent.ChangeSecondaryDatabase(); - repositorySecurityPermission.ChangeSecondaryDatabase(); - repositorySecurityPermissionDependent.ChangeSecondaryDatabase(); - repositorySecurityPermissionFunctionMap.ChangeSecondaryDatabase(); - repositorySecurityFunction.ChangeSecondaryDatabase(); - repositorySecurityFunctionMap.ChangeSecondaryDatabase(); - repositorySecurityMaster.ChangeSecondaryDatabase(); - repositorySecurityGeneratorNumber.ChangeSecondaryDatabase(); + //repositorySecurityUser.ChangeSecondaryDatabase(); + //repositorySecurityUserActor.ChangeSecondaryDatabase(); + //repositorySecurityActor.ChangeSecondaryDatabase(); + //repositorySecurityActorGroup.ChangeSecondaryDatabase(); + //repositorySecurityGroup.ChangeSecondaryDatabase(); + //repositorySecurityGroupPermission.ChangeSecondaryDatabase(); + //repositorySecurityGroupPermissionDependent.ChangeSecondaryDatabase(); + //repositorySecurityPermission.ChangeSecondaryDatabase(); + //repositorySecurityPermissionDependent.ChangeSecondaryDatabase(); + //repositorySecurityPermissionFunctionMap.ChangeSecondaryDatabase(); + //repositorySecurityFunction.ChangeSecondaryDatabase(); + //repositorySecurityFunctionMap.ChangeSecondaryDatabase(); + //repositorySecurityMaster.ChangeSecondaryDatabase(); + //repositorySecurityGeneratorNumber.ChangeSecondaryDatabase(); var locales = repository.DetachedEntities.ToArray(); - var SecurityUsers = repositorySecurityUser.DetachedEntities.ToArray(); - var SecurityUserActors = repositorySecurityUserActor.DetachedEntities.ToArray(); - var SecurityActors = repositorySecurityActor.DetachedEntities.ToArray(); - var SecurityActorGroups = repositorySecurityActorGroup.DetachedEntities.ToArray(); - var SecurityGroups = repositorySecurityGroup.DetachedEntities.ToArray(); - var SecurityGroupPermissions = repositorySecurityGroupPermission.DetachedEntities.ToArray(); - var SecurityGroupPermissionDependents = repositorySecurityGroupPermissionDependent.DetachedEntities.ToArray(); - var SecurityPermissions = repositorySecurityPermission.DetachedEntities.ToArray(); - var SecurityPermissionDependents = repositorySecurityPermissionDependent.DetachedEntities.ToArray(); - var SecurityPermissionFunctionMaps = repositorySecurityPermissionFunctionMap.DetachedEntities.ToArray(); - var SecurityFunctions = repositorySecurityFunction.DetachedEntities.ToArray(); - var SecurityFunctionMaps = repositorySecurityFunctionMap.DetachedEntities.ToArray(); - var SecurityMasters = repositorySecurityMaster.DetachedEntities.ToArray(); - var SecurityGeneratorNumbers = repositorySecurityGeneratorNumber.DetachedEntities.ToArray(); + //var SecurityUsers = repositorySecurityUser.DetachedEntities.ToArray(); + //var SecurityUserActors = repositorySecurityUserActor.DetachedEntities.ToArray(); + //var SecurityActors = repositorySecurityActor.DetachedEntities.ToArray(); + //var SecurityActorGroups = repositorySecurityActorGroup.DetachedEntities.ToArray(); + //var SecurityGroups = repositorySecurityGroup.DetachedEntities.ToArray(); + //var SecurityGroupPermissions = repositorySecurityGroupPermission.DetachedEntities.ToArray(); + //var SecurityGroupPermissionDependents = repositorySecurityGroupPermissionDependent.DetachedEntities.ToArray(); + //var SecurityPermissions = repositorySecurityPermission.DetachedEntities.ToArray(); + //var SecurityPermissionDependents = repositorySecurityPermissionDependent.DetachedEntities.ToArray(); + //var SecurityPermissionFunctionMaps = repositorySecurityPermissionFunctionMap.DetachedEntities.ToArray(); + //var SecurityFunctions = repositorySecurityFunction.DetachedEntities.ToArray(); + //var SecurityFunctionMaps = repositorySecurityFunctionMap.DetachedEntities.ToArray(); + //var SecurityMasters = repositorySecurityMaster.DetachedEntities.ToArray(); + //var SecurityGeneratorNumbers = repositorySecurityGeneratorNumber.DetachedEntities.ToArray(); repository.ChangeMasterDatabase(); - repositorySecurityUser.ChangeMasterDatabase(); - repositorySecurityUserActor.ChangeMasterDatabase(); - repositorySecurityActor.ChangeMasterDatabase(); - repositorySecurityActorGroup.ChangeMasterDatabase(); - repositorySecurityGroup.ChangeMasterDatabase(); - repositorySecurityGroupPermission.ChangeMasterDatabase(); - repositorySecurityGroupPermissionDependent.ChangeMasterDatabase(); - repositorySecurityPermission.ChangeMasterDatabase(); - repositorySecurityPermissionDependent.ChangeMasterDatabase(); - repositorySecurityPermissionFunctionMap.ChangeMasterDatabase(); - repositorySecurityFunction.ChangeMasterDatabase(); - repositorySecurityFunctionMap.ChangeMasterDatabase(); - repositorySecurityMaster.ChangeMasterDatabase(); - repositorySecurityGeneratorNumber.ChangeMasterDatabase(); + //repositorySecurityUser.ChangeMasterDatabase(); + //repositorySecurityUserActor.ChangeMasterDatabase(); + //repositorySecurityActor.ChangeMasterDatabase(); + //repositorySecurityActorGroup.ChangeMasterDatabase(); + //repositorySecurityGroup.ChangeMasterDatabase(); + //repositorySecurityGroupPermission.ChangeMasterDatabase(); + //repositorySecurityGroupPermissionDependent.ChangeMasterDatabase(); + //repositorySecurityPermission.ChangeMasterDatabase(); + //repositorySecurityPermissionDependent.ChangeMasterDatabase(); + //repositorySecurityPermissionFunctionMap.ChangeMasterDatabase(); + //repositorySecurityFunction.ChangeMasterDatabase(); + //repositorySecurityFunctionMap.ChangeMasterDatabase(); + //repositorySecurityMaster.ChangeMasterDatabase(); + //repositorySecurityGeneratorNumber.ChangeMasterDatabase(); // 取得 MasterDbContext,開啟跳審計,保留原始 CreatedBy / UpdatedBy var secDbCtx = repository.GetDbContext() as MasterDbContext; @@ -140,49 +140,49 @@ namespace CloudBuilder.Security.Service } repository.ExecuteNonQuery("TRUNCATE TABLE " + LocaleEntity.DB_NAME_LOCALE); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserEntity.DB_NAME_SECURITY_USER); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorEntity.DB_NAME_SECURITY_ACTOR); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserActorEntity.DB_NAME_SECURITY_USER_ACTOR); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorGroupEntity.DB_NAME_SECURITY_ACTOR_GROUP); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupEntity.DB_NAME_SECURITY_GROUP); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionEntity.DB_NAME_SECURITY_GROUP_PERMISSION); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionDependentEntity.DB_NAME_SECURITY_GROUP_PERMISSION_DEPENDENT); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionEntity.DB_NAME_SECURITY_PERMISSION); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionDependentEntity.DB_NAME_SECURITY_PERMISSION_DEPENDENT); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionFunctionMapEntity.DB_NAME_SECURITY_PERMISSION_FUNCTION_MAP); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionEntity.DB_NAME_SECURITY_FUNCTION); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionMapEntity.DB_NAME_SECURITY_FUNCTION_MAP); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityMasterEntity.DB_NAME_SECURITY_MASTER); - repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserEntity.DB_NAME_SECURITY_USER); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorEntity.DB_NAME_SECURITY_ACTOR); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityUserActorEntity.DB_NAME_SECURITY_USER_ACTOR); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityActorGroupEntity.DB_NAME_SECURITY_ACTOR_GROUP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupEntity.DB_NAME_SECURITY_GROUP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionEntity.DB_NAME_SECURITY_GROUP_PERMISSION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGroupPermissionDependentEntity.DB_NAME_SECURITY_GROUP_PERMISSION_DEPENDENT); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionEntity.DB_NAME_SECURITY_PERMISSION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionDependentEntity.DB_NAME_SECURITY_PERMISSION_DEPENDENT); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityPermissionFunctionMapEntity.DB_NAME_SECURITY_PERMISSION_FUNCTION_MAP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionEntity.DB_NAME_SECURITY_FUNCTION); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityFunctionMapEntity.DB_NAME_SECURITY_FUNCTION_MAP); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityMasterEntity.DB_NAME_SECURITY_MASTER); + //repository.ExecuteNonQuery("TRUNCATE TABLE " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER); repository.InsertNow(locales); - repositorySecurityUser.InsertNow(SecurityUsers); - repositorySecurityUserActor.InsertNow(SecurityUserActors); - repositorySecurityActor.InsertNow(SecurityActors); - repositorySecurityActorGroup.InsertNow(SecurityActorGroups); - repositorySecurityGroup.InsertNow(SecurityGroups); - repositorySecurityGroupPermission.InsertNow(SecurityGroupPermissions); - repositorySecurityGroupPermissionDependent.InsertNow(SecurityGroupPermissionDependents); - repositorySecurityPermission.InsertNow(SecurityPermissions); - repositorySecurityPermissionDependent.InsertNow(SecurityPermissionDependents); - repositorySecurityPermissionFunctionMap.InsertNow(SecurityPermissionFunctionMaps); - repositorySecurityFunction.InsertNow(SecurityFunctions); - repositorySecurityFunctionMap.InsertNow(SecurityFunctionMaps); - repositorySecurityMaster.InsertNow(SecurityMasters); + //repositorySecurityUser.InsertNow(SecurityUsers); + //repositorySecurityUserActor.InsertNow(SecurityUserActors); + //repositorySecurityActor.InsertNow(SecurityActors); + //repositorySecurityActorGroup.InsertNow(SecurityActorGroups); + //repositorySecurityGroup.InsertNow(SecurityGroups); + //repositorySecurityGroupPermission.InsertNow(SecurityGroupPermissions); + //repositorySecurityGroupPermissionDependent.InsertNow(SecurityGroupPermissionDependents); + //repositorySecurityPermission.InsertNow(SecurityPermissions); + //repositorySecurityPermissionDependent.InsertNow(SecurityPermissionDependents); + //repositorySecurityPermissionFunctionMap.InsertNow(SecurityPermissionFunctionMaps); + //repositorySecurityFunction.InsertNow(SecurityFunctions); + //repositorySecurityFunctionMap.InsertNow(SecurityFunctionMaps); + //repositorySecurityMaster.InsertNow(SecurityMasters); - //Copy 到 MySQL 不需要 - if (secDbCtx.Database.ProviderName.Contains("SqlServer")) - { - repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " ON;"); - } + ////Copy 到 MySQL 不需要 + //if (secDbCtx.Database.ProviderName.Contains("SqlServer")) + //{ + // repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " ON;"); + //} - repositorySecurityGeneratorNumber.InsertNow(SecurityGeneratorNumbers); + //repositorySecurityGeneratorNumber.InsertNow(SecurityGeneratorNumbers); - //Copy 到 MySQL 不需要 - if (secDbCtx.Database.ProviderName.Contains("SqlServer")) - { - repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " OFF;"); - } + ////Copy 到 MySQL 不需要 + //if (secDbCtx.Database.ProviderName.Contains("SqlServer")) + //{ + // repository.ExecuteNonQuery("SET IDENTITY_INSERT " + SecurityGeneratorNumberEntity.DB_NAME_SECURITY_GENERATOR_NUMBER + " OFF;"); + //} // ⚠️務必關閉 SkipAudit,避免後續正常業務失效 if (secDbCtx != null) diff --git a/CloudBuilder/CloudBuilder.Security/Service/ILocaleService.auto.cs b/CloudBuilder/CloudBuilder.Security/Service/ILocaleService.auto.cs index 9d563e6..b86e639 100644 --- a/CloudBuilder/CloudBuilder.Security/Service/ILocaleService.auto.cs +++ b/CloudBuilder/CloudBuilder.Security/Service/ILocaleService.auto.cs @@ -14,5 +14,7 @@ namespace CloudBuilder.Security.Service LocaleResultData FindBySearchCriteria(LocaleSearchCriteria tc); void UpdateLocaleData(LocaleData data); + + dynamic Copy(); } } diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Security/LocaleController.auto.cs b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Security/LocaleController.auto.cs index e221849..ca2dd7a 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Security/LocaleController.auto.cs +++ b/CloudBuilder/CloudBuilder.Web.Entry/Controllers/Security/LocaleController.auto.cs @@ -201,6 +201,26 @@ this.localeService= localeService; } } + [AllowAnonymous] + [HttpGet] + public dynamic Copy() + { + try + { + + var result = localeService.Copy(); + return result; + } + catch (ValidatedException vex) + { + return vex; + } + catch (Exception ex) + { + return new ServiceErrorException(ex); + } + } + } } \ No newline at end of file diff --git a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json index 24674a7..f2d5042 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json +++ b/CloudBuilder/CloudBuilder.Web.Entry/appsettings.json @@ -12,7 +12,6 @@ "DbContextTypeName": "MasterDbContext", "ConnectionString": "server=nas.youjiala.com;port=3307;database=Furion;uid=root;pwd=Root@1237890;CharSet=utf8mb4;", "DatabaseType": "MySql", - "LazyLoadingProxiesEnabled": true, "AuditEntityEnabled": true, "AutoMigrationEnabled": true diff --git a/CloudBuilder/Data/20260825.zip b/CloudBuilder/Data/20260825.zip index 733a431..86f5ad9 100644 Binary files a/CloudBuilder/Data/20260825.zip and b/CloudBuilder/Data/20260825.zip differ diff --git a/WebVue/src/router/index.ts b/WebVue/src/router/index.ts index ed2a3af..434b251 100644 --- a/WebVue/src/router/index.ts +++ b/WebVue/src/router/index.ts @@ -63,6 +63,23 @@ export async function setupRouter(app: App) { }, }); } + + // 错误页路由:地址不存在(拼错 / 菜单里没有)时统一跳到 404,不再白屏 + router.addRoute({ + path: "/error/page403", + name: "page403", + component: () => import("@/views/error/page403.vue"), + props: true, + meta: { + title: "页面不存在403", + }, + }); + // catch-all 必须最后注册,匹配所有未定义路径 + router.addRoute({ + path: "/:pathMatch(.*)*", + redirect: "/error/page403", + }); + app.use(router); } export default router; diff --git a/WebVue/src/service/security/localeService.ts b/WebVue/src/service/security/localeService.ts index 272d089..1d17a24 100644 --- a/WebVue/src/service/security/localeService.ts +++ b/WebVue/src/service/security/localeService.ts @@ -88,6 +88,15 @@ class LocaleService{ ) }; + async Copy() { + return request( + { + url: "/Locale/Copy", + method: "get", + } + ) + }; + } const localeService= new LocaleService(); diff --git a/WebVue/src/views/error/page404.vue b/WebVue/src/views/error/page404.vue index 54efa13..7773a83 100644 --- a/WebVue/src/views/error/page404.vue +++ b/WebVue/src/views/error/page404.vue @@ -1,2 +1,2 @@ - + \ No newline at end of file diff --git a/WebVue/src/views/login/index.vue b/WebVue/src/views/login/index.vue index 09ceed1..5d1c650 100644 --- a/WebVue/src/views/login/index.vue +++ b/WebVue/src/views/login/index.vue @@ -20,7 +20,7 @@ {{ t('login.login.login')}} -
+