REQ-3540: 添加entity

This commit is contained in:
yanglin 2025-03-10 14:01:27 +08:00
parent 3e5a77fbb6
commit c2451c7625
34 changed files with 324 additions and 283 deletions

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.autoconfig;
import org.springframework.cloud.openfeign.EnableFeignClients;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.domain;
import java.util.Collections;
@ -11,22 +12,23 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class DatabaseAccessConfig {
/**
* 谁可以管理该空间. PEOPLE_HAS_MANAGE_PERMISSION: 拥有"可管理"权限的所有人, WORKSPACE_AND_DATABASE_SUPER_ADMIN: 租房超级管理员空间超管
*/
private DatabaseManageOption manageOption;
/**
* 谁可以管理该空间. PEOPLE_HAS_MANAGE_PERMISSION: 拥有"可管理"权限的所有人, WORKSPACE_AND_DATABASE_SUPER_ADMIN: 租房超级管理员空间超管
*/
private DatabaseManageOption manageOption;
/**
* 协作企业可见范围. ALL_ORGS_IN_PROJECT: 项目内所有企业可见, ORGS_BY_COOPERATE_TYPES: 指定参建单位可见
*/
private CooperationAccessOption cooperationAccessOption;
/**
* 协作企业可见范围. ALL_ORGS_IN_PROJECT: 项目内所有企业可见, ORGS_BY_COOPERATE_TYPES: 指定参建单位可见
*/
private CooperationAccessOption cooperationAccessOption;
/**
* 指定参建单位可见. 1: 总包, 13: 设计单位, 12: 勘察单位, 3: 监理单位, 5: 专业分包, 4: 劳务分包, 9: 项目内班组
*/
private Set<Integer> accessCooperateTypes = Collections.emptySet();
/**
* 指定参建单位可见. 1: 总包, 13: 设计单位, 12: 勘察单位, 3: 监理单位, 5: 专业分包, 4: 劳务分包, 9: 项目内班组
*/
private Set<Integer> accessCooperateTypes = Collections.emptySet();
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.domain;
import cn.axzo.nanopart.doc.api.enums.CooperationType;
@ -11,9 +12,9 @@ import lombok.Setter;
@Getter
public class DatabaseAttributes {
/**
* PRIVATE: 协作模式, SHARED: 共享模式
*/
private CooperationType databaseCooperationType;
/**
* PRIVATE: 协作模式, SHARED: 共享模式
*/
private CooperationType databaseCooperationType;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.domain;
import java.math.BigDecimal;
@ -13,24 +14,24 @@ import lombok.Setter;
@Getter
public class DatabaseFeeConfig {
/**
* 空间收费方式. FREE: 免费, ANNUAL: 年费制, ONE_TIME_FEE: 买断
*/
private FileTemplateFeeType feeType;
/**
* 空间收费方式. FREE: 免费, ANNUAL: 年费制, ONE_TIME_FEE: 买断
*/
private FileTemplateFeeType feeType;
/**
* 费用
*/
private BigDecimal fee;
/**
* 费用
*/
private BigDecimal fee;
/**
* 基础容量
*/
private Integer basicCapacity;
/**
* 基础容量
*/
private Integer basicCapacity;
/**
* 是否支持扩容
*/
private Boolean extendable;
/**
* 是否支持扩容
*/
private Boolean extendable;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.domain;
import lombok.Getter;
@ -10,6 +11,12 @@ import lombok.Setter;
@Getter
public class IndexNodeAttributes {
private DatabaseAttributes databaseAttributes;;
private DatabaseAttributes databaseAttributes;
}
public DatabaseAttributes getOrCreateDatabaseAttributes() {
if (databaseAttributes == null)
databaseAttributes = new DatabaseAttributes();
return databaseAttributes;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,9 +6,9 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum CooperationAccessOption {
// 项目内所有企业可见
ALL_ORGS_IN_PROJECT,
// 指定参建单位可见
ORGS_BY_COOPERATE_TYPES
// 项目内所有企业可见
ALL_ORGS_IN_PROJECT,
// 指定参建单位可见
ORGS_BY_COOPERATE_TYPES
}
}

View File

@ -1,8 +1,9 @@
package cn.axzo.nanopart.doc.api.enums;
/**
* @author yanglin
*/
public enum CooperationType {
PRIVATE, SHARED
}
PRIVATE, SHARED
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,9 +6,9 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum DatabaseManageOption {
// 拥有"可管理"权限的所有人
PEOPLE_HAS_MANAGE_PERMISSION,
// 租房超级管理员空间超管
WORKSPACE_AND_DATABASE_SUPER_ADMIN,
// 拥有"可管理"权限的所有人
PEOPLE_HAS_MANAGE_PERMISSION,
// 租房超级管理员空间超管
WORKSPACE_AND_DATABASE_SUPER_ADMIN,
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,10 +6,10 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum FileDatabaseState {
// 开通中
ACTIVATING,
// 已开通
ACTIVATED,
// 已到期
EXPIRED
// 开通中
ACTIVATING,
// 已开通
ACTIVATED,
// 已到期
EXPIRED
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,8 +6,8 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum FileFeeType {
// 用户买断
ONE_TIME_FEE_PER_PERSON,
// 按项目买断
ONE_TIME_FEE_PER_PROJECT
// 用户买断
ONE_TIME_FEE_PER_PERSON,
// 按项目买断
ONE_TIME_FEE_PER_PROJECT
}

View File

@ -1,15 +1,16 @@
package cn.axzo.nanopart.doc.api.enums;
/**
* @author yanglin
*/
public enum FileScope {
//
NONE,
// 企业数据库
ENT_DATABASE,
// 项目数据库
PROJECT_DATABASE,
// 个人数据库
PERSONAL_DATABASE
//
NONE,
// 企业数据库
ENT_DATABASE,
// 项目数据库
PROJECT_DATABASE,
// 个人数据库
PERSONAL_DATABASE
}

View File

@ -1,13 +1,14 @@
package cn.axzo.nanopart.doc.api.enums;
/**
* @author yanglin
*/
public enum FileTemplateFeeType {
// 免费
FREE,
// 年费制
ANNUAL,
// 买断
ONE_TIME_FEE
}
// 免费
FREE,
// 年费制
ANNUAL,
// 买断
ONE_TIME_FEE
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,9 +6,9 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum FileTemplateState {
// DRAFT
DRAFT,
// PUBLISHED
PUBLISHED
// DRAFT
DRAFT,
// PUBLISHED
PUBLISHED
}
}

View File

@ -1,11 +1,12 @@
package cn.axzo.nanopart.doc.api.enums;
/**
* @author yanglin
*/
public enum FileVipFeeType {
// 会员免费
VIP_FREE,
// 会员折扣
VIP_DISCOUNT
// 会员免费
VIP_FREE,
// 会员折扣
VIP_DISCOUNT
}

View File

@ -1,15 +1,16 @@
package cn.axzo.nanopart.doc.api.enums;
/**
* @author yanglin
*/
public enum IndexNodeContext {
// 系统内置
SYSTEM,
// 文件模版
FILE_TEMPLATE,
// 模版数据库
TEMPLATE_DATABASE,
// 数据库
FILE_DATABASE
// 系统内置
SYSTEM,
// 文件模版
FILE_TEMPLATE,
// 模版数据库
TEMPLATE_DATABASE,
// 数据库
FILE_DATABASE
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,8 +6,8 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum IndexNodeState {
// 有效的
VALID,
// 已删除
DELETED
// 有效的
VALID,
// 已删除
DELETED
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.enums;
/**
@ -5,11 +6,11 @@ package cn.axzo.nanopart.doc.api.enums;
*/
public enum IndexNodeType {
// 空间(数据库)
DATABASE,
// 目录
DIRECTORY,
// 文件
FILE
// 空间(数据库)
DATABASE,
// 目录
DIRECTORY,
// 文件
FILE
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.api.wps;
import org.springframework.cloud.openfeign.FeignClient;
@ -10,7 +11,4 @@ import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}")
public interface WpsApi {
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.dao;
import cn.axzo.nanopart.doc.entity.FileDatabase;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.dao;
import cn.axzo.nanopart.doc.entity.FileTemplate;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.dao;
import org.springframework.stereotype.Repository;
@ -12,4 +13,4 @@ import cn.axzo.nanopart.doc.mapper.IndexNodeMapper;
*/
@Repository
public class IndexNodeDao extends ServiceImpl<IndexNodeMapper, IndexNode> {
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.dao;
import cn.axzo.nanopart.doc.entity.TemplateDatabase;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.entity;
import java.util.Date;
@ -19,54 +20,54 @@ import lombok.Setter;
@TableName(value = "doc_file_database", autoResultMap = true)
public class FileDatabase extends BaseEntity<FileDatabase> {
/**
* 编码, 和index_node中对应的节点一致
*/
private String code;
/**
* 编码, 和index_node中对应的节点一致
*/
private String code;
/**
* 业务编码
*/
private String bizCode;
/**
* 业务编码
*/
private String bizCode;
/**
* 对应的模版数据的编码
*/
private String templateDatabaseCode;
/**
* 对应的模版数据的编码
*/
private String templateDatabaseCode;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
*/
private Long scopeId;
/**
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
*/
private Long scopeId;
/**
* 状态. ACTIVATING: 开通中, ACTIVATED: 已开通, EXPIRED: 已到期
*/
private FileDatabaseState state;
/**
* 状态. ACTIVATING: 开通中, ACTIVATED: 已开通, EXPIRED: 已到期
*/
private FileDatabaseState state;
/**
* 是否需要付费. YES: 需要, NO: 不需要
*/
private YesOrNo needFee;
/**
* 是否需要付费. YES: 需要, NO: 不需要
*/
private YesOrNo needFee;
/**
* 到期时间
*/
private Date expireDate;
/**
* 到期时间
*/
private Date expireDate;
/**
* 购买容量, 单位GB
*/
private Integer allowedCapacity;
/**
* 购买容量, 单位GB
*/
private Integer allowedCapacity;
/**
* 已使用的容量, 单位GB
*/
private Integer usedCapacity;
/**
* 已使用的容量, 单位GB
*/
private Integer usedCapacity;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.entity;
import cn.axzo.nanopart.doc.api.enums.FileFeeType;
@ -19,38 +20,38 @@ import java.math.BigDecimal;
@TableName(value = "doc_file_template", autoResultMap = true)
public class FileTemplate extends BaseEntity<FileTemplate> {
/**
* 文件编码, 和index_node对应的节点code保持一致
*/
private String code;
/**
* 文件编码, 和index_node对应的节点code保持一致
*/
private String code;
/**
* 状态. DRAFT: 草稿, PUBLISHED: 已发布
*/
private FileTemplateState state;
/**
* 状态. DRAFT: 草稿, PUBLISHED: 已发布
*/
private FileTemplateState state;
/**
* 是否需要付费. YES: , NO:
*/
private YesOrNo needFee;
/**
* 是否需要付费. YES: , NO:
*/
private YesOrNo needFee;
/**
* 收费模版, ONE_TIME_FEE_PER_PERSON: 用户买断, ONE_TIME_FEE_PER_PROJECT: 按项目买断
*/
private FileFeeType feeType;
/**
* 收费模版, ONE_TIME_FEE_PER_PERSON: 用户买断, ONE_TIME_FEE_PER_PROJECT: 按项目买断
*/
private FileFeeType feeType;
/**
* 金额
*/
private BigDecimal fee;
/**
* 金额
*/
private BigDecimal fee;
/**
* 会员收费方式. VIP_FREE: 会员免费, VIP_DISCOUNT: 会员折扣
*/
private FileVipFeeType vipFeeType;
/**
* 会员收费方式. VIP_FREE: 会员免费, VIP_DISCOUNT: 会员折扣
*/
private FileVipFeeType vipFeeType;
/**
* 会员费用
*/
private BigDecimal vipFee;
/**
* 会员费用
*/
private BigDecimal vipFee;
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.entity;
import cn.axzo.nanopart.doc.api.enums.FileScope;
@ -20,75 +21,81 @@ import lombok.Setter;
@TableName(value = "doc_index_node", autoResultMap = true)
public class IndexNode extends BaseEntity<IndexNode> {
/**
* 父节点id
*/
private Long parentId;
/**
* 父节点id
*/
private Long parentId;
/**
* 系统编码
*/
private String code;
/**
* 系统编码
*/
private String code;
/**
* 节点名称
*/
private String name;
/**
* 节点名称
*/
private String name;
/**
* 业务编码
*/
private String bizCode;
/**
* 业务编码
*/
private String bizCode;
/**
* 节点类型. DATABASE: 空间(数据库), DIRECTORY: 目录, FILE: 文件
*/
private IndexNodeType nodeType;
/**
* 节点类型. DATABASE: 空间(数据库), DIRECTORY: 目录, FILE: 文件
*/
private IndexNodeType nodeType;
/**
* 上下文. NONE: 无上下文, SYSTEM: 系统内置, FILE_TEMPLATE: 文件模版, TEMPLATE_DATABASE: 模版数据库, FILE_DATABASE: 数据库
*/
private IndexNodeContext context;
/**
* 上下文. NONE: 无上下文, SYSTEM: 系统内置, FILE_TEMPLATE: 文件模版, TEMPLATE_DATABASE: 模版数据库, FILE_DATABASE: 数据库
*/
private IndexNodeContext context;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
*/
private Long scopeId;
/**
* 作用范围id. 单位数据库存ouId, 项目数据库存workspaceId, 个人数据库存personId
*/
private Long scopeId;
/**
* 路径, id拼起来, 以斜杠开头和结束. /1/2/3/
*/
private String path;
/**
* 路径, id拼起来, 以斜杠开头和结束. /1/2/3/
*/
private String path;
/**
* 描述信息
*/
private String description;
/**
* 描述信息
*/
private String description;
/**
* 图标
*/
private String icon;
/**
* 图标
*/
private String icon;
/**
* 文件的大小(bytes), 只有文件才存这个字段
*/
private Integer size;
/**
* 文件的大小(bytes), 只有文件才存这个字段
*/
private Integer size;
/**
* 状态. VALID: 有效的, DELETED: 已删除
*/
private IndexNodeState state;
/**
* 状态. VALID: 有效的, DELETED: 已删除
*/
private IndexNodeState state;
/**
* 属性. 不同node_type的属性可能不一样
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private IndexNodeAttributes attributes;
/**
* 属性. 不同node_type的属性可能不一样
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private IndexNodeAttributes attributes;
}
public IndexNodeAttributes getOrCreateAttributes() {
if (attributes == null)
attributes = new IndexNodeAttributes();
return attributes;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.entity;
import cn.axzo.nanopart.doc.api.enums.FileScope;
@ -19,26 +20,26 @@ import lombok.Setter;
@TableName(value = "doc_template_database", autoResultMap = true)
public class TemplateDatabase extends BaseEntity<TemplateDatabase> {
/**
* 编码, 和index_node中对应节点的编码保持一致
*/
private String code;
/**
* 编码, 和index_node中对应节点的编码保持一致
*/
private String code;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 作用范围. NONE: , ENT_DATABASE: 企业数据库, PROJECT_DATABASE: 项目数据库, PERSONAL_DATABASE: 个人数据库
*/
private FileScope scope;
/**
* 费用配置
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private DatabaseFeeConfig feeConfig;
/**
* 费用配置
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private DatabaseFeeConfig feeConfig;
/**
* 安全配置
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private DatabaseAccessConfig accessConfig;
/**
* 安全配置
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private DatabaseAccessConfig accessConfig;
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.http;
import org.springframework.context.annotation.Configuration;
@ -13,12 +14,11 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class EssWebMvcConfigurer implements WebMvcConfigurer {
private final RequestNoInterceptor requestNoInterceptor;
private final RequestNoInterceptor requestNoInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(requestNoInterceptor)
.addPathPatterns("/**");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(requestNoInterceptor).addPathPatterns("/**");
}
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.mapper;
import cn.axzo.nanopart.doc.entity.DocLog;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.mapper;
import cn.axzo.nanopart.doc.entity.FileDatabase;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.mapper;
import cn.axzo.nanopart.doc.entity.FileTemplate;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.mapper;
import org.apache.ibatis.annotations.Mapper;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.mapper;
import cn.axzo.nanopart.doc.entity.TemplateDatabase;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.utils;
import java.util.UUID;
@ -15,12 +16,12 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class UUIDUtil {
public static String uuidString() {
String str = UUID.randomUUID().toString();
return str.replaceAll("-", "");
}
public static String uuidString() {
String str = UUID.randomUUID().toString();
return str.replaceAll("-", "");
}
public static String uuidRawString() {
return UUID.randomUUID().toString();
}
public static String uuidRawString() {
return UUID.randomUUID().toString();
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.doc.utils;
import com.baomidou.mybatisplus.annotation.EnumValue;
@ -13,28 +14,26 @@ import lombok.Getter;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum YesOrNo implements CodeDefinition<String> {
YES("YES", ""),
NO("NO", "")
;
YES("YES", ""), NO("NO", "");
@EnumValue
private final String code;
private final String desc;
@EnumValue
private final String code;
private final String desc;
public static YesOrNo valueOf(boolean value) {
return value ? YES : NO;
}
public static YesOrNo valueOf(boolean value) {
return value ? YES : NO;
}
public boolean booleanValue() {
return this == YES;
}
public boolean booleanValue() {
return this == YES;
}
public boolean isYes() {
return this == YES;
}
public boolean isYes() {
return this == YES;
}
public boolean isNo() {
return this == NO;
}
public boolean isNo() {
return this == NO;
}
}