From 35245b1a5dec7897935d3057d32677f618889ff4 Mon Sep 17 00:00:00 2001
From: cwchen <1048842385@qq.com>
Date: Tue, 4 Nov 2025 13:24:33 +0800
Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=9B=86=E6=88=90=20onlyoffi?=
=?UTF-8?q?ce?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bonus-admin/pom.xml | 6 +
.../controller/common/DocumentController.java | 47 ++++
.../src/main/resources/application-file.yml | 15 +-
bonus-analysis/pom.xml | 27 +++
.../java/com/bonus/analysis/service/test.java | 11 +
bonus-common/pom.xml | 11 +
.../common/domain/file/dto/OnlyOfficeDto.java | 20 ++
.../common/domain/file/vo/DocumentInfo.java | 23 ++
.../domain/file/vo/OnlyOfficeCallback.java | 32 +++
.../java/com/bonus/common/utils/FileUtil.java | 29 +++
.../bonus/file/config/OnlyOfficeConfig.java | 30 +++
.../bonus/file/service/FileUploadService.java | 6 +
.../file/service/OnlyOfficeJwtService.java | 41 ++++
.../bonus/file/service/OnlyOfficeService.java | 217 ++++++++++++++++++
.../framework/config/SecurityConfig.java | 2 +-
.../interceptor/ParamSecureHandler.java | 4 +-
.../interceptor/XssRequestWrapper.java | 8 +-
pom.xml | 10 +
18 files changed, 531 insertions(+), 8 deletions(-)
create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/common/DocumentController.java
create mode 100644 bonus-analysis/pom.xml
create mode 100644 bonus-analysis/src/main/java/com/bonus/analysis/service/test.java
create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/file/dto/OnlyOfficeDto.java
create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/file/vo/DocumentInfo.java
create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/file/vo/OnlyOfficeCallback.java
create mode 100644 bonus-file/src/main/java/com/bonus/file/config/OnlyOfficeConfig.java
create mode 100644 bonus-file/src/main/java/com/bonus/file/service/OnlyOfficeJwtService.java
create mode 100644 bonus-file/src/main/java/com/bonus/file/service/OnlyOfficeService.java
diff --git a/bonus-admin/pom.xml b/bonus-admin/pom.xml
index 9a4bc46..ded1ff1 100644
--- a/bonus-admin/pom.xml
+++ b/bonus-admin/pom.xml
@@ -92,6 +92,12 @@
bonus-template
+
+
+ com.bonus
+ bonus-analysis
+
+
diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/common/DocumentController.java b/bonus-admin/src/main/java/com/bonus/web/controller/common/DocumentController.java
new file mode 100644
index 0000000..87e1ee1
--- /dev/null
+++ b/bonus-admin/src/main/java/com/bonus/web/controller/common/DocumentController.java
@@ -0,0 +1,47 @@
+package com.bonus.web.controller.common;
+
+import com.bonus.common.core.domain.AjaxResult;
+import com.bonus.common.domain.file.vo.OnlyOfficeCallback;
+import com.bonus.file.service.OnlyOfficeService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/documents")
+@CrossOrigin(origins = "*")
+public class DocumentController {
+
+ @Resource(name = "OnlyOfficeService")
+ private OnlyOfficeService onlyOfficeService;
+
+
+ @GetMapping("/config")
+ public AjaxResult getEditorConfig(
+ @RequestParam String fileId,
+ @RequestParam String fileName,
+ @RequestParam(defaultValue = "view") String mode) {
+ try {
+ Map config = onlyOfficeService.getConfigWithToken(fileId, fileName, mode);
+// String token = onlyOfficeService.getConfigWithToken(fileId, fileName, mode);
+// Map response = new HashMap<>();
+// response.put("token", token);
+ return AjaxResult.success(config);
+ } catch (Exception e) {
+ return AjaxResult.error();
+ }
+ }
+
+ @PostMapping("/callback")
+ public AjaxResult handleCallback(@RequestBody OnlyOfficeCallback callback) {
+ try {
+ onlyOfficeService.handleCallback(callback);
+ return AjaxResult.success();
+ } catch (Exception e) {
+ return AjaxResult.error();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/bonus-admin/src/main/resources/application-file.yml b/bonus-admin/src/main/resources/application-file.yml
index 7995e7f..ba3ee82 100644
--- a/bonus-admin/src/main/resources/application-file.yml
+++ b/bonus-admin/src/main/resources/application-file.yml
@@ -4,4 +4,17 @@ minio:
endpoint: http://192.168.0.14:9090
access-key: minio
secret-key: bonus@admin123
- bucket-name: smart-bid
\ No newline at end of file
+ bucket-name: smart-bid
+
+# onlyoffice配置
+onlyoffice:
+ document-server: http://192.168.0.14:19840/
+ secret: N9yleoAAnWNo4VY4Dpe0ihH02LpQOigz
+ jwt-enabled: false
+
+#minio:
+# url: http://127.0.0.1:9005
+# endpoint: http://127.0.0.1:9005
+# access-key: name
+# secret-key: password
+# bucket-name: smart-bid
\ No newline at end of file
diff --git a/bonus-analysis/pom.xml b/bonus-analysis/pom.xml
new file mode 100644
index 0000000..6c4e7f9
--- /dev/null
+++ b/bonus-analysis/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ com.bonus
+ bonus
+ 3.9.0
+
+
+ bonus-analysis
+
+ 招标解析
+
+
+
+
+
+
+
+ com.bonus
+ bonus-common
+
+
+
+
\ No newline at end of file
diff --git a/bonus-analysis/src/main/java/com/bonus/analysis/service/test.java b/bonus-analysis/src/main/java/com/bonus/analysis/service/test.java
new file mode 100644
index 0000000..8ad4caf
--- /dev/null
+++ b/bonus-analysis/src/main/java/com/bonus/analysis/service/test.java
@@ -0,0 +1,11 @@
+package com.bonus.analysis.service;
+
+/**
+ * @className:test
+ * @author:cwchen
+ * @date:2025-11-03-14:57
+ * @version:1.0
+ * @description:
+ */
+public class test {
+}
diff --git a/bonus-common/pom.xml b/bonus-common/pom.xml
index 8751569..31729b1 100644
--- a/bonus-common/pom.xml
+++ b/bonus-common/pom.xml
@@ -187,6 +187,17 @@
${minio.version}
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
+
+
+ io.jsonwebtoken
+ jjwt
+ ${io.jsonwebtoken.version}
+
\ No newline at end of file
diff --git a/bonus-common/src/main/java/com/bonus/common/domain/file/dto/OnlyOfficeDto.java b/bonus-common/src/main/java/com/bonus/common/domain/file/dto/OnlyOfficeDto.java
new file mode 100644
index 0000000..bb6c5b1
--- /dev/null
+++ b/bonus-common/src/main/java/com/bonus/common/domain/file/dto/OnlyOfficeDto.java
@@ -0,0 +1,20 @@
+package com.bonus.common.domain.file.dto;
+
+import lombok.Data;
+
+/**
+ * @className:OnlyOfficeDto
+ * @author:cwchen
+ * @date:2025-11-03-16:28
+ * @version:1.0
+ * @description:onlyoffice-文件预览、编辑dto
+ */
+@Data
+public class OnlyOfficeDto {
+
+ private String fileId;
+ /**模式*/
+ private String fileName;
+ /**模式 view-预览 edit编辑*/
+ private String mode = "view";
+}
diff --git a/bonus-common/src/main/java/com/bonus/common/domain/file/vo/DocumentInfo.java b/bonus-common/src/main/java/com/bonus/common/domain/file/vo/DocumentInfo.java
new file mode 100644
index 0000000..fef9698
--- /dev/null
+++ b/bonus-common/src/main/java/com/bonus/common/domain/file/vo/DocumentInfo.java
@@ -0,0 +1,23 @@
+package com.bonus.common.domain.file.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @className:DocumentInfo
+ * @author:cwchen
+ * @date:2025-11-04-9:28
+ * @version:1.0
+ * @description: onlyoffice
+ */
+@Data
+public class DocumentInfo {
+ private String id;
+ private String name;
+ private String originalName;
+ private Long size;
+ private String contentType;
+ private Date uploadTime;
+ private Date lastModified;
+}
diff --git a/bonus-common/src/main/java/com/bonus/common/domain/file/vo/OnlyOfficeCallback.java b/bonus-common/src/main/java/com/bonus/common/domain/file/vo/OnlyOfficeCallback.java
new file mode 100644
index 0000000..d79230c
--- /dev/null
+++ b/bonus-common/src/main/java/com/bonus/common/domain/file/vo/OnlyOfficeCallback.java
@@ -0,0 +1,32 @@
+package com.bonus.common.domain.file.vo;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @className: OnlyOfficeCallback
+ * @author: cwchen
+ * @date: 2025-11-03-16:20
+ * @version: 1.0
+ * @description: onlyoffice文件预览回调实体类
+ */
+@Data
+public class OnlyOfficeCallback {
+ private Integer status;
+ private String key;
+ private String url;
+ private List