REQ-3540: 拷贝匿名空间节点

This commit is contained in:
yanglin 2025-03-27 15:46:17 +08:00
parent ff7f093d68
commit ebef16b5c2
2 changed files with 8 additions and 7 deletions

View File

@ -19,9 +19,10 @@ import cn.axzo.nanopart.doc.mapper.FileDatabaseMapper;
@Repository
public class FileDatabaseDao extends ServiceImpl<FileDatabaseMapper, FileDatabase> {
public FileDatabase findForUpdateOrNull(DatabaseScope scope, String scopeUniqueCode) {
public FileDatabase findForUpdateOrNull(DatabaseScope scope, String templateDatabaseCode, String scopeUniqueCode) {
return lambdaQuery() //
.eq(FileDatabase::getScope, scope) //
.eq(FileDatabase::getTemplateDatabaseCode, templateDatabaseCode) //
.eq(FileDatabase::getScopeUniqueCode, scopeUniqueCode) //
.last("FOR UPDATE") //
.one();

View File

@ -88,19 +88,19 @@ public class FileDatabaseService {
private FileDatabase addWorkspace0(FileDatabaseAddWorkspaceRequest request) {
String scopeUniqueCode = String.valueOf(request.getWorkspaceId());
TemplateDatabase templateDatabase = templateDatabaseQueryService.getOrThrow(request.getTemplateDatabaseCode());
FileDatabase savedDb = fileDatabaseDao.findForUpdateOrNull(templateDatabase.getScope(), scopeUniqueCode);
TemplateDatabase templateDb = templateDatabaseQueryService.getOrThrow(request.getTemplateDatabaseCode());
FileDatabase savedDb = fileDatabaseDao.findForUpdateOrNull(templateDb.getScope(), templateDb.getCode(),
scopeUniqueCode);
if (savedDb != null)
throw new FileDatabaseExistsException("无法重复创建, 请刷新页面查询已创建的记录");
SimpleWorkspaceRes workspace = RpcExternalUtil.rpcApolloProcessor(
() -> workspaceApi.getOne(request.getWorkspaceId()), "查询租户", request.getWorkspaceId());
BizAssertions.assertNotNull(workspace, "找不到对应的租户");
BizAssertions.assertEquals(workspace.getType(), templateDatabase.getScope().getWorkspaceType(),
"请求租户类型和资料库的租户类型不匹配");
BizAssertions.assertEquals(workspace.getType(), templateDb.getScope().getWorkspaceType(), "请求租户类型和资料库的租户类型不匹配");
FileDatabase db = new FileDatabase();
db.setCode(UUIDUtil.uuidString());
db.setTemplateDatabaseCode(templateDatabase.getCode());
db.setScope(templateDatabase.getScope());
db.setTemplateDatabaseCode(templateDb.getCode());
db.setScope(templateDb.getScope());
db.setScopeUniqueCode(scopeUniqueCode);
db.setWorkspaceId(request.getWorkspaceId());
db.setState(FileDatabaseState.ACTIVATING);