From ab7f029960fbad61be530d09759f51cd1d01b278 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Mon, 18 May 2026 16:47:36 +0800 Subject: [PATCH] feat(update-service): add PATCH /app/{id}/changelog with audit log Allows editors to update release notes at any time. Every change is recorded in update_operation_log with action CHANGELOG_UPDATE and before/after values in detailJson, satisfying the audit requirement. Co-Authored-By: Claude Sonnet 4.6 --- .../controller/AppVersionController.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java b/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java index c684556..d85cab8 100644 --- a/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java +++ b/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java @@ -384,6 +384,31 @@ public class AppVersionController { } } + @PatchMapping("/app/{id}/changelog") + public ResponseEntity> updateChangeLog( + @PathVariable String id, + @RequestBody Map body) { + AppVersionEntity entity = versionRepository.findById(id).orElseThrow(); + String oldChangeLog = entity.getChangeLog(); + Object raw = body.get("changeLog"); + String newChangeLog = raw != null && !raw.toString().isBlank() ? raw.toString().trim() : null; + entity.setChangeLog(newChangeLog); + AppVersionEntity saved = versionRepository.save(entity); + operationLogService.record( + saved.getAppKey(), + "APP_VERSION", + saved.getId(), + "CHANGELOG_UPDATE", + null, + Map.of( + "versionName", saved.getVersionName(), + "versionCode", saved.getVersionCode(), + "before", oldChangeLog != null ? oldChangeLog : "", + "after", newChangeLog != null ? newChangeLog : "" + )); + return ResponseEntity.ok(ApiResponse.success(saved)); + } + @GetMapping("/app/list") public ResponseEntity>> list( @RequestParam String appKey, @RequestParam AppVersionEntity.Platform platform) {