From 2fd8b654d1eb9f1eb5e1a5537df845752f24726a Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 10 Jul 2026 13:26:19 +0800
Subject: [PATCH] feat(resource): 集成OnlyOffice文档编辑功能

---
 drone-ops/drone-resource/src/main/java/org/sxkj/resource/util/OnlyofficeJwt.java |   55 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 36 insertions(+), 19 deletions(-)

diff --git a/drone-ops/drone-resource/src/main/java/org/sxkj/resource/util/OnlyofficeJwt.java b/drone-ops/drone-resource/src/main/java/org/sxkj/resource/util/OnlyofficeJwt.java
index ee6fd5a..01f247f 100644
--- a/drone-ops/drone-resource/src/main/java/org/sxkj/resource/util/OnlyofficeJwt.java
+++ b/drone-ops/drone-resource/src/main/java/org/sxkj/resource/util/OnlyofficeJwt.java
@@ -3,40 +3,57 @@
 
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.algorithms.Algorithm;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 import java.util.Map;
 
+/**
+ * OnlyOffice JWT令牌生成工具类
+ * <p>
+ * 用于生成OnlyOffice Document Server所需的JWT令牌,
+ * 密钥通过Nacos配置中心统一管理。
+ * </p>
+ *
+ * @author sxkj
+ */
+@Slf4j
+@Component
 public class OnlyofficeJwt {
 
 	/**
-	 * 把jsonObject返回给前端使用
-	 * @return  ztzf-wv5d0-kx5xo-dx2w2-xpx5q
+	 * JWT令牌签名密钥,从Nacos配置读取
 	 */
-	public static Map<String, Object> getToken(Map<String, Object> config){
- 		// String tokenSecret = "ztzf-aisky-kx5xo-dx2w2-xpx5q";
- 		String tokenSecret = "ztzf-wv5d0-kx5xo-dx2w2-xpx5q";
- 		String token = "";
+	@Value("${onlyoffice.token-secret:ztzf-aisky-kx5xo-dx2w2-xpx5q}")
+	private String tokenSecret;
+
+	/**
+	 * 生成JWT令牌并将令牌添加到配置Map中
+	 * <p>
+	 * 使用HMAC256算法对OnlyOffice配置进行签名,
+	 * 生成令牌后将其放入config的token字段。
+	 * </p>
+	 *
+	 * @param config OnlyOffice编辑器配置Map,包含document、editorConfig等信息
+	 * @return 添加了token字段的配置Map
+	 */
+	public Map<String, Object> getToken(Map<String, Object> config) {
+		String token = "";
 		try {
-			// Signer signer = HMACSigner.newSHA256Signer(tokenSecret);
-			// JWT jwt = new JWT();
-			// for (String key : payloadClaims.keySet()) {
-			// 	jwt.addClaim(key, payloadClaims.get(key));
-			// }
-			// token = JWT.getEncoder().encode(jwt, signer);
-
+			// 1. 使用配置的密钥创建HMAC256签名算法
 			Algorithm algorithm = Algorithm.HMAC256(tokenSecret);
-			// Calendar calendar = Calendar.getInstance();
-			// Instant issuedAt = calendar.toInstant();
-			// calendar.add(12, 5);
-			// Instant expiresAt = calendar.toInstant();
-			// token = JWT.create().withIssuedAt(issuedAt).withExpiresAt(expiresAt).withPayload(payloadClaims).sign(algorithm);
 
-			 token = JWT.create()
+			// 2. 基于config负载生成JWT令牌
+			token = JWT.create()
 				.withPayload(config)
 				.sign(algorithm);
 		} catch (Exception e) {
+			log.error("生成OnlyOffice JWT令牌失败: {}", e.getMessage(), e);
 			token = "";
 		}
+
+		// 3. 将生成的令牌放入配置中
 		config.put("token", token);
 		return config;
 	}

--
Gitblit v1.9.3