From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-biz-common/jnpf-biz-common-onlyoffice/src/main/java/jnpf/bizcommon/onlyoffice/controller/OnlyOfficeController.java | 91 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/jnpf-biz-common/jnpf-biz-common-onlyoffice/src/main/java/jnpf/bizcommon/onlyoffice/controller/OnlyOfficeController.java b/jnpf-biz-common/jnpf-biz-common-onlyoffice/src/main/java/jnpf/bizcommon/onlyoffice/controller/OnlyOfficeController.java
new file mode 100644
index 0000000..0c48983
--- /dev/null
+++ b/jnpf-biz-common/jnpf-biz-common-onlyoffice/src/main/java/jnpf/bizcommon/onlyoffice/controller/OnlyOfficeController.java
@@ -0,0 +1,91 @@
+package jnpf.bizcommon.onlyoffice.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.base.ActionResult;
+import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeCallbackParam;
+import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam;
+import jnpf.bizcommon.onlyoffice.service.OnlyOfficeService;
+import jnpf.exception.DataException;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * OnlyOffice 鏂囨。缂栬緫銆傜粡缃戝叧 /api/biz/onlyoffice/**锛圫tripPrefix=2锛夎惤鍒版湰绫汇��
+ *
+ * <p>鈿狅笍 鏈被涓嬬殑绔偣閴存潈褰㈡�佷笉缁熶竴锛屾柊澧炵鐐瑰墠鍏堟兂娓呮灞炰簬鍝竴绫伙細
+ * <ul>
+ * <li>{@code /config} 鈥斺�� 闇�鐧诲綍鎬併�傚畠浼氫笅鍙� securityKey锛�**涓嶅彲鏀捐繘缃戝叧鐧藉悕鍗�**锛�</li>
+ * <li>{@code /callback} 鈥斺�� 鍦ㄧ綉鍏崇櫧鍚嶅崟鍐咃紙骞冲彴琛ヤ竵 #9锛夛紝鍖垮悕鍙揪锛�
+ * 瀹夊叏杈圭晫鏄� OnlyOffice 鍥炶皟 JWT 鐨勯獙绛撅紝瑙侀噷绋嬬 2銆�</li>
+ * </ul>
+ */
+@Slf4j
+@Tag(name = "OnlyOffice 鏂囨。缂栬緫", description = "缂栬緫鍣ㄩ厤缃鍙戜笌淇濆瓨鍥炶皟")
+@RestController
+@RequestMapping("/onlyoffice")
+@RequiredArgsConstructor
+public class OnlyOfficeController {
+
+ private final OnlyOfficeService onlyOfficeService;
+
+ /**
+ * 绛惧彂缂栬緫鍣ㄩ厤缃�傚墠绔嬁杩斿洖鍊肩洿鎺ュ杺 {@code new DocsAPI.DocEditor(id, config)}銆�
+ *
+ * <p>鍏ュ弬閲岀殑 mode 鍙槸鏈熸湜鍊硷細鏍煎紡涓嶅彲缂栬緫銆佷粬浜烘鎸侀攣銆佷笂娆′繚瀛樺け璐ヤ笁绉嶆儏鍐典笅锛�
+ * 鍚庣浼氶檷绾т负鍙锛屼互瀹為檯杩斿洖鐨� editorConfig.mode 涓哄噯銆�
+ */
+ @Operation(summary = "绛惧彂缂栬緫鍣ㄩ厤缃�")
+ @GetMapping("/config")
+ public ActionResult<Map<String, Object>> config(OnlyOfficeConfigParam param) {
+ try {
+ return ActionResult.success(onlyOfficeService.buildEditorConfig(param));
+ } catch (DataException e) {
+ log.warn("绛惧彂 OnlyOffice 閰嶇疆澶辫触锛歿}", e.getMessage());
+ return ActionResult.fail(e.getMessage());
+ }
+ }
+
+ @Operation(summary = "鏌ヨ鏂囨。淇濆瓨鐘舵��")
+ @GetMapping("/save-status")
+ public ActionResult<Map<String, Object>> saveStatus(@RequestParam String fileId) {
+ try {
+ return ActionResult.success(onlyOfficeService.getSaveStatus(fileId));
+ } catch (DataException e) {
+ return ActionResult.fail(e.getMessage());
+ }
+ }
+
+ /**
+ * DS 淇濆瓨鍥炶皟銆�**鍖垮悕鍙揪**锛堣矾寰勫湪缃戝叧鐧藉悕鍗曞唴锛屽钩鍙拌ˉ涓� #9锛夛紝
+ * 瀹夊叏杈圭晫鏄� Service 鍐呭鍥炶皟 JWT 鐨勯獙绛俱��
+ *
+ * <p>杩斿洖鍊兼牸寮忔槸 OnlyOffice 瀹氭鐨� {@code {"error":0}}锛屼笉鑳藉 ActionResult銆�
+ * 涓�**鏃犺澶勭悊鎴愬姛涓庡惁閮借繑鍥� 0**鈥斺�旇繑鍥為潪 0 浼氳 DS 璁や负淇濆瓨澶辫触骞舵棤闄愰噸璇曪紝
+ * 鑰屽鏁板け璐ワ紙浼氳瘽涓嶅瓨鍦ㄣ�侀獙绛句笉杩囷級閲嶈瘯澶氬皯娆¢兘涓嶄細鍙樺ソ銆傜湡姝g殑闂闈犳棩蹇楁毚闇层��
+ */
+ @Operation(summary = "DS 淇濆瓨鍥炶皟")
+ @PostMapping("/callback")
+ public Map<String, Object> callback(@RequestBody OnlyOfficeCallbackParam param,
+ @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authorization) {
+ try {
+ onlyOfficeService.handleCallback(param, authorization);
+ } catch (DataException e) {
+ log.warn("OnlyOffice 鍥炶皟澶勭悊澶辫触锛宬ey={} status={}锛歿}", param.getKey(), param.getStatus(), e.getMessage());
+ } catch (Exception e) {
+ log.error("OnlyOffice 鍥炶皟澶勭悊寮傚父锛宬ey={} status={}", param.getKey(), param.getStatus(), e);
+ }
+ return Collections.singletonMap("error", 0);
+ }
+}
--
Gitblit v1.8.0