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 7dd3cf9851b87ae31dd6adc96332d36f14d8e0fe..5e7b7733ca73d7f6f81c71eb5b8aff4cb6232d76 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 @@ -33,6 +33,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 @@ -67,6 +70,8 @@ public class DocApi { String token = context.getToken(); log.info("收到文档推送,appKey:{}, token:{}", appKey, token); long moduleId = context.getModuleId(); + Set parentIds = param.getApis().parallelStream().map(DocPushItemParam::getParentId) + .filter(Objects::nonNull).collect(Collectors.toSet()); tornaTransactionManager.execute(() -> { // 设置调试环境 for (DebugEnvParam debugEnv : param.getDebugEnvs()) { @@ -74,7 +79,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 e9f3867ea74b103aacec04ce33dd69d6a463fc72..d1f0251cf58e9ea536d6b61c1a143771171f12b0 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; /** @@ -296,12 +297,16 @@ public class DocInfoService extends BaseService { * 删除模块下所有文档 * @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