diff --git a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeParentScope.java b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeParentScope.java index 0f64642a..6692dc2f 100644 --- a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeParentScope.java +++ b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeParentScope.java @@ -6,19 +6,12 @@ package cn.axzo.nanopart.doc.api.domain; */ public interface IndexNodeParentScope { - default IndexNodeScope nodeScope() { - return IndexNodeScope.ANONYMOUS; - } + IndexNodeScope nodeScope(); default String parentCode() { return ""; } - IndexNodeParentScope TEMPLATE_DATABASE_ROOT = new IndexNodeParentScope() { - @Override - public IndexNodeScope nodeScope() { - return IndexNodeScope.TEMPLATE_DATABASE; - } - }; + IndexNodeParentScope TEMPLATE_DATABASE_ROOT = () -> IndexNodeScope.TEMPLATE_DATABASE; } diff --git a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java index cd2dca85..56ba6b97 100644 --- a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java +++ b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/domain/IndexNodeScope.java @@ -9,14 +9,16 @@ import cn.axzo.nanopart.doc.api.enums.IndexNodeContext; */ public interface IndexNodeScope { - default IndexNodeContext context() { - return IndexNodeContext.NONE; - } + IndexNodeContext context(); default DatabaseScope scope() { return DatabaseScope.NONE; } + default String scopeCode() { + return ""; + } + default boolean isChildrenNameDuplicatable() { switch (context()) { case FILE_TEMPLATE: @@ -24,30 +26,12 @@ public interface IndexNodeScope { case FILE_DATABASE: return false; default: - return scope().isChildrenNameDuplicatable(); + return scope().getChildrenNameDuplicatable(); } } - default String scopeCode() { - return ""; - } + IndexNodeScope FILE_TEMPLATE = () -> IndexNodeContext.FILE_TEMPLATE; - // @formatter:off - IndexNodeScope ANONYMOUS = new IndexNodeScope() {}; - // @formatter:on - - IndexNodeScope FILE_TEMPLATE = new IndexNodeScope() { - @Override - public IndexNodeContext context() { - return IndexNodeContext.FILE_TEMPLATE; - } - }; - - IndexNodeScope TEMPLATE_DATABASE = new IndexNodeScope() { - @Override - public IndexNodeContext context() { - return IndexNodeContext.TEMPLATE_DATABASE; - } - }; + IndexNodeScope TEMPLATE_DATABASE = () -> IndexNodeContext.TEMPLATE_DATABASE; } diff --git a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/DatabaseScope.java b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/DatabaseScope.java index da00b9de..b1963595 100644 --- a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/DatabaseScope.java +++ b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/DatabaseScope.java @@ -1,11 +1,6 @@ package cn.axzo.nanopart.doc.api.enums; -import static java.util.stream.Collectors.toList; - -import java.util.Arrays; -import java.util.List; - import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -16,8 +11,8 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum DatabaseScope { - // 无含义 - NONE(DatabaseType.NONE, true), + // 无含义, 只有系统预定义用途的才能使用这个值 + NONE(DatabaseType.NONE, null), // 匿名数据库 ANONYMOUS(DatabaseType.NONE, true), // 企业数据库 @@ -28,11 +23,6 @@ public enum DatabaseScope { PERSONAL_FOR_ENT(DatabaseType.CREATED_BY_USER_FOR_ENT, false); private final DatabaseType databaseType; - private final boolean childrenNameDuplicatable; + private final Boolean childrenNameDuplicatable; - public static List scopesWithDatabaseTypes() { - return Arrays.stream(values()) // - .filter(scope -> scope.databaseType != DatabaseType.NONE) // - .collect(toList()); - } } diff --git a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/IndexNodeContext.java b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/IndexNodeContext.java index 4248df28..135f4726 100644 --- a/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/IndexNodeContext.java +++ b/doc/doc-api/src/main/java/cn/axzo/nanopart/doc/api/enums/IndexNodeContext.java @@ -6,8 +6,6 @@ package cn.axzo.nanopart.doc.api.enums; */ public enum IndexNodeContext { NONE, - // 系统内置 - SYSTEM, // 文件模版 FILE_TEMPLATE, // 模版数据库 diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/dao/DocLogDao.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/dao/DocLogDao.java index cd5695cf..6f57cc58 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/dao/DocLogDao.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/dao/DocLogDao.java @@ -2,12 +2,15 @@ package cn.axzo.nanopart.doc.dao; import org.springframework.stereotype.Repository; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.support.TransactionTemplate; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.axzo.nanopart.doc.api.util.BizAssertions; import cn.axzo.nanopart.doc.entity.DocLog; import cn.axzo.nanopart.doc.mapper.DocLogMapper; -import cn.axzo.nanopart.doc.api.util.BizAssertions; /** * @author yanglin @@ -15,6 +18,13 @@ import cn.axzo.nanopart.doc.api.util.BizAssertions; @Repository public class DocLogDao extends ServiceImpl { + private final TransactionTemplate newTransaction; + + public DocLogDao(PlatformTransactionManager transactionManager) { + newTransaction = new TransactionTemplate(transactionManager); + newTransaction.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); + } + public void logRequest(String context, Object subject, Object request) { log(context, subject, "request", request); } @@ -35,7 +45,7 @@ public class DocLogDao extends ServiceImpl { log.addLogContent((String) logContents[i], logContents[i + 1]); } } - save(log); + newTransaction.executeWithoutResult(unused -> save(log)); } } diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java index c0adf2a1..d50a156e 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java @@ -230,7 +230,6 @@ public class FileDatabaseService { .in(CollectionUtils.isNotEmpty(searchWorkspaceIds), FileDatabase::getWorkspaceId, searchWorkspaceIds) .in(CollectionUtils.isNotEmpty(seachTemplateDatabaseCodes), FileDatabase::getTemplateDatabaseCode, seachTemplateDatabaseCodes) // .in(CollectionUtils.isNotEmpty(seachScopes), FileDatabase::getScope, seachScopes) - .in(FileDatabase::getScope, DatabaseScope.scopesWithDatabaseTypes()) .orderByDesc(FileDatabase::getId) .page(request.toPage()); // @formatter:on diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseManager.java index 534cc36e..a03c63ca 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseManager.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.doc.file.templatedb; +import cn.axzo.nanopart.doc.api.enums.DatabaseType; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -37,6 +38,7 @@ public class TemplateDatabaseManager { @BizTransactional public String createDatabase(TemplateDatabaseCreateDatabaseRequest request) { + BizAssertions.assertNotEquals(DatabaseType.NONE, request.getScope().getDatabaseType(), "不能添加数据库类型不能为空的scope"); request.setParentCode(""); IndexNode indexNode = indexManager.createDatabase(request); TemplateDatabase db = new TemplateDatabase();