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 fbdb923..fbbbdf9 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 @@ -164,10 +164,7 @@ public class AppController { public ResponseEntity downloadLicenseFile(@PathVariable String appKey, @AuthenticationPrincipal String tenantId) { AppEntity app = appService.getByAppKey(appKey, tenantId); - String encrypted = app.getLicenseFileContent(); - if (encrypted == null || encrypted.isBlank()) { - throw new BusinessException("License file not generated yet"); - } + String encrypted = appService.ensureLicenseFile(appKey, tenantId); String filename = sanitizeFileName(app.getName()) + ".xuqmlicense"; return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) 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 471506a..b1fa780 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 @@ -12,6 +12,7 @@ import com.xuqm.tenant.config.PrivateDeploymentProperties; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.security.SecureRandom; import java.time.LocalDateTime; @@ -89,6 +90,18 @@ public class AppService { return saved; } + @Transactional + public String ensureLicenseFile(String appKey, String tenantId) { + AppEntity app = getByAppKey(appKey, tenantId); + String content = app.getLicenseFileContent(); + if (content == null || content.isBlank()) { + content = generateLicenseFileContent(app); + app.setLicenseFileContent(content); + appRepository.save(app); + } + return content; + } + public AppEntity update(String appKey, String tenantId, CreateAppRequest req) { AppEntity app = getByAppKey(appKey, tenantId); Map before = new LinkedHashMap<>();