diff --git a/tenant-service/src/main/java/com/xuqm/tenant/controller/AppController.java b/tenant-service/src/main/java/com/xuqm/tenant/controller/AppController.java index 1b6acf8..2a5ecbd 100644 --- a/tenant-service/src/main/java/com/xuqm/tenant/controller/AppController.java +++ b/tenant-service/src/main/java/com/xuqm/tenant/controller/AppController.java @@ -182,6 +182,13 @@ public class AppController { .body(encrypted.getBytes(java.nio.charset.StandardCharsets.UTF_8)); } + @PostMapping("/{appKey}/config-file/regenerate") + public ResponseEntity> regenerateConfigFile(@PathVariable String appKey, + @AuthenticationPrincipal String tenantId) { + appService.regenerateConfigFile(appKey, tenantId); + return ResponseEntity.ok(ApiResponse.ok()); + } + /** * Parse an uploaded config file and return its decrypted contents. * Used by the security center to verify config file information. diff --git a/tenant-service/src/main/java/com/xuqm/tenant/service/AppService.java b/tenant-service/src/main/java/com/xuqm/tenant/service/AppService.java index 4e33183..1dd1227 100644 --- a/tenant-service/src/main/java/com/xuqm/tenant/service/AppService.java +++ b/tenant-service/src/main/java/com/xuqm/tenant/service/AppService.java @@ -100,6 +100,18 @@ public class AppService { return content; } + @Transactional + public String regenerateConfigFile(String appKey, String tenantId) { + AppEntity app = getByAppKey(appKey, tenantId); + String content = generateConfigFileContent(app); + app.setConfigFileContent(content); + appRepository.save(app); + operationLogService.record(tenantId, "APP", "APP", appKey, "REGENERATE_CONFIG", + "重新生成应用「" + app.getName() + "」的 Config 文件", + Map.of("name", app.getName())); + return content; + } + public AppEntity update(String appKey, String tenantId, CreateAppRequest req) { AppEntity app = getByAppKey(appKey, tenantId); Map before = new LinkedHashMap<>();