From 09eb0c6c3cb2c2a5b2e422b49e9d84de2f92258f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E8=BE=89?= Date: Mon, 12 Apr 2021 15:54:32 +0800 Subject: [PATCH] =?UTF-8?q?fix=20push.doc=20=E4=BC=9A=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=88=B6=E7=B1=BBdocInfo=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=AD=90?= =?UTF-8?q?=E7=B1=BB=E6=97=A0=E6=B3=95=E6=9F=A5=E7=9C=8B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/torna/api/open/DocApi.java | 8 +++++++- .../main/java/cn/torna/service/DocInfoService.java | 12 +++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/server/server-api/src/main/java/cn/torna/api/open/DocApi.java b/server/server-api/src/main/java/cn/torna/api/open/DocApi.java index e0dd6552..ac491af3 100644 --- a/server/server-api/src/main/java/cn/torna/api/open/DocApi.java +++ b/server/server-api/src/main/java/cn/torna/api/open/DocApi.java @@ -36,6 +36,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * @author tanghc @@ -75,6 +78,9 @@ public class DocApi { String token = context.getToken(); long moduleId = context.getModuleId(); log.info("收到文档推送,appKey:{}, token:{}, moduleId:{}", appKey, token, moduleId); + Set parentIds = param.getApis().parallelStream().map(DocPushItemParam::getParentId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); tornaTransactionManager.execute(() -> { // fix:MySQL多个session下insert on duplicate key update导致死锁问题 // https://blog.csdn.net/li563868273/article/details/105213266/ @@ -86,7 +92,7 @@ public class DocApi { } // 先删除之前的文档 User user = context.getApiUser(); - docInfoService.deleteModuleDocs(moduleId, user.getUserId()); + docInfoService.deleteModuleDocs(moduleId, user.getUserId(), parentIds); for (DocPushItemParam detailPushParam : param.getApis()) { this.pushDocItem(detailPushParam, context); } diff --git a/server/server-service/src/main/java/cn/torna/service/DocInfoService.java b/server/server-service/src/main/java/cn/torna/service/DocInfoService.java index fc93e86d..4abec44c 100755 --- a/server/server-service/src/main/java/cn/torna/service/DocInfoService.java +++ b/server/server-service/src/main/java/cn/torna/service/DocInfoService.java @@ -29,6 +29,7 @@ import org.springframework.util.CollectionUtils; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -298,14 +299,19 @@ public class DocInfoService extends BaseService { /** * 删除模块下所有文档 - * @param moduleId 模块id - * @param userId 用户id,只能删除自己创建的 + * + * @param moduleId 模块id + * @param userId 用户id,只能删除自己创建的 + * @param parentIds 父级文档id列表 */ - public void deleteModuleDocs(long moduleId, long userId) { + public void deleteModuleDocs(long moduleId, long userId, Set parentIds) { Query query = new Query() .eq("module_id", moduleId) .eq("create_mode", OperationMode.OPEN.getType()) .eq("creator_id", userId); + if (parentIds != null && parentIds.size() > 0) { + query.notIn("id", parentIds); + } this.getMapper().deleteByQuery(query); } } \ No newline at end of file -- Gitee