REQ-3540: 添加接口
This commit is contained in:
parent
e8e70bb439
commit
a73216932b
@ -3,6 +3,7 @@ package cn.axzo.nanopart.doc.api.filedb;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseAbortRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseRenewRequest;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -35,6 +36,12 @@ public interface FileDatabaseApi {
|
||||
@PostMapping("/api/fileDatabase/active")
|
||||
CommonResponse<Void> active(@RequestBody @Valid FileDatabaseActiveRequest request);
|
||||
|
||||
/**
|
||||
* 驳回
|
||||
*/
|
||||
@PostMapping("/api/fileDatabase/reject")
|
||||
CommonResponse<Void> reject(@RequestBody @Valid FileDatabaseAbortRequest request);
|
||||
|
||||
/**
|
||||
* 扩容
|
||||
*/
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class FileDatabaseAbortRequest {
|
||||
/**
|
||||
* 资料库code
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,11 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.filedb.response;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.enums.DatabaseType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -18,6 +21,11 @@ public class FileDatabaseInfoResponse {
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 资料库类型. CREATED_BY_SYSTEM: 平台资料库, CREATED_BY_USER_FOR_ENT: 专属资料库
|
||||
*/
|
||||
private DatabaseType databaseType;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
@ -28,6 +36,16 @@ public class FileDatabaseInfoResponse {
|
||||
*/
|
||||
private String workspaceName;
|
||||
|
||||
/**
|
||||
* 租房类型. 1: 单位, 2: 项目
|
||||
*/
|
||||
private Integer workspaceType;
|
||||
|
||||
/**
|
||||
* 租户注册时间, unix时间戳
|
||||
*/
|
||||
private Long workspaceRegisterTimeMs;
|
||||
|
||||
/**
|
||||
* 状态. ACTIVATING: 开通中, ACTIVATED: 已开通, EXPIRED: 已到期
|
||||
*/
|
||||
@ -53,6 +71,11 @@ public class FileDatabaseInfoResponse {
|
||||
*/
|
||||
private Integer usedCapacity;
|
||||
|
||||
/**
|
||||
* 资料库信息
|
||||
*/
|
||||
private TemplateDatabaseInfo databaseInfo;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
|
||||
@ -5,7 +5,7 @@ import java.util.List;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.DatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseSearchRequest;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -103,7 +103,7 @@ public interface TemplateDatabaseApi {
|
||||
* 搜索资料库
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/searchDatabase")
|
||||
CommonResponse<Page<DatabaseInfo>> searchDatabase(@RequestBody @Valid TemplateDatabaseSearchRequest request);
|
||||
CommonResponse<Page<TemplateDatabaseInfo>> searchDatabase(@RequestBody @Valid TemplateDatabaseSearchRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 获取资料库或文件夹信息
|
||||
|
||||
@ -12,7 +12,7 @@ import lombok.Setter;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class DatabaseInfo {
|
||||
public class TemplateDatabaseInfo {
|
||||
|
||||
/**
|
||||
* 资料库名称
|
||||
@ -0,0 +1,24 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class TemplateDatabaseInfos {
|
||||
|
||||
private final List<TemplateDatabaseInfo> templateDatabaseInfos;
|
||||
|
||||
public static TemplateDatabaseInfos wrap(List<TemplateDatabaseInfo> databaseInfos) {
|
||||
return new TemplateDatabaseInfos(databaseInfos);
|
||||
}
|
||||
|
||||
public TemplateDatabaseInfo findOrNull(String code) {
|
||||
return templateDatabaseInfos.stream().filter(d -> d.getCode().equals(code)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.filedb;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseAbortRequest;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.filedb.FileDatabaseApi;
|
||||
@ -40,6 +41,13 @@ public class FileDatabaseApiController implements FileDatabaseApi {
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> reject(FileDatabaseAbortRequest request) {
|
||||
log.info("reject workspace: {}", request);
|
||||
fileDatabaseService.reject(request);
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> expandCapacity(FileDatabaseExpandCapacityRequest request) {
|
||||
log.info("expand capacity: {}", request);
|
||||
|
||||
@ -27,6 +27,7 @@ import cn.axzo.nanopart.doc.api.enums.DatabaseScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.DatabaseType;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseAbortRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseActiveRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseAddWorkspaceRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseExpandCapacityRequest;
|
||||
@ -34,6 +35,7 @@ import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseRemoveRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseRenewRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.response.FileDatabaseInfoResponse;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfos;
|
||||
import cn.axzo.nanopart.doc.api.util.BizAssertions;
|
||||
import cn.axzo.nanopart.doc.api.util.UUIDUtil;
|
||||
import cn.axzo.nanopart.doc.dao.DocLogDao;
|
||||
@ -46,7 +48,7 @@ import cn.axzo.nanopart.doc.file.index.IndexQueryService;
|
||||
import cn.axzo.nanopart.doc.file.index.copy.CopiedOssFiles;
|
||||
import cn.axzo.nanopart.doc.file.index.copy.SetScopeCopyFileVisitor;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.IndexNodes;
|
||||
import cn.axzo.nanopart.doc.file.templatedb.TemplateDatabaseManager;
|
||||
import cn.axzo.nanopart.doc.file.templatedb.TemplateDatabaseQueryService;
|
||||
import cn.axzo.nanopart.doc.utils.AsyncUtils;
|
||||
import cn.axzo.nanopart.doc.utils.BizTransactional;
|
||||
import cn.axzo.nanopart.doc.utils.RpcExternalUtil;
|
||||
@ -61,7 +63,7 @@ import lombok.RequiredArgsConstructor;
|
||||
public class FileDatabaseService {
|
||||
|
||||
private final FileDatabaseDao fileDatabaseDao;
|
||||
private final TemplateDatabaseManager templateDatabaseManager;
|
||||
private final TemplateDatabaseQueryService templateDatabaseQueryService;
|
||||
private final WorkspaceApi workspaceApi;
|
||||
private final IndexQueryService indexQueryService;
|
||||
private final IndexManager indexManager;
|
||||
@ -73,7 +75,7 @@ public class FileDatabaseService {
|
||||
public void addWorkspace(FileDatabaseAddWorkspaceRequest request) {
|
||||
docLogDao.logRequest("addWorkspace", request.getWorkspaceId(), request);
|
||||
String scopeUniqueCode = String.valueOf(request.getWorkspaceId());
|
||||
TemplateDatabase templateDatabase = templateDatabaseManager.getOrThrow(request.getTemplateDatabaseCode());
|
||||
TemplateDatabase templateDatabase = templateDatabaseQueryService.getOrThrow(request.getTemplateDatabaseCode());
|
||||
FileDatabase savedDb = fileDatabaseDao.findForUpdateOrNull(templateDatabase.getScope(), scopeUniqueCode);
|
||||
if (savedDb != null)
|
||||
throw fail("无法重复创建, 请刷新页面查询已创建的记录");
|
||||
@ -83,7 +85,7 @@ public class FileDatabaseService {
|
||||
db.setScope(templateDatabase.getScope());
|
||||
db.setScopeUniqueCode(scopeUniqueCode);
|
||||
db.setWorkspaceId(request.getWorkspaceId());
|
||||
db.setState(FileDatabaseState.ACTIVATING);
|
||||
db.setState(FileDatabaseState.ACTIVATED);
|
||||
db.setExpireDate(new Date(request.getExpiredDateMs()));
|
||||
db.setAllowedCapacity(request.getAllowedCapacity());
|
||||
db.setUsedCapacity(0);
|
||||
@ -113,6 +115,10 @@ public class FileDatabaseService {
|
||||
asyncUtils.getOrTimeout(future, "激活等待超时, 激活任务在后台运行, 请稍后刷新查看");
|
||||
}
|
||||
|
||||
void reject(FileDatabaseAbortRequest request) {
|
||||
fileDatabaseDao.deleteByCode(request.getCode());
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public void fileSizeChanged(String indexNodeCode) {
|
||||
IndexNode indexNode = indexManager.findOrNull(indexNodeCode);
|
||||
@ -198,6 +204,8 @@ public class FileDatabaseService {
|
||||
.page(request.toPage());
|
||||
// @formatter:on
|
||||
IndexNodes indexNodes = IndexNodes.wrap(indexQueryService.get(page.getRecords()));
|
||||
TemplateDatabaseInfos templateDatabaseInfos = TemplateDatabaseInfos.wrap(
|
||||
templateDatabaseQueryService.toTemplateDatabaseInfo(templateDatabaseQueryService.get(page.getRecords())));
|
||||
Map<Long, SimpleWorkspaceRes> id2Workspace = new HashMap<>();
|
||||
List<Long> resultWorkspaceIds = page.getRecords().stream() //
|
||||
.map(FileDatabase::getWorkspaceId) //
|
||||
@ -217,6 +225,11 @@ public class FileDatabaseService {
|
||||
resp.setCode(db.getCode());
|
||||
resp.setWorkspaceId(db.getWorkspaceId());
|
||||
resp.setWorkspaceName(workspace == null ? "" : workspace.getName());
|
||||
resp.setWorkspaceType(workspace == null ? null : workspace.getType());
|
||||
resp.setWorkspaceRegisterTimeMs(
|
||||
workspace != null && workspace.getCreateAt() != null ? workspace.getCreateAt().getTime()
|
||||
: null);
|
||||
resp.setDatabaseInfo(templateDatabaseInfos.findOrNull(db.getTemplateDatabaseCode()));
|
||||
resp.setState(db.getState());
|
||||
resp.setFileDatabaseName(dbNode == null ? "" : dbNode.getName());
|
||||
resp.setExpireDateMs(db.getExpireDate() == null ? null : db.getExpireDate().getTime());
|
||||
|
||||
@ -4,8 +4,7 @@ package cn.axzo.nanopart.doc.file.templatedb;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import cn.axzo.karma.client.model.response.LabourProjectGroupListV2Res;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.DatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseSearchRequest;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ -120,7 +119,7 @@ public class TemplateDatabaseApiController implements TemplateDatabaseApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<DatabaseInfo>> searchDatabase(TemplateDatabaseSearchRequest request) {
|
||||
public CommonResponse<Page<TemplateDatabaseInfo>> searchDatabase(TemplateDatabaseSearchRequest request) {
|
||||
log.info("search database request:{}", request);
|
||||
return CommonResponse.success(templateDatabaseQueryService.searchDatabase(request));
|
||||
}
|
||||
|
||||
@ -3,8 +3,11 @@ package cn.axzo.nanopart.doc.file.templatedb;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.util.BizAssertions;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -12,13 +15,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeParentScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.TemplateDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.DatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseGetDatabaseOrDirInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.response.TemplateDatabaseGetDatabaseOrDirInfoResponse;
|
||||
import cn.axzo.nanopart.doc.dao.TemplateDatabaseDao;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.axzo.nanopart.doc.entity.TemplateDatabase;
|
||||
import cn.axzo.nanopart.doc.entity.domain.IndexNodeCodeProvider;
|
||||
import cn.axzo.nanopart.doc.file.index.IndexManager;
|
||||
import cn.axzo.nanopart.doc.file.index.IndexQueryService;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.IndexNodes;
|
||||
@ -37,6 +41,13 @@ public class TemplateDatabaseQueryService {
|
||||
private final IndexManager indexManager;;
|
||||
private final TemplateDatabaseDao templateDatabaseDao;
|
||||
private final IndexQueryService indexQueryService;
|
||||
private final TemplateDatabaseManager templateDatabaseManager;
|
||||
|
||||
public TemplateDatabase getOrThrow(String code) {
|
||||
TemplateDatabase db = templateDatabaseManager.findOrNull(code);
|
||||
BizAssertions.assertNotNull(db, "找不到对应的资料库模版");
|
||||
return db;
|
||||
}
|
||||
|
||||
public TemplateDatabaseGetDatabaseOrDirInfoResponse getDatabaseOrDirInfo(
|
||||
TemplateDatabaseGetDatabaseOrDirInfoRequest request) {
|
||||
@ -62,7 +73,7 @@ public class TemplateDatabaseQueryService {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Page<DatabaseInfo> searchDatabase(TemplateDatabaseSearchRequest request) {
|
||||
public Page<TemplateDatabaseInfo> searchDatabase(TemplateDatabaseSearchRequest request) {
|
||||
List<String> codes = null;
|
||||
if (StringUtils.isNotBlank(request.getName())) {
|
||||
codes = indexQueryService.getNameLike( //
|
||||
@ -76,17 +87,34 @@ public class TemplateDatabaseQueryService {
|
||||
.eq(TemplateDatabase::getState, TemplateDatabaseState.VALID) //
|
||||
.in(codes != null, TemplateDatabase::getCode, codes) //
|
||||
.page(request.toPage());
|
||||
IndexNodes indexNodes = IndexNodes.wrap(indexQueryService.get(page.getRecords()));
|
||||
List<DatabaseInfo> infoList = page.getRecords().stream().map(db -> {
|
||||
IndexNode indexNode = indexNodes.findOrNull(db.getCode());
|
||||
DatabaseInfo info = new DatabaseInfo();
|
||||
return Page.toPage(request.getPage(), page.getSize(), page.getTotal(), toTemplateDatabaseInfo(page.getRecords()));
|
||||
}
|
||||
|
||||
public List<TemplateDatabaseInfo> toTemplateDatabaseInfo(List<TemplateDatabase> templateDatabases) {
|
||||
if (CollectionUtils.isEmpty(templateDatabases))
|
||||
return Collections.emptyList();
|
||||
IndexNodes indexNodes = IndexNodes.wrap(indexQueryService.get(templateDatabases));
|
||||
return templateDatabases.stream().map(db -> {
|
||||
IndexNode indexNode = indexNodes.findOrNull(db.indexNodeCode());
|
||||
TemplateDatabaseInfo info = new TemplateDatabaseInfo();
|
||||
info.setName(indexNode == null ? "" : indexNode.getName());
|
||||
info.setCode(db.getCode());
|
||||
info.setDatabaseType(db.getScope().getDatabaseType());
|
||||
info.setFeeConfig(db.getFeeConfig());
|
||||
return info;
|
||||
}).collect(toList());
|
||||
return Page.toPage(request.getPage(), page.getSize(), page.getTotal(), infoList);
|
||||
}
|
||||
|
||||
public List<TemplateDatabase> get(List<? extends IndexNodeCodeProvider> nodes) {
|
||||
if (CollectionUtils.isEmpty(nodes))
|
||||
return Collections.emptyList();
|
||||
List<String> codes = nodes.stream() //
|
||||
.map(IndexNodeCodeProvider::indexNodeCode) //
|
||||
.filter(StringUtils::isNotBlank) //
|
||||
.collect(toList());
|
||||
return templateDatabaseDao.lambdaQuery() //
|
||||
.in(TemplateDatabase::getCode, codes) //
|
||||
.list();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user