From bbfb6ea88d32609ec06c24854456ab0c12091048 Mon Sep 17 00:00:00 2001 From: wangqiong <1322446236@qq.com> Date: Mon, 29 Apr 2024 16:36:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=8F=E5=90=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=9F=A5=E7=9C=8B=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=8F=AA?= =?UTF-8?q?=E8=AF=BB=E7=94=A8=E6=88=B7=E5=8F=AF=E4=BB=A5=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=BC=96=E8=BE=91=E7=94=A8=E6=88=B7=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/impl/OnlyServiceAPIImpl.java | 24 +++++++++++++------ .../oo/onlyoffice/core/FileConfigFactory.java | 17 ++++++++----- .../core/handler/FileHandlerImpl.java | 19 +++++++++++++-- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/oo/onlyoffice/api/impl/OnlyServiceAPIImpl.java b/src/main/java/com/oo/onlyoffice/api/impl/OnlyServiceAPIImpl.java index a9c5360..492d52a 100644 --- a/src/main/java/com/oo/onlyoffice/api/impl/OnlyServiceAPIImpl.java +++ b/src/main/java/com/oo/onlyoffice/api/impl/OnlyServiceAPIImpl.java @@ -81,29 +81,39 @@ public class OnlyServiceAPIImpl implements OnlyServiceAPI { return documentEdit(map, collaborativeEditing, clientType); } if (VIEW.equals(mode)) { - return documentView(map, clientType); + return documentView(map, collaborativeEditing, clientType); } +// if (VIEW.equals(mode)) { +// return documentView(map, clientType); +// } return null; } private Map documentEdit(Map map, boolean collaborativeEditing, String clientType) { - FileConfig fileConfigDTO = openEditConfig(map, "edit", collaborativeEditing,clientType); + FileConfig fileConfigDTO = openEditConfig(map, "edit", collaborativeEditing, clientType); String json = JSON.toJSONString(fileConfigDTO); Map config = JSON.parseObject(json, Map.class); config.put("type", clientType); return config; } - - private Map documentView(Map map,String clientType) { - FileConfig fileConfigDTO = openEditConfig(map, "view", false,clientType); + private Map documentView(Map map, boolean collaborativeEditing, String clientType) { + FileConfig fileConfigDTO = openEditConfig(map, "view", collaborativeEditing, clientType); String json = JSON.toJSONString(fileConfigDTO); Map config = JSON.parseObject(json, Map.class); config.put("type", clientType); return config; } - private FileConfig openEditConfig(Map map, String mode, boolean collaborativeEditing,String clientType) { + private Map documentView(Map map, String clientType) { + FileConfig fileConfigDTO = openEditConfig(map, "view", false, clientType); + String json = JSON.toJSONString(fileConfigDTO); + Map config = JSON.parseObject(json, Map.class); + config.put("type", clientType); + return config; + } + + private FileConfig openEditConfig(Map map, String mode, boolean collaborativeEditing, String clientType) { try { map.put("mode", mode); log.info("开始生成文件信息"); @@ -111,7 +121,7 @@ public class OnlyServiceAPIImpl implements OnlyServiceAPI { FileMetadata tempFileInfo = fileHandler.handlerFile(map, collaborativeEditing); //生成配置文件 TODO: 控制文件权限 log.info("开始生成编辑器配置信息"); - FileConfig fileConfigDTO = onlyOfficeConfigFactory.buildInitConfig(tempFileInfo.getUrl(), mode, tempFileInfo.getKey(), tempFileInfo.getOldName(),clientType); + FileConfig fileConfigDTO = onlyOfficeConfigFactory.buildInitConfig(tempFileInfo.getUrl(), mode, tempFileInfo.getKey(), tempFileInfo.getOldName(), clientType); log.info("生成编辑器配置信息结束"); // TODO: 添加更多详细的自定义信息 return fileConfigDTO; diff --git a/src/main/java/com/oo/onlyoffice/core/FileConfigFactory.java b/src/main/java/com/oo/onlyoffice/core/FileConfigFactory.java index 7bc0f5f..08f0c37 100644 --- a/src/main/java/com/oo/onlyoffice/core/FileConfigFactory.java +++ b/src/main/java/com/oo/onlyoffice/core/FileConfigFactory.java @@ -1,6 +1,7 @@ package com.oo.onlyoffice.core; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSONObject; import com.oo.onlyoffice.config.OnlyProperties; import com.oo.onlyoffice.dto.DocumentConfig; import com.oo.onlyoffice.dto.EditorConfig; @@ -43,7 +44,7 @@ public class FileConfigFactory implements OnlyOfficeConfigFactory { * @return 配置信息 */ @Override - public FileConfig buildInitConfig(String fileUrl, String mode, String key, String fileName,String clientType) { + public FileConfig buildInitConfig(String fileUrl, String mode, String key, String fileName, String clientType) { Map map = new HashMap<>(); @@ -74,11 +75,15 @@ public class FileConfigFactory implements OnlyOfficeConfigFactory { String callBackUrl = onlyProperties.getLocalhostAddress() + onlyProperties.getCallBackUrl(); EditorConfig editorConfig = new EditorConfig(callBackUrl, mode); - editorConfig.setFileCustomization(getFileCustomization(mode,clientType)); + editorConfig.setFileCustomization(getFileCustomization(mode, clientType)); editorConfig.setFileUser(user); editorConfig.setPlugins(getPlugins()); - - + //共同编辑"coEditing"配置: + // "coEditing": { "mode": "fast","change": true} + JSONObject coEditing = new JSONObject(); + coEditing.put("mode", "fast"); + coEditing.put("change", "true"); + editorConfig.setCoEditing(coEditing); fileConfigDTO.setEditorConfig(editorConfig); map.put("editorConfig", editorConfig); @@ -112,13 +117,13 @@ public class FileConfigFactory implements OnlyOfficeConfigFactory { return LoadConfigUtil.getCustomization(); } - private FileCustomization getFileCustomization(String mode,String clientType) { + private FileCustomization getFileCustomization(String mode, String clientType) { FileCustomization customization = LoadConfigUtil.getCustomization(); if (mode != null && !(mode.trim()).equals("") && mode.equals("edit")) { customization.setAutosave(true); } customization.setMobileForceView(false); - if(clientType!=null&&clientType!=""&&"mobile".equals(clientType)){ + if (clientType != null && clientType != "" && "mobile".equals(clientType)) { customization.setMobileForceView(true); } return customization; diff --git a/src/main/java/com/oo/onlyoffice/core/handler/FileHandlerImpl.java b/src/main/java/com/oo/onlyoffice/core/handler/FileHandlerImpl.java index 2df5dc8..efcbff4 100644 --- a/src/main/java/com/oo/onlyoffice/core/handler/FileHandlerImpl.java +++ b/src/main/java/com/oo/onlyoffice/core/handler/FileHandlerImpl.java @@ -77,8 +77,23 @@ public class FileHandlerImpl implements FileHandler { cache.set(user.getId() + "_" + id, key); cache.set("getID_" + key, id); } - } else {//查看模式 - key = id; + } else { + //查看模式 + if (collaborativeEditing) { + if (cache.get("collaborativeEditing_" + id) != null) { + key = (String) cache.get("collaborativeEditing_" + id); + } else { + key = IdUtil.simpleUUID(); + cache.set("collaborativeEditing_" + id, key); + cache.set("getID_" + key, id); + } + } else { + key = IdUtil.simpleUUID(); + FileUser user = SecurityUtils.getUserSession(); + cache.set(user.getId() + "_" + id, key); + cache.set("getID_" + key, id); + } + // key = id; }