REQ-3540: 备份
This commit is contained in:
parent
c0c674ae0e
commit
39dcd621ed
@ -11,9 +11,9 @@ import lombok.Setter;
|
||||
@Getter
|
||||
public class DirectoryAttributes {
|
||||
|
||||
/**
|
||||
* 是否为模版文件夹
|
||||
*/
|
||||
private boolean isTemplateDir;
|
||||
/**
|
||||
* 是否为模版文件夹
|
||||
*/
|
||||
private boolean isTemplateDir;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,4 +22,4 @@ public class FileAttributes {
|
||||
*/
|
||||
private String ossFileKey;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,4 +45,4 @@ public class IndexNodeAttributes {
|
||||
return JSON.parseObject(JSON.toJSONString(this), IndexNodeAttributes.class);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.domain;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeContext;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public interface IndexNodeQueryContext {
|
||||
|
||||
default IndexNodeContext context() {
|
||||
return IndexNodeContext.SYSTEM;
|
||||
}
|
||||
|
||||
default FileScope scope() {
|
||||
return FileScope.NONE;
|
||||
}
|
||||
|
||||
default Long scopeId() {
|
||||
return 0L;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.domain;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeContext;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public interface IndexNodeScope {
|
||||
|
||||
default IndexNodeContext context() {
|
||||
return IndexNodeContext.SYSTEM;
|
||||
}
|
||||
|
||||
default NodeScope scope() {
|
||||
return NodeScope.NONE;
|
||||
}
|
||||
|
||||
default Long scopeId() {
|
||||
return 0L;
|
||||
}
|
||||
|
||||
IndexNodeScope FILE_TEMPLATE_SCOPE = new IndexNodeScope() {
|
||||
@Override
|
||||
public IndexNodeContext context() {
|
||||
return IndexNodeContext.FILE_TEMPLATE;
|
||||
}
|
||||
};
|
||||
|
||||
IndexNodeScope TEMPLATE_DATABASE_SCOPE = new IndexNodeScope() {
|
||||
@Override
|
||||
public IndexNodeContext context() {
|
||||
return IndexNodeContext.TEMPLATE_DATABASE;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -4,7 +4,7 @@ package cn.axzo.nanopart.doc.api.domain;
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public interface NodeCreate extends IndexNodeQueryContext {
|
||||
public interface NodeCreate extends IndexNodeScope {
|
||||
|
||||
default String parentCode() {
|
||||
return "";
|
||||
|
||||
@ -8,9 +8,11 @@ public enum IndexNodeState {
|
||||
|
||||
// 有效的
|
||||
VALID,
|
||||
// 已删除
|
||||
DELETED,
|
||||
// 复制中, 对外不可见
|
||||
COPYING
|
||||
// 放到回收站
|
||||
MOVED_TO_TRASH,
|
||||
// 复制中
|
||||
COPING,
|
||||
// 创建中
|
||||
CREATING
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ package cn.axzo.nanopart.doc.api.enums;
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public enum FileScope {
|
||||
public enum NodeScope {
|
||||
// 无
|
||||
NONE,
|
||||
// 企业数据库
|
||||
@ -0,0 +1,54 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.filedb.response.FileDatabaseInfoResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
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;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseRemoveRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseSearchRequest;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}")
|
||||
public interface FileDatabaseApi {
|
||||
|
||||
/**
|
||||
* 添加添加租户
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/createDatabase")
|
||||
CommonResponse<Void> addWorkspace(@RequestBody @Valid FileDatabaseAddWorkspaceRequest request);
|
||||
|
||||
/**
|
||||
* 开通
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/active")
|
||||
CommonResponse<Void> addWorkspace(@RequestBody @Valid FileDatabaseActiveRequest request);
|
||||
|
||||
/**
|
||||
* 扩容
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/expandCapacity")
|
||||
CommonResponse<Void> expandCapacity(@RequestBody @Valid FileDatabaseExpandCapacityRequest request);
|
||||
|
||||
/**
|
||||
* 移除
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/remove")
|
||||
CommonResponse<Void> remove(@RequestBody @Valid FileDatabaseRemoveRequest request);
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/search")
|
||||
CommonResponse<Page<FileDatabaseInfoResponse>> search(@RequestBody @Valid FileDatabaseSearchRequest request);
|
||||
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class FileDatabaseActiveRequest {
|
||||
/**
|
||||
* 资料库id
|
||||
*/
|
||||
@NotNull(message = "id不能为空")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 容量, 单位GB
|
||||
*/
|
||||
@NotNull(message = "allowedCapacity不能为空")
|
||||
@Min(1)
|
||||
private Integer allowedCapacity;
|
||||
|
||||
/**
|
||||
* 过期时间, unix时间戳
|
||||
*/
|
||||
@NotNull(message = "expiredDateMs不能为空")
|
||||
private Long expiredDateMs;
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class FileDatabaseAddWorkspaceRequest {
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
@NotNull(message = "workspaceId不能为空")
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 资料库code
|
||||
*/
|
||||
@NotBlank(message = "templateDatabaseCode不能为空")
|
||||
private String templateDatabaseCode;
|
||||
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class FileDatabaseExpandCapacityRequest extends FileDatabaseActiveRequest {
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class FileDatabaseRemoveRequest {
|
||||
|
||||
/**
|
||||
* 资料库id
|
||||
*/
|
||||
@NotNull(message = "id不能为空")
|
||||
private Long id;
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.request;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class FileDatabaseSearchRequest {
|
||||
|
||||
/**
|
||||
* 租户名称
|
||||
*/
|
||||
private String workspaceName;
|
||||
|
||||
/**
|
||||
* 资料库状态. ACTIVATING: 开通中, ACTIVATED: 已开通, EXPIRED: 已到期
|
||||
*/
|
||||
private FileDatabaseState state;
|
||||
|
||||
/**
|
||||
* 资料库名称
|
||||
*/
|
||||
private String databaseName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package cn.axzo.nanopart.doc.api.filedb.response;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class FileDatabaseInfoResponse {
|
||||
|
||||
/**
|
||||
* 资料库id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 租户名称
|
||||
*/
|
||||
private String workspaceName;
|
||||
|
||||
/**
|
||||
* 状态. ACTIVATING: 开通中, ACTIVATED: 已开通, EXPIRED: 已到期
|
||||
*/
|
||||
private FileDatabaseState state;
|
||||
|
||||
/**
|
||||
* 资料库名称
|
||||
*/
|
||||
private String fileDatabaseName;
|
||||
|
||||
/**
|
||||
* 过期时间, unix时间戳
|
||||
*/
|
||||
private Long expireDateMs;
|
||||
|
||||
/**
|
||||
* 购买容量, 单位GB
|
||||
*/
|
||||
private Integer allowedCapacity;
|
||||
|
||||
/**
|
||||
* 已使用的容量, 单位GB
|
||||
*/
|
||||
private Integer usedCapacity;
|
||||
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.filetemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
@ -10,10 +12,18 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateGetFileInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplatePublishRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUpdateFileInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUploadFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.response.FileTemplateGetFileInfoResponse;
|
||||
import cn.axzo.nanopart.doc.api.index.IndexNodeInfo;
|
||||
import cn.axzo.nanopart.doc.api.index.request.CopyNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.DeleteNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.GetNodeChildrenRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.IndexNodePageSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.MoveNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.RenameNodeRequest;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
@ -35,6 +45,51 @@ public interface FileTemplateApi {
|
||||
@PostMapping("/api/fileTemplate/createFile")
|
||||
CommonResponse<String> createFile(@RequestBody @Valid FileTemplateCreateFileRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 上传文件
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/uploadFile")
|
||||
CommonResponse<String> uploadFile(@RequestBody @Valid FileTemplateUploadFileRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 重新命名
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/rename")
|
||||
CommonResponse<Void> rename(@RequestBody @Valid RenameNodeRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 克隆
|
||||
* @return 根节点的code
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/copy")
|
||||
CommonResponse<String> copy(@RequestBody @Valid CopyNodeRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 移动
|
||||
* @return 根节点的code
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/move")
|
||||
CommonResponse<String> move(@RequestBody @Valid MoveNodeRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 删除子树
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/delete")
|
||||
CommonResponse<Void> delete(@RequestBody @Valid DeleteNodeRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 获取子节点
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/getChildren")
|
||||
CommonResponse<List<IndexNodeInfo>> getChildren(@RequestBody @Valid GetNodeChildrenRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 搜索
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/search")
|
||||
CommonResponse<Page<IndexNodeInfo>> search(@RequestBody @Valid IndexNodePageSearchRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 获取文件信息
|
||||
*/
|
||||
@ -43,16 +98,9 @@ public interface FileTemplateApi {
|
||||
@RequestBody @Valid FileTemplateGetFileInfoRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 上架到文档市场
|
||||
* 文件模版: 更新文档信息, 传需要传的字段, 不传的字段不会更新
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/publish")
|
||||
CommonResponse<Void> publish(@RequestBody @Valid FileTemplatePublishRequest request);
|
||||
|
||||
/**
|
||||
* 文件模版: 上传文件
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/fileTemplate/uploadFile")
|
||||
CommonResponse<String> uploadFile(@RequestBody @Valid FileTemplateUploadFileRequest request);
|
||||
@PostMapping("/api/fileTemplate/updateFileInfo")
|
||||
CommonResponse<Void> updateFileInfo(@RequestBody @Valid FileTemplateUpdateFileInfoRequest request);
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
package cn.axzo.nanopart.doc.api.filetemplate.request;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.util.DefaultIcons;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -17,4 +18,8 @@ public class FileTemplateCreateDirRequest extends NodeCreateFileTemplate {
|
||||
return DefaultIcons.DIR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import cn.axzo.nanopart.doc.api.util.DefaultIcons;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -26,4 +27,8 @@ public class FileTemplateCreateFileRequest extends NodeCreateFileTemplate {
|
||||
return DefaultIcons.defaultFileIcon(format);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.nanopart.doc.api.filetemplate.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -18,4 +19,8 @@ public class FileTemplateGetFileInfoRequest {
|
||||
@NotBlank(message = "文件模板code不能为空")
|
||||
private String code;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,9 +4,11 @@ package cn.axzo.nanopart.doc.api.filetemplate.request;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFeeType;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileTemplateState;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileVipFeeType;
|
||||
import cn.axzo.nanopart.doc.api.util.YesOrNo;
|
||||
import lombok.Getter;
|
||||
@ -17,7 +19,7 @@ import lombok.Setter;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class FileTemplatePublishRequest {
|
||||
public class FileTemplateUpdateFileInfoRequest {
|
||||
|
||||
/**
|
||||
* 文件节点编码
|
||||
@ -25,34 +27,38 @@ public class FileTemplatePublishRequest {
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 状态. DRAFT: 草稿, PUBLISHED: 已发布, DELETED: 已删除
|
||||
*/
|
||||
private FileTemplateState state;
|
||||
|
||||
/**
|
||||
* 是否需要付费. YES: 是, NO: 否
|
||||
*/
|
||||
@NotNull(message = "needFee不能为空")
|
||||
private YesOrNo needFee;
|
||||
|
||||
/**
|
||||
* 收费模版, ONE_TIME_FEE_PER_PERSON: 用户买断, ONE_TIME_FEE_PER_PROJECT: 按项目买断
|
||||
*/
|
||||
@NotNull(message = "feeType不能为空")
|
||||
private FileFeeType feeType;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@NotNull(message = "fee不能为空")
|
||||
private BigDecimal fee;
|
||||
|
||||
/**
|
||||
* 会员收费方式. VIP_FREE: 会员免费, VIP_DISCOUNT: 会员折扣
|
||||
*/
|
||||
@NotNull(message = "vipFeeType不能为空")
|
||||
private FileVipFeeType vipFeeType;
|
||||
|
||||
/**
|
||||
* 会员费用
|
||||
*/
|
||||
@NotNull(message = "vipFee不能为空")
|
||||
private BigDecimal vipFee;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -2,10 +2,9 @@
|
||||
package cn.axzo.nanopart.doc.api.filetemplate.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import cn.axzo.nanopart.doc.api.util.DefaultIcons;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -14,23 +13,17 @@ import lombok.Setter;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class FileTemplateUploadFileRequest extends NodeCreateFileTemplate {
|
||||
public class FileTemplateUploadFileRequest extends FileTemplateCreateFileRequest {
|
||||
|
||||
/**
|
||||
* 文件base64
|
||||
* ossFileKey
|
||||
*/
|
||||
@NotBlank(message = "文件base64不能为空")
|
||||
private String fileBase64;
|
||||
|
||||
/**
|
||||
* 文件格式. EXCEL, WORD, PDF
|
||||
*/
|
||||
@NotNull(message = "文件格式不能为空")
|
||||
private FileFormat format;
|
||||
@NotBlank(message = "ossFileKey不能为空")
|
||||
private String ossFileKey;
|
||||
|
||||
@Override
|
||||
public String icon() {
|
||||
return DefaultIcons.defaultFileIcon(format);
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,8 +3,10 @@ package cn.axzo.nanopart.doc.api.filetemplate.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeScope;
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeContext;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -43,7 +45,17 @@ abstract class NodeCreateFileTemplate implements NodeCreate {
|
||||
|
||||
@Override
|
||||
public final IndexNodeContext context() {
|
||||
return IndexNodeContext.FILE_TEMPLATE;
|
||||
return IndexNodeScope.FILE_TEMPLATE_SCOPE.context();
|
||||
}
|
||||
|
||||
@Override
|
||||
public NodeScope scope() {
|
||||
return IndexNodeScope.FILE_TEMPLATE_SCOPE.scope();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long scopeId() {
|
||||
return IndexNodeScope.FILE_TEMPLATE_SCOPE.scopeId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.domain;
|
||||
package cn.axzo.nanopart.doc.api.index;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.CooperationAccessOption;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -43,7 +42,7 @@ public class IndexNodeInfo {
|
||||
/**
|
||||
* 作用范围. NONE: 无, ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
|
||||
*/
|
||||
private FileScope scope;
|
||||
private NodeScope scope;
|
||||
|
||||
/**
|
||||
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
|
||||
@ -66,13 +65,8 @@ public class IndexNodeInfo {
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 状态. VALID: 有效的, DELETED: 已删除
|
||||
* 状态. VALID: 有效的
|
||||
*/
|
||||
private IndexNodeState state;
|
||||
|
||||
/**
|
||||
* 协作企业可见范围. ALL_ORGS_IN_PROJECT: 项目内所有企业可见, ORGS_BY_COOPERATE_TYPES: 指定参建单位可见
|
||||
*/
|
||||
private CooperationAccessOption cooperationAccessOption;
|
||||
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class CopyNodeRequest {
|
||||
/**
|
||||
* 需要拷贝的结点
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 目标父节点
|
||||
*/
|
||||
@NotBlank(message = "destParentCode不能为空")
|
||||
private String destParentCode;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class DeleteNodeRequest {
|
||||
|
||||
/**
|
||||
* 需要删除的(根)结点
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class GetNodeChildrenRequest {
|
||||
|
||||
/**
|
||||
* 父节点code
|
||||
*/
|
||||
private String parentCode;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import cn.axzo.basics.common.page.PageRequest;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class IndexNodePageSearchRequest extends PageRequest {
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@NotBlank(message = "名称不能为空")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 搜索类型, 不指定就搜索所有类型, DIRECTORY: 目录, FILE: 文件
|
||||
*/
|
||||
private Set<IndexNodeType> nodeTypes;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class MoveNodeRequest {
|
||||
/**
|
||||
* 需要拷贝的结点
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 目标父节点
|
||||
*/
|
||||
@NotBlank(message = "destParentCode不能为空")
|
||||
private String destParentCode;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.index.request;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class RenameNodeRequest {
|
||||
|
||||
/**
|
||||
* 节点编码
|
||||
*/
|
||||
@NotBlank(message = "节点编码不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 新名称
|
||||
*/
|
||||
@NotBlank(message = "新名称不能为空")
|
||||
private String newName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,115 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.index.IndexNodeInfo;
|
||||
import cn.axzo.nanopart.doc.api.index.request.CopyNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.DeleteNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.GetNodeChildrenRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.IndexNodePageSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.MoveNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.RenameNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDatabaseRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseGetDatabaseOrDirInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUpdateDatabaseOrDirInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUploadFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.response.TemplateDatabaseGetDatabaseOrDirInfoResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}")
|
||||
public interface TemplateDatabaseApi {
|
||||
|
||||
/**
|
||||
* 项企资料库: 创建资料库
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/createDatabase")
|
||||
CommonResponse<String> createDatabase(@RequestBody @Valid TemplateDatabaseCreateDatabaseRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 创建新文件夹/空间
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/createDir")
|
||||
CommonResponse<String> createDir(@RequestBody @Valid TemplateDatabaseCreateDirRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 创建新文件
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/createFile")
|
||||
CommonResponse<String> createFile(@RequestBody @Valid TemplateDatabaseCreateFileRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 上传文件
|
||||
* @return 节点code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/uploadFile")
|
||||
CommonResponse<String> uploadFile(@RequestBody @Valid TemplateDatabaseUploadFileRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 重新命名
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/rename")
|
||||
CommonResponse<Void> rename(@RequestBody @Valid RenameNodeRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 克隆
|
||||
* @return 根节点的code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/copy")
|
||||
CommonResponse<String> copy(@RequestBody @Valid CopyNodeRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 移动
|
||||
* @return 根节点的code
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/move")
|
||||
CommonResponse<String> move(@RequestBody @Valid MoveNodeRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 删除子树
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/delete")
|
||||
CommonResponse<Void> delete(@RequestBody @Valid DeleteNodeRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 获取子节点
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/getChildren")
|
||||
CommonResponse<List<IndexNodeInfo>> getChildren(@RequestBody @Valid GetNodeChildrenRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 搜索
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/search")
|
||||
CommonResponse<Page<IndexNodeInfo>> search(@RequestBody @Valid IndexNodePageSearchRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 获取资料库或文件夹信息
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/getDatabaseOrDirInfo")
|
||||
CommonResponse<TemplateDatabaseGetDatabaseOrDirInfoResponse> getDatabaseOrDirInfo(
|
||||
@RequestBody @Valid TemplateDatabaseGetDatabaseOrDirInfoRequest request);
|
||||
|
||||
/**
|
||||
* 项企资料库: 更新资料库或文件夹信息
|
||||
*/
|
||||
@PostMapping("/api/templateDatabase/updateDatabaseOrDirInfo")
|
||||
CommonResponse<Void> updateDatabaseOrDirInfo(
|
||||
@RequestBody @Valid TemplateDatabaseUpdateDatabaseOrDirInfoRequest request);
|
||||
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.domain;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public class DatabaseOrDirInfo {
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String bizCode;
|
||||
|
||||
/**
|
||||
* 描述信息
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
private String icon;
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.CooperationAccessOption;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseCreateDatabaseRequest extends TemplateDatabaseCreateDirRequest implements NodeCreate {
|
||||
|
||||
/**
|
||||
* 归属. ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库
|
||||
*/
|
||||
@NotBlank(message = "scope不能为空")
|
||||
private NodeScope scope;
|
||||
|
||||
/**
|
||||
* 协作模版. ALL_ORGS_IN_PROJECT: 项目内所有企业可见, ORGS_BY_COOPERATE_TYPES: 指定参建单位可见
|
||||
*/
|
||||
private CooperationAccessOption accessOption;
|
||||
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.CooperationAccessOption;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseCreateDirRequest {
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@NotBlank(message = "name不能为空")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
@NotBlank(message = "bizCode不能为空")
|
||||
private String bizCode;
|
||||
|
||||
/**
|
||||
* 描述信息
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
@NotBlank(message = "icon不能为空")
|
||||
private String icon;
|
||||
|
||||
public String icon() {
|
||||
return StringUtils.isBlank(icon) ? "" : icon;
|
||||
}
|
||||
|
||||
public String bizCode() {
|
||||
return StringUtils.isBlank(bizCode) ? "" : bizCode;
|
||||
}
|
||||
|
||||
public String description() {
|
||||
return StringUtils.isBlank(description) ? "" : description;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseCreateFileRequest {
|
||||
|
||||
/**
|
||||
* 父节点code
|
||||
*/
|
||||
private String parentCode;
|
||||
|
||||
/**
|
||||
* 节点名称(文件夹/文件)不能为空
|
||||
*/
|
||||
@NotBlank(message = "节点名称不能为空")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 文件格式. EXCEL, WORD, PDF
|
||||
*/
|
||||
@NotNull(message = "文件格式不能为空")
|
||||
private FileFormat format;
|
||||
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseGetDatabaseOrDirInfoRequest {
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseAccessConfig;
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseFeeConfig;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.DatabaseOrDirInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseUpdateDatabaseOrDirInfoRequest {
|
||||
|
||||
/**
|
||||
* 节点编码
|
||||
*/
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 基础信息, 传了就更新
|
||||
*/
|
||||
private DatabaseOrDirInfo databaseOrDirInfo;
|
||||
|
||||
/**
|
||||
* 如果是空间的话, 空间的费用配置, 传了就更新
|
||||
*/
|
||||
private DatabaseFeeConfig feeConfig;
|
||||
|
||||
/**
|
||||
* 如果是空间的话, 空间的安全管理配置, 传了就更新
|
||||
*/
|
||||
private DatabaseAccessConfig accessConfig;
|
||||
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.reqeust;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseUploadFileRequest extends TemplateDatabaseCreateFileRequest {
|
||||
|
||||
/**
|
||||
* ossFileKey
|
||||
*/
|
||||
@NotBlank(message = "ossFileKey不能为空")
|
||||
private String ossFileKey;
|
||||
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.templatedb.response;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseAccessConfig;
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseFeeConfig;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.DatabaseOrDirInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateDatabaseGetDatabaseOrDirInfoResponse {
|
||||
|
||||
/**
|
||||
* 节点类型. DATABASE: 空间(数据库), DIRECTORY: 目录, FILE: 文件
|
||||
*/
|
||||
private IndexNodeType nodeType;
|
||||
|
||||
/**
|
||||
* 范围, 可以直接显示的名称
|
||||
*/
|
||||
private String readableScope;
|
||||
|
||||
/**
|
||||
* 基础信息
|
||||
*/
|
||||
private DatabaseOrDirInfo databaseOrDirInfo;
|
||||
|
||||
/**
|
||||
* 如果是空间的话, 空间的费用配置
|
||||
*/
|
||||
private DatabaseFeeConfig feeConfig;
|
||||
|
||||
/**
|
||||
* 如果是空间的话, 空间的安全管理配置
|
||||
*/
|
||||
private DatabaseAccessConfig accessConfig;
|
||||
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.dao;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -15,7 +17,7 @@ import cn.axzo.nanopart.doc.mapper.FileTemplateMapper;
|
||||
@Repository
|
||||
public class FileTemplateDao extends ServiceImpl<FileTemplateMapper, FileTemplate> {
|
||||
|
||||
public FileTemplate findOrThrow(String code) {
|
||||
public FileTemplate getOrThrow(String code) {
|
||||
FileTemplate template = findOrNull(code);
|
||||
BizAssertions.assertNotNull(template, "文件模板不存在: {}", code);
|
||||
return template;
|
||||
@ -27,4 +29,9 @@ public class FileTemplateDao extends ServiceImpl<FileTemplateMapper, FileTemplat
|
||||
.one();
|
||||
}
|
||||
|
||||
public void deleteByCodes(Collection<String> codes) {
|
||||
if (codes == null)
|
||||
return;
|
||||
lambdaUpdate().in(FileTemplate::getCode, codes).remove();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,18 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.dao;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeQueryContext;
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.api.util.BizAssertions;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.axzo.nanopart.doc.mapper.IndexNodeMapper;
|
||||
@ -50,13 +55,8 @@ public class IndexNodeDao extends ServiceImpl<IndexNodeMapper, IndexNode> {
|
||||
.update();
|
||||
}
|
||||
|
||||
public IndexNode findChildByName(IndexNodeQueryContext nodeContext, String parentCode, String name) {
|
||||
return lambdaQuery() //
|
||||
.nested(StringUtils.isBlank(parentCode), nested -> { //
|
||||
nested.eq(IndexNode::getContext, nodeContext.context()) //
|
||||
.eq(IndexNode::getScope, nodeContext.scope()) //
|
||||
.eq(IndexNode::getScopeId, nodeContext.scopeId()).eq(IndexNode::getParentCode, "");
|
||||
}) //
|
||||
public IndexNode findChildByName(IndexNodeScope nodeScope, String parentCode, String name) {
|
||||
return parentOrScopeQuery(nodeScope, parentCode) //
|
||||
.eq(IndexNode::getParentCode, parentCode) //
|
||||
.eq(IndexNode::getName, name) //
|
||||
.last("limit 1") //
|
||||
@ -77,4 +77,35 @@ public class IndexNodeDao extends ServiceImpl<IndexNodeMapper, IndexNode> {
|
||||
.update();
|
||||
}
|
||||
|
||||
}
|
||||
public List<IndexNode> collectSubtree(String code) {
|
||||
return lambdaQuery() //
|
||||
.likeRight(IndexNode::getPath, code) //
|
||||
.list();
|
||||
}
|
||||
|
||||
public void deleteSubtree(String code) {
|
||||
lambdaUpdate() //
|
||||
.likeRight(IndexNode::getPath, code) //
|
||||
.update();
|
||||
}
|
||||
|
||||
public List<IndexNode> collectChildren(IndexNodeScope nodeScope, String parentCode, IndexNodeState... states) {
|
||||
return parentOrScopeQuery(nodeScope, parentCode) //
|
||||
.in(states.length > 0, IndexNode::getState, Arrays.asList(states)) //
|
||||
.list();
|
||||
}
|
||||
|
||||
private LambdaQueryChainWrapper<IndexNode> parentOrScopeQuery(IndexNodeScope nodeScope, String parentCode) {
|
||||
if (StringUtils.isBlank(parentCode))
|
||||
return scopeQuery(nodeScope);
|
||||
return lambdaQuery().eq(IndexNode::getParentCode, parentCode);
|
||||
}
|
||||
|
||||
private LambdaQueryChainWrapper<IndexNode> scopeQuery(IndexNodeScope nodeScope) {
|
||||
return lambdaQuery() //
|
||||
.eq(IndexNode::getContext, nodeScope.context()) //
|
||||
.eq(IndexNode::getScope, nodeScope.scope()) //
|
||||
.eq(IndexNode::getScopeId, nodeScope.scopeId()).eq(IndexNode::getParentCode, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import cn.axzo.pudge.core.persistence.BaseEntity;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -19,4 +20,8 @@ public class DocLock extends BaseEntity<DocLock> {
|
||||
*/
|
||||
private String key;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,10 +3,11 @@ package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import cn.axzo.nanopart.doc.api.util.YesOrNo;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import lombok.Getter;
|
||||
@ -38,7 +39,7 @@ public class FileDatabase extends BaseEntity<FileDatabase> {
|
||||
/**
|
||||
* 作用范围. NONE: 无, ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
|
||||
*/
|
||||
private FileScope scope;
|
||||
private NodeScope scope;
|
||||
|
||||
/**
|
||||
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
|
||||
@ -70,4 +71,8 @@ public class FileDatabase extends BaseEntity<FileDatabase> {
|
||||
*/
|
||||
private Integer usedCapacity;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFeeType;
|
||||
@ -55,4 +56,9 @@ public class FileTemplate extends BaseEntity<FileTemplate> {
|
||||
* 会员费用
|
||||
*/
|
||||
private BigDecimal vipFee;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,16 +1,18 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
|
||||
import cn.axzo.maokai.api.vo.response.tree.NodeValue;
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeAttributes;
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeContext;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import cn.axzo.nanopart.doc.api.util.UUIDUtil;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import lombok.Getter;
|
||||
@ -22,7 +24,7 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@Getter
|
||||
@TableName(value = "doc_index_node", autoResultMap = true)
|
||||
public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate, NodeValue {
|
||||
|
||||
public static final String ROOT_CODE = "";
|
||||
|
||||
@ -30,6 +32,11 @@ public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
return UUIDUtil.uuidString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 爷节点id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 父节点code
|
||||
*/
|
||||
@ -63,7 +70,7 @@ public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
/**
|
||||
* 作用范围. NONE: 无, ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
|
||||
*/
|
||||
private FileScope scope;
|
||||
private NodeScope scope;
|
||||
|
||||
/**
|
||||
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
|
||||
@ -107,6 +114,10 @@ public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
return attributes;
|
||||
}
|
||||
|
||||
public boolean isFile() {
|
||||
return nodeType == IndexNodeType.FILE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parentCode() {
|
||||
return parentCode;
|
||||
@ -143,7 +154,7 @@ public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileScope scope() {
|
||||
public NodeScope scope() {
|
||||
return scope;
|
||||
}
|
||||
|
||||
@ -152,4 +163,23 @@ public class IndexNode extends BaseEntity<IndexNode> implements NodeCreate {
|
||||
return scopeId;
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long id() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long parentId() {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValueRoot() {
|
||||
return parentId == 0;
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,10 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.NodeScope;
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseAccessConfig;
|
||||
import cn.axzo.nanopart.doc.api.domain.DatabaseFeeConfig;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@ -28,7 +29,7 @@ public class TemplateDatabase extends BaseEntity<TemplateDatabase> {
|
||||
/**
|
||||
* 作用范围. NONE: 无, ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
|
||||
*/
|
||||
private FileScope scope;
|
||||
private NodeScope scope;
|
||||
|
||||
/**
|
||||
* 费用配置
|
||||
@ -42,4 +43,8 @@ public class TemplateDatabase extends BaseEntity<TemplateDatabase> {
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private DatabaseAccessConfig accessConfig;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
package cn.axzo.nanopart.doc.file;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class FileBroadcaster {
|
||||
|
||||
public void fireRenameOssFileEvent(String indexNodeCode) {
|
||||
// TODO(yl): finish this
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.filedb;
|
||||
|
||||
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;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseRemoveRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.request.FileDatabaseSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.filedb.response.FileDatabaseInfoResponse;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.filedb.FileDatabaseApi;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class FileDatabaseApiController implements FileDatabaseApi {
|
||||
|
||||
private final FileDatabaseManager fileDatabaseManager;
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> addWorkspace(FileDatabaseAddWorkspaceRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> addWorkspace(FileDatabaseActiveRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> expandCapacity(FileDatabaseExpandCapacityRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> remove(FileDatabaseRemoveRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<FileDatabaseInfoResponse>> search(FileDatabaseSearchRequest request) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package cn.axzo.nanopart.doc.file.filedb;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class FileDatabaseManager {
|
||||
}
|
||||
@ -1,18 +1,33 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.filetemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeScope;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.FileTemplateApi;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateGetFileInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplatePublishRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUpdateFileInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUploadFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.response.FileTemplateGetFileInfoResponse;
|
||||
import cn.axzo.nanopart.doc.api.index.IndexNodeInfo;
|
||||
import cn.axzo.nanopart.doc.api.index.request.CopyNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.DeleteNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.GetNodeChildrenRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.IndexNodePageSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.MoveNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.RenameNodeRequest;
|
||||
import cn.axzo.nanopart.doc.entity.FileTemplate;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
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;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@ -25,6 +40,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
public class FileTemplateApiController implements FileTemplateApi {
|
||||
|
||||
private final FileTemplateManager fileTemplateManager;
|
||||
private final IndexManager indexManager;;
|
||||
private final IndexQueryService indexQueryService;
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> createDir(FileTemplateCreateDirRequest request) {
|
||||
@ -38,6 +55,56 @@ public class FileTemplateApiController implements FileTemplateApi {
|
||||
return CommonResponse.success(fileTemplateManager.createFile(request));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> uploadFile(FileTemplateUploadFileRequest request) {
|
||||
log.info("upload file request:{}", request);
|
||||
return CommonResponse.success(fileTemplateManager.uploadFile(request));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> rename(RenameNodeRequest request) {
|
||||
log.info("rename request:{}", request);
|
||||
indexManager.rename(request.getCode(), request.getNewName());
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> copy(CopyNodeRequest request) {
|
||||
log.info("copy request:{}", request);
|
||||
IndexNode indexNode = indexManager.copy(request.getCode(), request.getDestParentCode());
|
||||
return CommonResponse.success(indexNode.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> move(MoveNodeRequest request) {
|
||||
log.info("move request:{}", request);
|
||||
IndexNode indexNode = indexManager.move(request.getCode(), request.getDestParentCode());
|
||||
return CommonResponse.success(indexNode.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> delete(DeleteNodeRequest request) {
|
||||
log.info("delete request:{}", request);
|
||||
fileTemplateManager.delete(request);
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<IndexNodeInfo>> getChildren(GetNodeChildrenRequest request) {
|
||||
log.info("getChildren request:{}", request);
|
||||
List<IndexNode> children = indexQueryService.getChildren(IndexNodeScope.FILE_TEMPLATE_SCOPE,
|
||||
request.getParentCode());
|
||||
return CommonResponse.success(IndexNodes.wrap(children).toIndexNodeInfos());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<IndexNodeInfo>> search(IndexNodePageSearchRequest request) {
|
||||
log.info("search request:{}", request);
|
||||
Page<IndexNode> page = indexQueryService.search(IndexNodeScope.FILE_TEMPLATE_SCOPE, request);
|
||||
return CommonResponse.success(Page.toPage(page.getPageNum(), page.getPageSize(), page.getTotalElements(),
|
||||
IndexNodes.wrap(page.getList()).toIndexNodeInfos()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<FileTemplateGetFileInfoResponse> getFileInfo(FileTemplateGetFileInfoRequest request) {
|
||||
FileTemplate fileTemplate = fileTemplateManager.findOrNull(request.getCode());
|
||||
@ -47,15 +114,10 @@ public class FileTemplateApiController implements FileTemplateApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> publish(FileTemplatePublishRequest request) {
|
||||
log.info("publish request:{}", request);
|
||||
fileTemplateManager.publish(request);
|
||||
public CommonResponse<Void> updateFileInfo(FileTemplateUpdateFileInfoRequest request) {
|
||||
log.info("updateFileInfo request:{}", request);
|
||||
fileTemplateManager.updateFileInfo(request);
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> uploadFile(FileTemplateUploadFileRequest request) {
|
||||
log.info("upload file request:{}", request);
|
||||
return CommonResponse.success(fileTemplateManager.uploadFile(request));
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,15 +5,19 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileTemplateState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateCreateFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplatePublishRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUpdateFileInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.filetemplate.request.FileTemplateUploadFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.DeleteNodeRequest;
|
||||
import cn.axzo.nanopart.doc.dao.FileTemplateDao;
|
||||
import cn.axzo.nanopart.doc.entity.FileTemplate;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.axzo.nanopart.doc.file.index.IndexManager;
|
||||
import cn.axzo.nanopart.doc.file.index.OssFile;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.IndexNodes;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.OssFile;
|
||||
import cn.axzo.nanopart.doc.utils.BizTransactional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
@ -36,9 +40,9 @@ public class FileTemplateManager {
|
||||
return transactionTemplate.execute(unused -> createFileTemplate(indexManager.createFile(request, ossFile)));
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public String uploadFile(FileTemplateUploadFileRequest request) {
|
||||
OssFile ossFile = indexManager.uploadFile(request, request.getFormat(), request.getFileBase64());
|
||||
return transactionTemplate.execute(unused -> createFileTemplate(indexManager.createFile(request, ossFile)));
|
||||
return createFileTemplate(indexManager.uploadFile(request, request.getFormat(), request.getOssFileKey()));
|
||||
}
|
||||
|
||||
private String createFileTemplate(IndexNode fileNode) {
|
||||
@ -49,20 +53,26 @@ public class FileTemplateManager {
|
||||
return fileNode.getCode();
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public void delete(DeleteNodeRequest request) {
|
||||
IndexNodes nodes = IndexNodes.wrap(indexManager.delete(request.getCode()));
|
||||
fileTemplateDao.deleteByCodes(nodes.collectCodes(IndexNodeType.FILE));
|
||||
}
|
||||
|
||||
public FileTemplate findOrNull(String code) {
|
||||
return fileTemplateDao.findOrNull(code);
|
||||
}
|
||||
|
||||
public void publish(FileTemplatePublishRequest request) {
|
||||
FileTemplate fileTemplate = fileTemplateDao.findOrThrow(request.getCode());
|
||||
public void updateFileInfo(FileTemplateUpdateFileInfoRequest request) {
|
||||
FileTemplate fileTemplate = fileTemplateDao.getOrThrow(request.getCode());
|
||||
fileTemplateDao.lambdaUpdate() //
|
||||
.eq(FileTemplate::getId, fileTemplate.getId()) //
|
||||
.set(FileTemplate::getNeedFee, request.getNeedFee()) //
|
||||
.set(FileTemplate::getFeeType, request.getFeeType()) //
|
||||
.set(FileTemplate::getFee, request.getFee()) //
|
||||
.set(FileTemplate::getVipFeeType, request.getVipFeeType()) //
|
||||
.set(FileTemplate::getVipFee, request.getVipFee()) //
|
||||
.set(FileTemplate::getState, FileTemplateState.PUBLISHED) //
|
||||
.set(request.getNeedFee() != null, FileTemplate::getNeedFee, request.getNeedFee()) //
|
||||
.set(request.getFeeType() != null, FileTemplate::getFeeType, request.getFeeType()) //
|
||||
.set(request.getFee() != null, FileTemplate::getFee, request.getFee()) //
|
||||
.set(request.getVipFeeType() != null, FileTemplate::getVipFeeType, request.getVipFeeType()) //
|
||||
.set(request.getVipFee() != null, FileTemplate::getVipFee, request.getVipFee()) //
|
||||
.set(request.getState() != null, FileTemplate::getState, request.getState()) //
|
||||
.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,19 +8,23 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.util.BizAssertions;
|
||||
import cn.axzo.nanopart.doc.config.DocProps;
|
||||
import cn.axzo.nanopart.doc.dao.IndexNodeDao;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.axzo.nanopart.doc.file.FileBroadcaster;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.NameUsedException;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.OssFile;
|
||||
import cn.axzo.nanopart.doc.integration.OssClient;
|
||||
import cn.axzo.nanopart.doc.utils.BizTransactional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class IndexManager {
|
||||
@ -29,19 +33,20 @@ public class IndexManager {
|
||||
private final IndexNodeDao indexNodeDao;
|
||||
private final OssClient ossClient;
|
||||
private final DocProps docProps;
|
||||
private final FileBroadcaster fileBroadcaster;
|
||||
|
||||
@BizTransactional
|
||||
public IndexNode createDatabase(NodeCreate node) {
|
||||
indexSupport.lockParentAndReleaseOnCommit(node);
|
||||
indexSupport.ensureChildNameNotUsed(node);
|
||||
return indexSupport.createNode(node, IndexNodeType.DATABASE, IndexNodeState.VALID);
|
||||
return indexSupport.createNode(node, IndexNodeType.DATABASE);
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public IndexNode createDir(NodeCreate node) {
|
||||
indexSupport.lockParentAndReleaseOnCommit(node);
|
||||
indexSupport.ensureChildNameNotUsed(node);
|
||||
return indexSupport.createNode(node, IndexNodeType.DIRECTORY, IndexNodeState.VALID);
|
||||
return indexSupport.createNode(node, IndexNodeType.DIRECTORY);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -55,17 +60,15 @@ public class IndexManager {
|
||||
? docProps.getEmptyWordOssFileKey() //
|
||||
: docProps.getEmptyExcelFileKey();
|
||||
String code = IndexNode.newCode();
|
||||
return new OssFile(format, code, ossClient.copy(emptyOssFileKey, code, format));
|
||||
return new OssFile(format, code, ossClient.copy(emptyOssFileKey, format, node.name()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 不能在事务中使用
|
||||
*/
|
||||
public OssFile uploadFile(NodeCreate node, FileFormat format, String fileBase64) {
|
||||
BizAssertions.assertFalse(TransactionSynchronizationManager.isActualTransactionActive(), "不能在事务中使用");
|
||||
@BizTransactional
|
||||
public IndexNode uploadFile(NodeCreate node, FileFormat format, String ossFileKey) {
|
||||
indexSupport.ensureChildNameNotUsed(node);
|
||||
String code = IndexNode.newCode();
|
||||
return new OssFile(format, code, ossClient.upload(fileBase64, code, format));
|
||||
OssFile ossFile = new OssFile(format, code, ossFileKey);
|
||||
return createFile(node, ossFile);
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
@ -75,10 +78,10 @@ public class IndexManager {
|
||||
indexSupport.ensureChildNameNotUsed(node);
|
||||
}
|
||||
catch (NameUsedException e) {
|
||||
ossClient.safeDelete(ossFile.ossFileKey());
|
||||
ossClient.asyncDelete(ossFile.ossFileKey());
|
||||
throw e;
|
||||
}
|
||||
IndexNode fileNode = indexSupport.createNode(ossFile.code(), node, IndexNodeType.FILE, IndexNodeState.VALID);
|
||||
IndexNode fileNode = indexSupport.createNode(ossFile.code(), node, IndexNodeType.FILE);
|
||||
fileNode.getOrCreateAttributes().getOrCreateFileAttributes().setOssFileKey(ossFile.ossFileKey());
|
||||
fileNode.getOrCreateAttributes().getOrCreateFileAttributes().setFileFormat(ossFile.format());
|
||||
indexNodeDao.updateAttributes(fileNode);
|
||||
@ -89,16 +92,27 @@ public class IndexManager {
|
||||
public void rename(String code, String newName) {
|
||||
IndexNode indexNode = indexNodeDao.getNodeOrThrow(code);
|
||||
indexSupport.lockParentAndReleaseOnCommit(indexNode);
|
||||
if (indexNode.name().equals(newName))
|
||||
return;
|
||||
indexSupport.ensureChildNameNotUsed(indexNode, indexNode.getParentCode(), newName);
|
||||
indexNodeDao.rename(code, newName);
|
||||
if (indexNode.isFile())
|
||||
fileBroadcaster.fireRenameOssFileEvent(code);
|
||||
}
|
||||
|
||||
public IndexNode copy(String copyCode, String destParentCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public List<IndexNode> delete(String code) {
|
||||
List<IndexNode> subtree = indexNodeDao.collectSubtree(code);
|
||||
indexNodeDao.deleteSubtree(code);
|
||||
return subtree;
|
||||
}
|
||||
|
||||
public IndexNode copy(String node, String destParentCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
public IndexNode move(String node, String destParentCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.index;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.index.request.IndexNodePageSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.dao.IndexNodeDao;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class IndexQueryService {
|
||||
|
||||
private final IndexNodeDao indexNodeDao;
|
||||
|
||||
public List<IndexNode> getChildren(IndexNodeScope nodeScope, String parentCode, IndexNodeState... states) {
|
||||
return indexNodeDao.collectChildren(nodeScope, parentCode, states);
|
||||
}
|
||||
|
||||
public Page<IndexNode> search(IndexNodeScope nodeScope, IndexNodePageSearchRequest search) {
|
||||
//todo valid state
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -7,7 +7,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeQueryContext;
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeScope;
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeState;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
@ -16,6 +16,7 @@ import cn.axzo.nanopart.doc.api.util.UUIDUtil;
|
||||
import cn.axzo.nanopart.doc.dao.DocLockDao;
|
||||
import cn.axzo.nanopart.doc.dao.IndexNodeDao;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import cn.axzo.nanopart.doc.file.index.domain.NameUsedException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
@ -28,11 +29,12 @@ class IndexSupport {
|
||||
private final IndexNodeDao indexNodeDao;
|
||||
private final DocLockDao docLockDao;
|
||||
|
||||
IndexNode createNode(NodeCreate node, IndexNodeType nodeType, IndexNodeState state) {
|
||||
return createNode(UUIDUtil.uuidString(), node, nodeType, state);
|
||||
IndexNode createNode(NodeCreate node, IndexNodeType nodeType) {
|
||||
return createNode(UUIDUtil.uuidString(), node, nodeType);
|
||||
}
|
||||
|
||||
IndexNode createNode(String code, NodeCreate node, IndexNodeType nodeType, IndexNodeState state) {
|
||||
IndexNode createNode(String code, NodeCreate node, IndexNodeType nodeType) {
|
||||
// TODO(yl): 检查子节点数量
|
||||
IndexNode parent = null;
|
||||
if (StringUtils.isNotBlank(node.parentCode())) {
|
||||
parent = indexNodeDao.getNodeOrThrow(node.parentCode());
|
||||
@ -43,6 +45,7 @@ class IndexSupport {
|
||||
node.parentCode());
|
||||
}
|
||||
IndexNode child = new IndexNode();
|
||||
child.setParentId(parent == null ? 0L : parent.getParentId());
|
||||
child.setParentCode(parent == null ? IndexNode.ROOT_CODE : parent.getCode());
|
||||
child.setCode(code);
|
||||
child.setName(node.name());
|
||||
@ -67,8 +70,8 @@ class IndexSupport {
|
||||
ensureChildNameNotUsed(nodeCreate, nodeCreate.parentCode(), nodeCreate.name());
|
||||
}
|
||||
|
||||
void ensureChildNameNotUsed(IndexNodeQueryContext nodeContext, String parentCode, String childName) {
|
||||
IndexNode child = indexNodeDao.findChildByName(nodeContext, parentCode, childName);
|
||||
void ensureChildNameNotUsed(IndexNodeScope nodeScope, String parentCode, String childName) {
|
||||
IndexNode child = indexNodeDao.findChildByName(nodeScope, parentCode, childName);
|
||||
if (child != null)
|
||||
throw new NameUsedException("名称已被使用");
|
||||
}
|
||||
@ -77,20 +80,18 @@ class IndexSupport {
|
||||
lockParentAndReleaseOnCommit(node, node.parentCode());
|
||||
}
|
||||
|
||||
void lockParentAndReleaseOnCommit(IndexNodeQueryContext nodeContext, String parentCode) {
|
||||
void lockParentAndReleaseOnCommit(IndexNodeScope nodeScope, String parentCode) {
|
||||
BizAssertions.assertTrue(TransactionSynchronizationManager.isActualTransactionActive(), "必须和事务搭配使用");
|
||||
// 如果父节点存在就锁父节点
|
||||
if (StringUtils.isNotBlank(parentCode)) {
|
||||
indexNodeDao.getNodeForUpdateOrThrow(parentCode);
|
||||
return;
|
||||
}
|
||||
// 如果父节点不存在就锁scope
|
||||
docLockDao.lockAndReleaseOnCommit(idbuilder() //
|
||||
.append("INDEX_NODE") //
|
||||
.append(nodeContext.context()) //
|
||||
.append(nodeContext.scope()) //
|
||||
.append(nodeContext.scopeId()) //
|
||||
.append(nodeScope.context()) //
|
||||
.append(nodeScope.scope()) //
|
||||
.append(nodeScope.scopeId()) //
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,66 +0,0 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.index;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.domain.IndexNodeAttributes;
|
||||
import cn.axzo.nanopart.doc.api.domain.NodeCreate;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileScope;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeContext;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class NodeCreateCopy implements NodeCreate {
|
||||
|
||||
private final IndexNode copyNode;
|
||||
private final String destParentCode;
|
||||
private final String name;
|
||||
|
||||
@Override
|
||||
public String parentCode() {
|
||||
return destParentCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String bizCode() {
|
||||
return copyNode.getBizCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return copyNode.getDescription();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String icon() {
|
||||
return copyNode.icon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexNodeAttributes attributes() {
|
||||
return copyNode.getOrCreateAttributes().copy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexNodeContext context() {
|
||||
return copyNode.getContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileScope scope() {
|
||||
return copyNode.getScope();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long scopeId() {
|
||||
return copyNode.getScopeId();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.index.domain;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.nanopart.doc.api.enums.IndexNodeType;
|
||||
import cn.axzo.nanopart.doc.api.index.IndexNodeInfo;
|
||||
import cn.axzo.nanopart.doc.entity.IndexNode;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class IndexNodes {
|
||||
|
||||
private final List<IndexNode> indexNodes;
|
||||
|
||||
public static IndexNodes wrap(List<IndexNode> indexNodes) {
|
||||
return new IndexNodes(indexNodes);
|
||||
}
|
||||
|
||||
public List<String> collectCodes(IndexNodeType nodeType) {
|
||||
return indexNodes.stream() //
|
||||
.filter(node -> node.getNodeType() == nodeType) //
|
||||
.map(IndexNode::getCode) //
|
||||
.collect(toList());
|
||||
}
|
||||
|
||||
public List<IndexNodeInfo> toIndexNodeInfos() {
|
||||
if (indexNodes == null)
|
||||
return Collections.emptyList();
|
||||
return BeanMapper.copyList(indexNodes, IndexNodeInfo.class);
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
package cn.axzo.nanopart.doc.file.index;
|
||||
|
||||
package cn.axzo.nanopart.doc.file.index.domain;
|
||||
|
||||
import cn.axzo.basics.common.exception.ServiceException;
|
||||
|
||||
@ -7,8 +8,8 @@ import cn.axzo.basics.common.exception.ServiceException;
|
||||
*/
|
||||
public class NameUsedException extends ServiceException {
|
||||
|
||||
public NameUsedException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
public NameUsedException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
package cn.axzo.nanopart.doc.file.index;
|
||||
|
||||
package cn.axzo.nanopart.doc.file.index.domain;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import lombok.Getter;
|
||||
@ -13,8 +14,8 @@ import lombok.experimental.Accessors;
|
||||
@RequiredArgsConstructor
|
||||
public class OssFile {
|
||||
|
||||
private final FileFormat format;
|
||||
private final String code;
|
||||
private final String ossFileKey;
|
||||
private final FileFormat format;
|
||||
private final String code;
|
||||
private final String ossFileKey;
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.file.templatedb;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.index.IndexNodeInfo;
|
||||
import cn.axzo.nanopart.doc.api.index.request.CopyNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.DeleteNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.GetNodeChildrenRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.IndexNodePageSearchRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.MoveNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.index.request.RenameNodeRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDatabaseRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseGetDatabaseOrDirInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUpdateDatabaseOrDirInfoRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUploadFileRequest;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.response.TemplateDatabaseGetDatabaseOrDirInfoResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.templatedb.TemplateDatabaseApi;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.file.index.IndexManager;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class TemplateDatabaseApiController implements TemplateDatabaseApi {
|
||||
|
||||
private final TemplateDatabaseManager templateDatabaseManager;
|
||||
private final IndexManager indexManager;
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> createDatabase(TemplateDatabaseCreateDatabaseRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> createDir(TemplateDatabaseCreateDirRequest request) {
|
||||
return CommonResponse.success(templateDatabaseManager.createDir(request));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> createFile(TemplateDatabaseCreateFileRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> uploadFile(TemplateDatabaseUploadFileRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> rename(RenameNodeRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> copy(CopyNodeRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> move(MoveNodeRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> delete(DeleteNodeRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<IndexNodeInfo>> getChildren(GetNodeChildrenRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<IndexNodeInfo>> search(IndexNodePageSearchRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<TemplateDatabaseGetDatabaseOrDirInfoResponse> getDatabaseOrDirInfo(
|
||||
TemplateDatabaseGetDatabaseOrDirInfoRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> updateDatabaseOrDirInfo(TemplateDatabaseUpdateDatabaseOrDirInfoRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package cn.axzo.nanopart.doc.file.templatedb;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDirRequest;
|
||||
import cn.axzo.nanopart.doc.dao.TemplateDatabaseDao;
|
||||
import cn.axzo.nanopart.doc.file.index.IndexManager;
|
||||
import cn.axzo.nanopart.doc.utils.BizTransactional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TemplateDatabaseManager {
|
||||
|
||||
private final IndexManager indexManager;
|
||||
private final TemplateDatabaseDao templateDatabaseDao;
|
||||
|
||||
@BizTransactional
|
||||
public String createDir(TemplateDatabaseCreateDirRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,9 +1,12 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.integration;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.FileFormat;
|
||||
import cn.axzo.nanopart.doc.config.DocProps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
@ -13,17 +16,24 @@ import lombok.RequiredArgsConstructor;
|
||||
@RequiredArgsConstructor
|
||||
public class OssClient {
|
||||
|
||||
public String copy(String srcOssFileKey, String destFileName, FileFormat format) {
|
||||
private final DocProps docProps;
|
||||
|
||||
public String copy(String srcOssFileKey, FileFormat format, String fileName) {
|
||||
// TODO(yl): finish this
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public String upload(String fileBase64, String fileName, FileFormat format) {
|
||||
public void asyncDelete(String ossFileKey) {
|
||||
// TODO(yl): finish this
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void safeDelete(String ossFileKey) {
|
||||
public void asyncDelete(Set<String> ossFileKeys) {
|
||||
// TODO(yl): finish this
|
||||
}
|
||||
|
||||
public void rename(String ossFileKey, String newName) {
|
||||
// TODO(yl): finish this
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user