From b7b44bea63764d618cdee3ad00a928bc069f262f Mon Sep 17 00:00:00 2001 From: icanci Date: Mon, 21 Aug 2023 18:54:31 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biz/pom.xml | 5 ++ .../loopstack/bic/common/model/BaseVO.java | 58 +------------ .../loopstack/bic/common/model/BuryingVO.java | 67 +-------------- .../bic/common/model/EdgeFuncVO.java | 14 ++++ .../loopstack/bic/common/model/EdgeVO.java | 14 ++++ .../bic/common/model/NodeFuncVO.java | 14 ++++ .../bic/common/model/NodeRelationVO.java | 14 ++++ .../loopstack/bic/common/model/NodeVO.java | 14 ++++ .../loopstack/bic/common/utils/IdHolder.java | 30 +++++++ .../bic/dal/mongo/dateobject/BaseDO.java | 58 +------------ .../bic/dal/mongo/dateobject/BuryingDO.java | 67 +-------------- .../bic/dal/mongo/mongo/AbstractBaseDAO.java | 4 +- .../bic/dal/mongo/utils/IDHolder.java | 40 --------- .../utils/service/IDGeneratorService.java | 15 ---- .../service/impl/IDGeneratorServiceImpl.java | 31 ------- graph/pom.xml | 7 ++ .../loopstack/bic/graph/NodePortConstant.java | 14 ++++ .../builder/EdgeDefaultDefineBuilder.java | 10 +++ .../builder/NodeDefaultDefineBuilder.java | 66 +++++++++++++++ .../icanci/loopstack/bic/graph/edge/Edge.java | 23 +++++ .../loopstack/bic/graph/edge/EdgeAttrs.java | 12 +++ .../bic/graph/edge/EdgeAttrsLine.java | 15 ++++ .../bic/graph/edge/EdgeConsumerInfo.java | 15 ++++ .../bic/graph/edge/EdgeHistoryInfo.java | 14 ++++ .../loopstack/bic/graph/edge/EdgeLabel.java | 13 +++ .../bic/graph/edge/EdgeLabelAttrs.java | 12 +++ .../bic/graph/edge/EdgeLabelAttrsLabel.java | 12 +++ .../bic/graph/edge/EdgeLabelPosition.java | 13 +++ .../loopstack/bic/graph/edge/EdgePoint.java | 19 +++++ .../bic/graph/function/BicFunction.java | 15 ++++ .../bic/graph/function/FuncContext.java | 8 ++ .../graph/function/FuncInvokeResponse.java | 8 ++ .../function/edge/EdgeClickFunction.java | 17 ++++ .../graph/function/edge/EdgeFuncContext.java | 13 +++ .../graph/function/node/NodeFuncContext.java | 12 +++ .../icanci/loopstack/bic/graph/node/Node.java | 16 ++++ .../loopstack/bic/graph/node/NodeAttrs.java | 13 +++ .../bic/graph/node/NodeAttrsBody.java | 15 ++++ .../bic/graph/node/NodeAttrsLabel.java | 21 +++++ .../loopstack/bic/graph/node/NodePort.java | 15 ++++ .../bic/graph/node/NodePortGroup.java | 13 +++ .../bic/graph/node/NodePortGroupAttrs.java | 12 +++ .../graph/node/NodePortGroupAttrsCircle.java | 16 ++++ .../bic/graph/node/NodePortGroups.java | 13 +++ .../bic/graph/node/NodePortItem.java | 21 +++++ .../bic/graph/builder/TestNodeBuilder.java | 18 ++++ pom.xml | 13 +++ .../bic/sdk/BicAutoConfiguration.java | 32 +++++++ .../loopstack/bic/sdk/package-info.java | 5 ++ .../bic/sdk/properties/BicProperties.java | 83 +++++++++++++++++++ .../bic/sdk/system/LoggerLevelEnum.java | 26 ++++++ .../bic/sdk/system/SystemConstant.java | 26 ++++++ .../bic/sdk/thread/BicDataCachePool.java | 10 +++ .../bic/sdk/thread/BicEscalationService.java | 14 ++++ .../sdk/thread/BicEscalationServiceImpl.java | 18 ++++ .../loopstack/bic/sdk/utils/BicUtils.java | 46 ++++++++++ .../src/views/bic-view/demo-view-edge-data.js | 1 + 57 files changed, 886 insertions(+), 324 deletions(-) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/utils/IdHolder.java delete mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/IDHolder.java delete mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/IDGeneratorService.java delete mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/impl/IDGeneratorServiceImpl.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/NodePortConstant.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/Edge.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrs.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrsLine.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeConsumerInfo.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeHistoryInfo.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabel.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrs.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrsLabel.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelPosition.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgePoint.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/Node.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrs.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsBody.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsLabel.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePort.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroup.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrs.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrsCircle.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroups.java create mode 100644 graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortItem.java create mode 100644 graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/BicAutoConfiguration.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/package-info.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/properties/BicProperties.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/LoggerLevelEnum.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/SystemConstant.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicDataCachePool.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationService.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationServiceImpl.java create mode 100644 sdk/src/main/java/cn/icanci/loopstack/bic/sdk/utils/BicUtils.java diff --git a/biz/pom.xml b/biz/pom.xml index 8b57e56..7001a9b 100644 --- a/biz/pom.xml +++ b/biz/pom.xml @@ -38,6 +38,11 @@ 1.8 1.8 + + org.projectlombok + lombok + ${lombok.version} + org.mapstruct mapstruct-processor diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java index bc498af..cf3af38 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java @@ -1,14 +1,16 @@ package cn.icanci.loopstack.bic.common.model; import java.util.Date; -import java.util.StringJoiner; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + /** * @author icanci * @since 1.0 Created in 2023/08/19 15:08 */ +@Data public class BaseVO { /** mongodb id */ private String id; @@ -24,58 +26,4 @@ public class BaseVO { private boolean deleted; /** 环境 */ private String env; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public boolean isDeleted() { - return deleted; - } - - public void setDeleted(boolean deleted) { - this.deleted = deleted; - } - - public String getEnv() { - return env; - } - - public void setEnv(String env) { - this.env = env; - } - - @Override - public String toString() { - return new StringJoiner(",").add("id=" + id).add("uuid=" + uuid).add("createTime=" + createTime).add("updateTime=" + updateTime).add("deleted=" + deleted).add("env=" + env) - .toString(); - } } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java index 9fdf85d..29ed51b 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java @@ -1,6 +1,6 @@ package cn.icanci.loopstack.bic.common.model; -import java.util.StringJoiner; +import lombok.Data; /** * 埋点模型 @@ -8,6 +8,7 @@ import java.util.StringJoiner; * @author icanci * @since 1.0 Created in 2023/08/19 14:43 */ +@Data public class BuryingVO extends BaseVO { /** TraceId */ private String traceId; @@ -23,66 +24,6 @@ public class BuryingVO extends BaseVO { private long time; /** 执行数据 */ private String message; - - public String getTraceId() { - return traceId; - } - - public void setTraceId(String traceId) { - this.traceId = traceId; - } - - public String getBusinessNo() { - return businessNo; - } - - public void setBusinessNo(String businessNo) { - this.businessNo = businessNo; - } - - public String getSystemKey() { - return systemKey; - } - - public void setSystemKey(String systemKey) { - this.systemKey = systemKey; - } - - public String getModule() { - return module; - } - - public void setModule(String module) { - this.module = module; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - @Override - public String toString() { - return new StringJoiner(",").add("traceId=" + traceId).add("businessNo=" + businessNo).add("systemKey=" + systemKey).add("module=" + module).add("category=" + category) - .add("time=" + time).add("message=" + message).toString(); - } + /** 日志等级 */ + private String loggerLevel; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java new file mode 100644 index 0000000..f0dd655 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 边函数模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:54 + */ +@Data +public class EdgeFuncVO extends BaseVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java new file mode 100644 index 0000000..e1940ca --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 边模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:54 + */ +@Data +public class EdgeVO extends BaseVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java new file mode 100644 index 0000000..5201944 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 节点函数模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:54 + */ +@Data +public class NodeFuncVO extends BaseVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java new file mode 100644 index 0000000..a176321 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 节点关联模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:57 + */ +@Data +public class NodeRelationVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java new file mode 100644 index 0000000..6271d39 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 节点模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:54 + */ +@Data +public class NodeVO extends BaseVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/utils/IdHolder.java b/common/src/main/java/cn/icanci/loopstack/bic/common/utils/IdHolder.java new file mode 100644 index 0000000..acecc0b --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/utils/IdHolder.java @@ -0,0 +1,30 @@ +package cn.icanci.loopstack.bic.common.utils; + +import org.apache.commons.lang3.RandomUtils; + +import cn.hutool.core.lang.Snowflake; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:50 + */ +public class IdHolder { + /** 雪花序列号生成算法 */ + private static final Snowflake SNOW_FLAKE = new Snowflake(RandomUtils.nextInt(1, 9), RandomUtils.nextInt(1, 9)); + + private static final String DEFAULT_PREFIX = "BIC"; + + public static String generateBySnowFlake(String prefix) { + return prefix + SNOW_FLAKE.nextId(); + } + + /** + * 通过雪花算法生成唯一id,默认 BIC + * + * @return id + */ + public static String generateNoBySnowFlakeDefaultPrefix() { + return generateBySnowFlake(DEFAULT_PREFIX); + } + +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BaseDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BaseDO.java index d81a1be..31b165d 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BaseDO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BaseDO.java @@ -1,7 +1,8 @@ package cn.icanci.loopstack.bic.dal.mongo.dateobject; +import lombok.Data; + import java.util.Date; -import java.util.StringJoiner; import org.springframework.data.annotation.Id; @@ -11,6 +12,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; * @author icanci * @since 1.0 Created in 2023/08/19 17:52 */ +@Data public class BaseDO { /** mongodb id */ @Id @@ -27,58 +29,4 @@ public class BaseDO { private boolean deleted; /** 环境 */ private String env; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public boolean isDeleted() { - return deleted; - } - - public void setDeleted(boolean deleted) { - this.deleted = deleted; - } - - public String getEnv() { - return env; - } - - public void setEnv(String env) { - this.env = env; - } - - @Override - public String toString() { - return new StringJoiner(",").add("id=" + id).add("uuid=" + uuid).add("createTime=" + createTime).add("updateTime=" + updateTime).add("deleted=" + deleted).add("env=" + env) - .toString(); - } } diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java index e10bd73..1f6cc0a 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java @@ -1,11 +1,12 @@ package cn.icanci.loopstack.bic.dal.mongo.dateobject; -import java.util.StringJoiner; +import lombok.Data; /** * @author icanci * @since 1.0 Created in 2023/08/19 17:52 */ +@Data public class BuryingDO extends BaseDO { /** TraceId */ private String traceId; @@ -21,66 +22,6 @@ public class BuryingDO extends BaseDO { private long time; /** 执行数据 */ private String message; - - public String getTraceId() { - return traceId; - } - - public void setTraceId(String traceId) { - this.traceId = traceId; - } - - public String getBusinessNo() { - return businessNo; - } - - public void setBusinessNo(String businessNo) { - this.businessNo = businessNo; - } - - public String getSystemKey() { - return systemKey; - } - - public void setSystemKey(String systemKey) { - this.systemKey = systemKey; - } - - public String getModule() { - return module; - } - - public void setModule(String module) { - this.module = module; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - @Override - public String toString() { - return new StringJoiner(",").add("traceId=" + traceId).add("businessNo=" + businessNo).add("systemKey=" + systemKey).add("module=" + module).add("category=" + category) - .add("time=" + time).add("message=" + message).toString(); - } + /** 日志等级 */ + private String loggerLevel; } diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/AbstractBaseDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/AbstractBaseDAO.java index cd8757c..0d3818e 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/AbstractBaseDAO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/AbstractBaseDAO.java @@ -5,10 +5,10 @@ import java.util.List; import org.springframework.beans.factory.InitializingBean; +import cn.icanci.loopstack.bic.common.utils.IdHolder; import cn.icanci.loopstack.bic.dal.mongo.daointerface.BaseDAO; import cn.icanci.loopstack.bic.dal.mongo.dateobject.BaseDO; import cn.icanci.loopstack.bic.dal.mongo.utils.EnvUtils; -import cn.icanci.loopstack.bic.dal.mongo.utils.IDHolder; /** * @author icanci @@ -45,6 +45,6 @@ public abstract class AbstractBaseDAO extends MongoPageHelper t.setCreateTime(new Date()); t.setUpdateTime(new Date()); t.setEnv(DEFAULT_ENV); - t.setUuid(IDHolder.generateNoBySnowFlakeDefaultPrefix()); + t.setUuid(IdHolder.generateNoBySnowFlakeDefaultPrefix()); } } diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/IDHolder.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/IDHolder.java deleted file mode 100644 index a5ff232..0000000 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/IDHolder.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.icanci.loopstack.bic.dal.mongo.utils; - -import cn.icanci.loopstack.bic.dal.mongo.utils.service.IDGeneratorService; - -/** - * Id 生成器 - * - * @author icanci - * @since 1.0 Created in 2022/11/11 14:18 - */ -public class IDHolder { - /** 分布式id服务 */ - private static IDGeneratorService idGeneratorService; - - private static final String DEFAULT_PREFIX = "BIC"; - - public static void setIdGeneratorService(IDGeneratorService idGeneratorService) { - IDHolder.idGeneratorService = idGeneratorService; - } - - /** - * 通过雪花算法生成唯一id - * - * @param prefix 前缀 - * @return id - */ - public static String generateNoBySnowFlake(String prefix) { - return idGeneratorService.generateBySnowFlake(prefix); - } - - /** - * 通过雪花算法生成唯一id,默认 BIC - * - * @return id - */ - public static String generateNoBySnowFlakeDefaultPrefix() { - return idGeneratorService.generateBySnowFlake(DEFAULT_PREFIX); - } - -} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/IDGeneratorService.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/IDGeneratorService.java deleted file mode 100644 index 549dee9..0000000 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/IDGeneratorService.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.icanci.loopstack.bic.dal.mongo.utils.service; - -/** - * @author icanci - * @since 1.0 Created in 2022/10/30 08:43 - */ -public interface IDGeneratorService { - /** - * 生成唯一id - * - * @param prefix 前缀 - * @return id - */ - String generateBySnowFlake(String prefix); -} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/impl/IDGeneratorServiceImpl.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/impl/IDGeneratorServiceImpl.java deleted file mode 100644 index a699202..0000000 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/utils/service/impl/IDGeneratorServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.icanci.loopstack.bic.dal.mongo.utils.service.impl; - -import org.apache.commons.lang3.RandomUtils; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.stereotype.Service; - -import cn.hutool.core.lang.Snowflake; -import cn.icanci.loopstack.bic.dal.mongo.utils.IDHolder; -import cn.icanci.loopstack.bic.dal.mongo.utils.service.IDGeneratorService; - -/** - * 分布式ID生成器 - * - * @author icanci - * @since 1.0 Created in 2022/10/30 08:43 - */ -@Service -public class IDGeneratorServiceImpl implements IDGeneratorService, InitializingBean { - /** 雪花序列号生成算法 */ - private static final Snowflake SNOW_FLAKE = new Snowflake(RandomUtils.nextInt(1, 9), RandomUtils.nextInt(1, 9)); - - @Override - public String generateBySnowFlake(String prefix) { - return prefix + SNOW_FLAKE.nextId(); - } - - @Override - public void afterPropertiesSet() throws Exception { - IDHolder.setIdGeneratorService(this); - } -} diff --git a/graph/pom.xml b/graph/pom.xml index 61ec566..64ec656 100644 --- a/graph/pom.xml +++ b/graph/pom.xml @@ -16,4 +16,11 @@ 8 + + + cn.icanci.loopstack.bic + bic-common + ${parent.version} + + \ No newline at end of file diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/NodePortConstant.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/NodePortConstant.java new file mode 100644 index 0000000..404a61c --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/NodePortConstant.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.graph; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:12 + */ +public interface NodePortConstant { + String RIGHT = "right"; + String LEFT = "left"; + String PORT_RIGHT = "port-right"; + String PORT_LEFT = "port-left"; + String IN = "in"; + String OUT = "out"; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java new file mode 100644 index 0000000..a9bc4eb --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java @@ -0,0 +1,10 @@ +package cn.icanci.loopstack.bic.graph.builder; + +/** + * 边默认属性构建器 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:03 + */ +public class EdgeDefaultDefineBuilder { +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java new file mode 100644 index 0000000..72cdcba --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java @@ -0,0 +1,66 @@ +package cn.icanci.loopstack.bic.graph.builder; + +import java.util.List; + +import com.google.common.collect.Lists; + +import cn.icanci.loopstack.bic.graph.NodePortConstant; +import cn.icanci.loopstack.bic.graph.node.*; + +/** + * 节点默认属性构建器 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 14:03 + */ +public class NodeDefaultDefineBuilder { + + /** + * 构建默认 Node Port + * + * @return 返回NodePort + */ + public static NodePort buildNodePort() { + NodePort nodePort = new NodePort(); + nodePort.setGroups(buildGroups()); + nodePort.setItems(buildItems()); + return nodePort; + } + + private static NodePortGroups buildGroups() { + NodePortGroups groups = new NodePortGroups(); + groups.setIn(buildGroup(NodePortConstant.LEFT)); + groups.setOut(buildGroup(NodePortConstant.RIGHT)); + return groups; + } + + private static NodePortGroup buildGroup(String position) { + NodePortGroup group = new NodePortGroup(); + group.setPosition(position); + group.setAttrs(buildAttrs()); + return group; + } + + private static NodePortGroupAttrs buildAttrs() { + NodePortGroupAttrs attrs = new NodePortGroupAttrs(); + attrs.setCircle(buildCircle()); + return attrs; + } + + private static NodePortGroupAttrsCircle buildCircle() { + NodePortGroupAttrsCircle circle = new NodePortGroupAttrsCircle(); + circle.setR(2); + circle.setMagnet(true); + circle.setStroke("#31d0c6"); + circle.setStrokeWidth(2); + circle.setFill("#fff"); + return circle; + } + + private static List buildItems() { + List ret = Lists.newArrayList(); + ret.add(new NodePortItem(NodePortConstant.PORT_LEFT, NodePortConstant.IN)); + ret.add(new NodePortItem(NodePortConstant.PORT_RIGHT, NodePortConstant.OUT)); + return ret; + } +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/Edge.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/Edge.java new file mode 100644 index 0000000..4393874 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/Edge.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +import java.util.List; + +/** + * AntV X6 边模型 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 13:10 + */ +@Data +public class Edge { + private EdgePoint source; + private EdgePoint target; + private EdgeAttrs attrs; + private String router; + private String connector; + private List labels; + private EdgeConsumerInfo consumerInfo; + private EdgeHistoryInfo historyInfo; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrs.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrs.java new file mode 100644 index 0000000..9a1c735 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrs.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:14 + */ +@Data +public class EdgeAttrs { + private EdgeAttrsLine line; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrsLine.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrsLine.java new file mode 100644 index 0000000..e6d827e --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeAttrsLine.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:17 + */ +@Data +public class EdgeAttrsLine { + /** 线条颜色 */ + private String stroke; + /** 线条宽度 默认为 1 */ + private int strokeWidth; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeConsumerInfo.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeConsumerInfo.java new file mode 100644 index 0000000..25e9766 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeConsumerInfo.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import java.util.List; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:28 + */ +@Data +public class EdgeConsumerInfo { + private EdgeAttrs attrs; + private List labels; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeHistoryInfo.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeHistoryInfo.java new file mode 100644 index 0000000..9a0969d --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeHistoryInfo.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * empty object + * + * @author icanci + * @since 1.0 Created in 2023/08/21 13:28 + */ +@Data +public class EdgeHistoryInfo { + +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabel.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabel.java new file mode 100644 index 0000000..3370037 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabel.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:29 + */ +@Data +public class EdgeLabel { + private EdgeLabelAttrs attrs; + private EdgeLabelPosition position; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrs.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrs.java new file mode 100644 index 0000000..c1f11bf --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrs.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:29 + */ +@Data +public class EdgeLabelAttrs { + private EdgeLabelAttrsLabel label; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrsLabel.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrsLabel.java new file mode 100644 index 0000000..9661ea8 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelAttrsLabel.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:29 + */ +@Data +public class EdgeLabelAttrsLabel { + private String text; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelPosition.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelPosition.java new file mode 100644 index 0000000..80cb7a2 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgeLabelPosition.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:31 + */ +@Data +public class EdgeLabelPosition { + /** 表示label在节点之间的相对位置取值 0~1 */ + private int distance; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgePoint.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgePoint.java new file mode 100644 index 0000000..7c46aa7 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/edge/EdgePoint.java @@ -0,0 +1,19 @@ +package cn.icanci.loopstack.bic.graph.edge; + +import cn.icanci.loopstack.bic.graph.NodePortConstant; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:11 + */ +@Data +public class EdgePoint { + /** Node 节点id */ + private String cell; + /** + * 节点连接端口 + * @see NodePortConstant + */ + private String port; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java new file mode 100644 index 0000000..42fc8f1 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.graph.function; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:42 + */ +public interface BicFunction { + /** + * 函数调用结果 + * + * @param context 函数调用上下文 + * @return 返回函数调用结果 + */ + FuncInvokeResponse invoke(FuncContext context); +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java new file mode 100644 index 0000000..69ca115 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java @@ -0,0 +1,8 @@ +package cn.icanci.loopstack.bic.graph.function; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:39 + */ +public interface FuncContext { +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java new file mode 100644 index 0000000..cdfcd14 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java @@ -0,0 +1,8 @@ +package cn.icanci.loopstack.bic.graph.function; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:43 + */ +public interface FuncInvokeResponse { +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java new file mode 100644 index 0000000..2f8f497 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.graph.function.edge; + +import cn.icanci.loopstack.bic.graph.function.BicFunction; +import cn.icanci.loopstack.bic.graph.function.FuncContext; +import cn.icanci.loopstack.bic.graph.function.FuncInvokeResponse; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:42 + */ +public class EdgeClickFunction implements BicFunction { + + @Override + public FuncInvokeResponse invoke(FuncContext context) { + return null; + } +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java new file mode 100644 index 0000000..328a0b5 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.function.edge; + +import cn.icanci.loopstack.bic.graph.function.FuncContext; + +/** + * 边函数节点上下文 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 13:39 + */ +public class EdgeFuncContext implements FuncContext { + +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java new file mode 100644 index 0000000..12ee12c --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.function.node; + +import cn.icanci.loopstack.bic.graph.function.FuncContext; + +/** + * Node节点函数上下文 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 13:40 + */ +public class NodeFuncContext implements FuncContext { +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/Node.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/Node.java new file mode 100644 index 0000000..e9ad1ec --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/Node.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:48 + */ +@Data +public class Node { + private String id; + private String shape; + private double width; + private double height; + private NodeAttrs attrs; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrs.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrs.java new file mode 100644 index 0000000..e8395a9 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrs.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:56 + */ +@Data +public class NodeAttrs { + private NodeAttrsBody body; + private NodeAttrsLabel label; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsBody.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsBody.java new file mode 100644 index 0000000..5b18283 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsBody.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:56 + */ +@Data +public class NodeAttrsBody { + private String fill; + private String stroke; + private int rx; + private int ry; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsLabel.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsLabel.java new file mode 100644 index 0000000..0645050 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodeAttrsLabel.java @@ -0,0 +1,21 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 13:57 + */ +@Data +public class NodeAttrsLabel { + /** 节点标题 */ + private String text; + /** 节点字体颜色 */ + private String fill; + /** 节点字体大小 */ + private int fontSize; + /** 节点字体加粗 TODO*/ + private String fontWeight; + /** 字体 TODO */ + private String fontVariant; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePort.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePort.java new file mode 100644 index 0000000..6440980 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePort.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.graph.node; + +import java.util.List; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:00 + */ +@Data +public class NodePort { + private NodePortGroups groups; + private List items; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroup.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroup.java new file mode 100644 index 0000000..dcb6ffa --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroup.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:06 + */ +@Data +public class NodePortGroup { + private String position; + private NodePortGroupAttrs attrs; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrs.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrs.java new file mode 100644 index 0000000..4b1109b --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrs.java @@ -0,0 +1,12 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:06 + */ +@Data +public class NodePortGroupAttrs { + private NodePortGroupAttrsCircle circle; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrsCircle.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrsCircle.java new file mode 100644 index 0000000..8cad35c --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroupAttrsCircle.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:07 + */ +@Data +public class NodePortGroupAttrsCircle { + private int r; + private boolean magnet; + private String stroke; + private int strokeWidth; + private String fill; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroups.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroups.java new file mode 100644 index 0000000..5532008 --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortGroups.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:01 + */ +@Data +public class NodePortGroups { + private NodePortGroup in; + private NodePortGroup out; +} diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortItem.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortItem.java new file mode 100644 index 0000000..abe134c --- /dev/null +++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/NodePortItem.java @@ -0,0 +1,21 @@ +package cn.icanci.loopstack.bic.graph.node; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:01 + */ +@Data +public class NodePortItem { + private String id; + private String group; + + public NodePortItem() { + } + + public NodePortItem(String id, String group) { + this.id = id; + this.group = group; + } +} diff --git a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java new file mode 100644 index 0000000..8e0161f --- /dev/null +++ b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.graph.builder; + +import org.junit.Test; + +import cn.hutool.json.JSONUtil; +import cn.icanci.loopstack.bic.graph.node.NodePort; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 14:41 + */ +public class TestNodeBuilder { + @Test + public void test1() { + NodePort nodePort = NodeDefaultDefineBuilder.buildNodePort(); + System.out.println(JSONUtil.toJsonStr(nodePort)); + } +} diff --git a/pom.xml b/pom.xml index c22d155..3335290 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,7 @@ 1.4.2.Final 5.4.2 + 1.18.2 4.0.0 @@ -167,6 +168,13 @@ mapstruct ${mapstruct.version} + + + org.projectlombok + lombok + ${lombok.version} + compile + cn.hutool @@ -238,6 +246,11 @@ spring-boot-configuration-processor true + + org.projectlombok + lombok + provided + diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/BicAutoConfiguration.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/BicAutoConfiguration.java new file mode 100644 index 0000000..cefc3c1 --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/BicAutoConfiguration.java @@ -0,0 +1,32 @@ +package cn.icanci.loopstack.bic.sdk; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import cn.icanci.loopstack.bic.sdk.properties.BicProperties; + +/** + * @author icanci + * @since 1.0 Created in 2023/08/19 12:02 + */ +@Configuration +@ComponentScan({ "cn.icanci.loopstack.bic.sdk" }) +@EnableConfigurationProperties(BicProperties.class) +@AutoConfigureBefore +public class BicAutoConfiguration implements CommandLineRunner { + /** Spring 上下文 */ + private ApplicationContext context; + + public BicAutoConfiguration(ApplicationContext context) { + this.context = context; + } + + @Override + public void run(String... args) throws Exception { + // no op + } +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/package-info.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/package-info.java new file mode 100644 index 0000000..d7e023c --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/package-info.java @@ -0,0 +1,5 @@ +/** + * @author icanci + * @since 1.0 Created in 2023/08/21 15:46 + */ +package cn.icanci.loopstack.bic.sdk; \ No newline at end of file diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/properties/BicProperties.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/properties/BicProperties.java new file mode 100644 index 0000000..59c8130 --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/properties/BicProperties.java @@ -0,0 +1,83 @@ +package cn.icanci.loopstack.bic.sdk.properties; + +import java.util.StringJoiner; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 配置规则说明 TODO + * + * @author icanci + * @since 1.0 Created in 2023/08/19 12:03 + */ +@Component +@ConfigurationProperties(prefix = "bic") +public class BicProperties { + /** + * 系统标识 + */ + private String systemKey; + /** + * 同步写 + */ + private boolean synchronous; + /** + * bic服务端地址 + */ + private String bicServerUrl; + /** + * 最大批量写提交条数 + */ + private long maxBatchSize = 5000L; + /** + * 最大批量写提交时间 毫秒 + */ + private long maxBatchSubmitTime = 3000L; + + public String getSystemKey() { + return systemKey; + } + + public void setSystemKey(String systemKey) { + this.systemKey = systemKey; + } + + public boolean isSynchronous() { + return synchronous; + } + + public void setSynchronous(boolean synchronous) { + this.synchronous = synchronous; + } + + public String getBicServerUrl() { + return bicServerUrl; + } + + public void setBicServerUrl(String bicServerUrl) { + this.bicServerUrl = bicServerUrl; + } + + public long getMaxBatchSize() { + return maxBatchSize; + } + + public void setMaxBatchSize(long maxBatchSize) { + this.maxBatchSize = maxBatchSize; + } + + public long getMaxBatchSubmitTime() { + return maxBatchSubmitTime; + } + + public void setMaxBatchSubmitTime(long maxBatchSubmitTime) { + this.maxBatchSubmitTime = maxBatchSubmitTime; + } + + @Override + public String toString() { + return new StringJoiner(",").add("systemKey=" + systemKey).add("synchronous=" + synchronous).add("bicServerUrl=" + bicServerUrl).add("maxBatchSize=" + maxBatchSize) + .add("maxBatchSubmitTime=" + maxBatchSubmitTime).toString(); + } +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/LoggerLevelEnum.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/LoggerLevelEnum.java new file mode 100644 index 0000000..5d2271c --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/LoggerLevelEnum.java @@ -0,0 +1,26 @@ +package cn.icanci.loopstack.bic.sdk.system; + +/** + * 日志等级 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 15:50 + */ +public enum LoggerLevelEnum { + /** + * DEBUG + */ + DEBUG, + /** + * INFO + */ + INFO, + /** + * WARNING + */ + WARNING, + /** + * ERROR + */ + ERROR +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/SystemConstant.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/SystemConstant.java new file mode 100644 index 0000000..06ea064 --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/system/SystemConstant.java @@ -0,0 +1,26 @@ +package cn.icanci.loopstack.bic.sdk.system; + +/** + * 常量池 + * + * @author icanci + * @since 1.0 Created in 2023/08/19 12:15 + */ +public interface SystemConstant { + /** + * 默认最大批量写提交条数 + */ + long DEFAULT_MAX_BATCH_SIZE = 1000L; + /** + * 默认最大批量写提交条数 + */ + long MAX_BATCH_SIZE = 5000L; + /** + * 默认最大批量写提交时间 毫秒 + */ + long DEFAULT_MAX_BATCH_SUBMIT_TIME = 3000L; + /** + * 最大批量写提交时间 毫秒 + */ + long MAX_BATCH_SUBMIT_TIME = 10000L; +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicDataCachePool.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicDataCachePool.java new file mode 100644 index 0000000..9df3f3c --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicDataCachePool.java @@ -0,0 +1,10 @@ +package cn.icanci.loopstack.bic.sdk.thread; + +/** + * Bic 数据缓存池 + * + * @author icanci + * @since 1.0 Created in 2023/08/21 15:49 + */ +public class BicDataCachePool { +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationService.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationService.java new file mode 100644 index 0000000..97d5379 --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationService.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.sdk.thread; + +/** + * 数据上报服务 + * + * @author icanci + * @since 1.0 Created in 2023/08/19 12:21 + */ +public interface BicEscalationService { + /** + * 上报 + */ + void escalation(); +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationServiceImpl.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationServiceImpl.java new file mode 100644 index 0000000..a7f7460 --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/thread/BicEscalationServiceImpl.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.sdk.thread; + +import org.springframework.stereotype.Service; + +/** + * 数据上报服务 + * + * @author icanci + * @since 1.0 Created in 2023/08/19 12:21 + */ +@Service("bicEscalationService") +public class BicEscalationServiceImpl implements BicEscalationService { + + @Override + public void escalation() { + + } +} diff --git a/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/utils/BicUtils.java b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/utils/BicUtils.java new file mode 100644 index 0000000..84f34da --- /dev/null +++ b/sdk/src/main/java/cn/icanci/loopstack/bic/sdk/utils/BicUtils.java @@ -0,0 +1,46 @@ +package cn.icanci.loopstack.bic.sdk.utils; + +/** + * 写数据操作 + * - 1. 异步 or 同步 + * - 2. 业务号 + * - 3. 系统标识 可以从配置中取值 + * - 4. 模块 + * + * TODO TRACE < DEBUG < INFO < WARN < ERROR < FATAL + * + * @author icanci + * @since 1.0 Created in 2023/08/19 11:54 + */ +public class BicUtils { + + private BicUtils() { + + } + + /** + * 写日志 + * + * @param traceId 跟踪ID + * @param businessNo 业务号 + * @param module 模块 + * @param message 消息 + */ + public static void write(String unionId, String traceId, String businessNo, String useCase, String module, String message) { + + } + + /** + * 写日志 + * + * @param traceId 跟踪ID + * @param businessNo 业务号 + * @param systemKey 系统标识 + * @param module 模块 + * @param message 消息 + */ + public static void write(String unionId, String traceId, String businessNo, String systemKey, String module, String useCase, String message) { + + } + +} diff --git a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js index 3fdb4b0..60cd7d6 100644 --- a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js +++ b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js @@ -5,6 +5,7 @@ const demoViewEdgeData = [ attrs: { line: { stroke: '#7c68fc', + strokeWidth: 1, }, }, router: 'manhattan', -- Gitee From fc1fba4c647558fd033f8709a0f2bb57ba28a82d Mon Sep 17 00:00:00 2001 From: icanci Date: Wed, 30 Aug 2023 18:22:24 +0800 Subject: [PATCH 02/18] nodes --- .../src/views/bic-view/demo-view-edge-data.js | 8 +++- .../src/views/bic-view/demo-view-node-data.js | 46 +++++++++---------- .../vueboot/src/views/bic-view/demo-view.vue | 7 ++- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js index 60cd7d6..b7d09c9 100644 --- a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js +++ b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-edge-data.js @@ -5,7 +5,7 @@ const demoViewEdgeData = [ attrs: { line: { stroke: '#7c68fc', - strokeWidth: 1, + strokeWidth: 2, }, }, router: 'manhattan', @@ -27,7 +27,11 @@ const demoViewEdgeData = [ }, }] }, - historyInfo: {} + historyInfo: {}, + extendFunc: { + hover: "", + click: "" + } }, { source: {cell: "node1", port: 'port-right'}, target: {cell: 'node3', port: 'port-left'}, diff --git a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-node-data.js b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-node-data.js index 5013d40..5ec0ef9 100644 --- a/views/src/main/resources/vueboot/src/views/bic-view/demo-view-node-data.js +++ b/views/src/main/resources/vueboot/src/views/bic-view/demo-view-node-data.js @@ -71,7 +71,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '获取Fr2缓存', + text: '获取搜索缓存', fill: '#333', fontSize: 13, } @@ -128,7 +128,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '调用风控接口', + text: '调用函数1', fill: '#333', fontSize: 13, } @@ -185,7 +185,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '黑名单校验接口', + text: '调用函数2', fill: '#333', fontSize: 13, } @@ -242,7 +242,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数3', fill: '#333', fontSize: 13, } @@ -299,7 +299,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数4', fill: '#333', fontSize: 13, } @@ -356,7 +356,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数5', fill: '#333', fontSize: 13, } @@ -413,7 +413,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数6', fill: '#333', fontSize: 13, } @@ -470,7 +470,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数7', fill: '#333', fontSize: 13, } @@ -527,7 +527,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数8', fill: '#333', fontSize: 13, } @@ -584,7 +584,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数9', fill: '#333', fontSize: 13, } @@ -641,7 +641,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数10', fill: '#333', fontSize: 13, } @@ -698,7 +698,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数11', fill: '#333', fontSize: 13, } @@ -755,7 +755,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数12', fill: '#333', fontSize: 13, } @@ -812,7 +812,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数13', fill: '#333', fontSize: 13, } @@ -869,7 +869,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数14', fill: '#333', fontSize: 13, } @@ -926,7 +926,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数15', fill: '#333', fontSize: 13, } @@ -983,7 +983,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数16', fill: '#333', fontSize: 13, } @@ -1040,7 +1040,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数17', fill: '#333', fontSize: 13, } @@ -1097,7 +1097,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数18', fill: '#333', fontSize: 13, } @@ -1154,7 +1154,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数19', fill: '#333', fontSize: 13, } @@ -1211,7 +1211,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数10', fill: '#333', fontSize: 13, } @@ -1269,7 +1269,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数21', fill: '#333', fontSize: 13, } @@ -1327,7 +1327,7 @@ const demoViewNodeData = [ strokeDasharray: '10,2', }, label: { - text: '失信人校验接口', + text: '调用函数22', fill: '#333', fontSize: 13, } diff --git a/views/src/main/resources/vueboot/src/views/bic-view/demo-view.vue b/views/src/main/resources/vueboot/src/views/bic-view/demo-view.vue index f76bded..5faedec 100644 --- a/views/src/main/resources/vueboot/src/views/bic-view/demo-view.vue +++ b/views/src/main/resources/vueboot/src/views/bic-view/demo-view.vue @@ -2,8 +2,8 @@
- - 收货地址 + + 缓存信息:Xxx
@@ -108,6 +108,9 @@ export default { edge.store.data.historyInfo.labels = edge.getLabels() let tempData = edge.store.data; + let hover = tempData.extendFunc.hover; + // hover 的标准反参,可选配置 + edge.setAttrs(tempData.consumerInfo.attrs) edge.setLabels(tempData.consumerInfo.labels) }) -- Gitee From 0b567290322d51ff7a7fcfa6e7f9a5304857cf66 Mon Sep 17 00:00:00 2001 From: icanci Date: Tue, 5 Sep 2023 15:19:08 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/common/enums/FuncTypeEnum.java | 21 +++++++++ .../bic/common/enums/NodeTypeEnum.java | 28 +++++++++++ .../loopstack/bic/common/help/TODO.java | 18 +++++++ .../loopstack/bic/common/help/Tips.java | 18 +++++++ .../loopstack/bic/common/model/BaseVO.java | 1 + .../loopstack/bic/common/model/BuryingVO.java | 8 +++- .../loopstack/bic/common/model/EdgeVO.java | 17 ++++++- .../bic/common/model/NodeFuncVO.java | 47 +++++++++++++++++++ .../loopstack/bic/common/model/NodeVO.java | 16 ++++++- .../loopstack/bic/common/model/SystemVO.java | 15 ++++++ .../loopstack/bic/common/model/UseCaseVO.java | 17 +++++++ .../bic/dal/mongo/dateobject/BuryingDO.java | 10 +++- graph/pom.xml | 4 ++ .../bic/graph/builder/TestNodeBuilder.java | 6 +-- .../bic/web/controller/BuryingController.java | 2 + .../web/controller/NodeFuncController.java | 16 +++++++ 16 files changed, 237 insertions(+), 7 deletions(-) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/help/TODO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/help/Tips.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeFuncController.java diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java new file mode 100644 index 0000000..b0be082 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java @@ -0,0 +1,21 @@ +package cn.icanci.loopstack.bic.common.enums; + +import lombok.Getter; + +/** + * 函数类型 + * + * @author icanci + * @since 1.0 Created in 2023/09/02 21:18 + */ +@Getter +public enum FuncTypeEnum { + /** + * 点击函数 + */ + CLICK, + /** + * Hover函数 + */ + HOVER +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java new file mode 100644 index 0000000..5f7fec4 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java @@ -0,0 +1,28 @@ +package cn.icanci.loopstack.bic.common.enums; + +import lombok.Getter; + +/** + * 节点类型 + * - 根节点: 纠察图的起点,一定是虚节点 + * - 虚节点: 纠察图的某个业务节点,其通过子业务推导而来 + * - 实节点: 真实的埋点业务节点 + * + * @author icanci + * @since 1.0 Created in 2023/09/02 21:18 + */ +@Getter +public enum NodeTypeEnum { + /** + * 根节点: 纠察图的起点,一定是虚节点 + */ + ROOT, + /** + * 虚节点: 纠察图的某个业务节点,其通过子业务推导而来 + */ + VIRTUAL, + /** + * 实节点: 真实的埋点业务节点 + */ + REAL, +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/help/TODO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/help/TODO.java new file mode 100644 index 0000000..efc3c1d --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/help/TODO.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.common.help; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * TODO 标识需要做的东西 + * + * @author icanci + * @since 1.0 Created in 2023/09/02 21:27 + */ +@Target({ ElementType.FIELD, ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR }) +@Retention(RetentionPolicy.SOURCE) +public @interface TODO { + String value(); +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/help/Tips.java b/common/src/main/java/cn/icanci/loopstack/bic/common/help/Tips.java new file mode 100644 index 0000000..c3fdf2d --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/help/Tips.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.common.help; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Tips 标识需要做的东西 + * + * @author icanci + * @since 1.0 Created in 2023/09/02 21:27 + */ +@Target({ ElementType.FIELD, ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR }) +@Retention(RetentionPolicy.SOURCE) +public @interface Tips { + String value(); +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java index cf3af38..d44d9b0 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BaseVO.java @@ -26,4 +26,5 @@ public class BaseVO { private boolean deleted; /** 环境 */ private String env; + } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java index 29ed51b..6298231 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java @@ -16,10 +16,16 @@ public class BuryingVO extends BaseVO { private String businessNo; /** 系统应用唯一标识 */ private String systemKey; + /** 应用系统用例 */ + private String useCase; /** 模块 */ private String module; - /** 子模块,用于区分同模块下不同的展示类型 */ + /** 分类,用于区分同模块下不同的展示类型 */ private String category; + /** 子模块,用于区分同模块下不同的展示类型 */ + private String subCategory; + /** 扩展属性 */ + private String ext; /** 时间 */ private long time; /** 执行数据 */ diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java index e1940ca..6427533 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java @@ -1,14 +1,29 @@ package cn.icanci.loopstack.bic.common.model; +import cn.icanci.loopstack.bic.common.help.TODO; +import cn.icanci.loopstack.bic.common.help.Tips; import lombok.Data; /** * 边模型 + * - 边具备2种函数类型。其中@hover函数所有都提供默认实现,只支持自定义颜色;其中@click函数暂不支持自定义 + * - 边的函数定义暂无意义,因此这里,暂不进行实现 * * @author icanci * @since 1.0 Created in 2023/08/21 14:54 */ @Data public class EdgeVO extends BaseVO { - + /** 边命名 */ + private String edgeName; + /** 入节点 */ + private String entryNodeId; + /** 出节点 */ + private String exitNodeId; + /** hover 函数id */ + @Tips("@hover函数所有都提供默认实现,现阶段只支持自定义颜色") + private String hoverFuncId; + /** click 函数id */ + @TODO("边的函数定义暂无意义,因此这里,暂不进行实现") + private String clickFuncId; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java index 5201944..337a5a0 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java @@ -1,7 +1,10 @@ package cn.icanci.loopstack.bic.common.model; +import cn.icanci.loopstack.bic.common.help.TODO; import lombok.Data; +import org.apache.commons.lang3.StringUtils; + /** * 节点函数模型 * @@ -10,5 +13,49 @@ import lombok.Data; */ @Data public class NodeFuncVO extends BaseVO { + /** + * 节点函数所属系统 + * 必填 + */ + private String systemUuid; + /** + * 节点函数所属用例 + * 必填 + */ + private String useCaseUuid; + /** + * 节点函数所属模块 + */ + private String module; + /** + * 节点函数所属category + */ + private String category; + /** + * 节点函数所属subCategory + */ + private String subCategory; + + /** + * 节点函数类型 + * + * @see cn.icanci.loopstack.bic.common.enums.FuncTypeEnum#name() + */ + private String funcType; + /** + * 节点函数名称 + */ + private String funcName; + /** + * 节点函数体 + */ + private String funcBody; + /** + * 唯一ID表示 + */ + @TODO("唯一ID标识,每个节点,都有其自己的属性,可以通过唯一ID标识来识别") + public String unionId() { + return StringUtils.join(systemUuid, useCaseUuid, module, category, subCategory); + } } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java index 6271d39..e7a60bf 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.model; +import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import lombok.Data; /** @@ -10,5 +11,18 @@ import lombok.Data; */ @Data public class NodeVO extends BaseVO { - + /** 节点名称 */ + private String nodeName; + /** 用例uuid */ + private String useCaseUuid; + /** 系统关联标识 */ + private String systemUuid; + /** hover 函数id */ + private String hoverFuncId; + /** click 函数id */ + private String clickFuncId; + /** 样式 */ + private String ui; + /** 节点类型 */ + private NodeTypeEnum nodeType; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java new file mode 100644 index 0000000..64668ae --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/02 21:08 + */ +@Data +public class SystemVO extends BaseVO { + /** 系统名称 */ + private String systemName; + /** 系统唯一标识 */ + private String systemKey; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java new file mode 100644 index 0000000..4c47348 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/02 21:09 + */ +@Data +public class UseCaseVO extends BaseVO { + /** 用例名称,系统唯一 */ + private String useCaseName; + /** 用例标识,系统唯一 */ + private String useCaseKey; + /** 系统关联标识 */ + private String systemUuid; +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java index 1f6cc0a..3d79c30 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/BuryingDO.java @@ -1,12 +1,14 @@ package cn.icanci.loopstack.bic.dal.mongo.dateobject; import lombok.Data; +import lombok.EqualsAndHashCode; /** * @author icanci * @since 1.0 Created in 2023/08/19 17:52 */ @Data +@EqualsAndHashCode(callSuper = true) public class BuryingDO extends BaseDO { /** TraceId */ private String traceId; @@ -14,10 +16,16 @@ public class BuryingDO extends BaseDO { private String businessNo; /** 系统应用唯一标识 */ private String systemKey; + /** 应用系统用例 */ + private String useCase; /** 模块 */ private String module; - /** 子模块,用于区分同模块下不同的展示类型 */ + /** 分类,用于区分同模块下不同的展示类型 */ private String category; + /** 子模块,用于区分同模块下不同的展示类型 */ + private String subCategory; + /** 扩展属性 */ + private String ext; /** 时间 */ private long time; /** 执行数据 */ diff --git a/graph/pom.xml b/graph/pom.xml index 64ec656..b46b3ab 100644 --- a/graph/pom.xml +++ b/graph/pom.xml @@ -11,6 +11,10 @@ bic-graph + + AntV X6 视图模型 + + 8 8 diff --git a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java index 8e0161f..1f771c6 100644 --- a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java +++ b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java @@ -1,17 +1,17 @@ package cn.icanci.loopstack.bic.graph.builder; -import org.junit.Test; - import cn.hutool.json.JSONUtil; import cn.icanci.loopstack.bic.graph.node.NodePort; +import org.junit.Test; + /** * @author icanci * @since 1.0 Created in 2023/08/21 14:41 */ public class TestNodeBuilder { @Test - public void test1() { + public void testBuildNodePort() { NodePort nodePort = NodeDefaultDefineBuilder.buildNodePort(); System.out.println(JSONUtil.toJsonStr(nodePort)); } diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/BuryingController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/BuryingController.java index 5c0ea95..088590f 100644 --- a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/BuryingController.java +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/BuryingController.java @@ -10,6 +10,8 @@ import cn.icanci.loopstack.bic.biz.service.BuryingService; import cn.icanci.loopstack.bic.common.result.R; /** + * 埋点查询控制器 + * * @author icanci * @since 1.0 Created in 2023/08/19 18:34 */ diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeFuncController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeFuncController.java new file mode 100644 index 0000000..d5f3f23 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeFuncController.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.web.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 节点函数控制器 + * + * @author icanci + * @since 1.0 Created in 2023/09/02 21:33 + */ +@RestController +@RequestMapping("/bicAdmin/node/func") +public class NodeFuncController { + +} -- Gitee From c266c4ee67bbb55b30c142798e27c3f4fb6533b5 Mon Sep 17 00:00:00 2001 From: icanci Date: Fri, 8 Sep 2023 23:54:42 +0800 Subject: [PATCH 04/18] =?UTF-8?q?MVP=20=E7=89=88=E6=9C=AC=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/common/enums/NodeDataModeEnum.java | 20 ++++++++++++++++ .../bic/common/enums/NodeTypeEnum.java | 9 +++++-- .../loopstack/bic/common/model/BuryingVO.java | 2 ++ .../bic/common/model/NodeStyleVO.java | 14 +++++++++++ .../loopstack/bic/common/model/NodeVO.java | 21 +++++++++------- web/src/main/resources/.gitkeep | 0 web/src/main/resources/json/logs.json | 24 +++++++++++++++++++ 7 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java create mode 100644 web/src/main/resources/.gitkeep create mode 100644 web/src/main/resources/json/logs.json diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java new file mode 100644 index 0000000..f198bf4 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java @@ -0,0 +1,20 @@ +package cn.icanci.loopstack.bic.common.enums; + +/** + * 节点数据匹配模式 + * - 前缀匹配: 只匹配前缀值 + * - 全部匹配: 全部匹配才绑定数据 + * + * @author icanci + * @since 1.0 Created in 2023/09/08 10:45 + */ +public enum NodeDataModeEnum { + /** + * 前缀匹配: 只匹配前缀值 + */ + PREFIX, + /** + * 全部匹配: 全部匹配才绑定数据 + */ + ALL +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java index 5f7fec4..5378633 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java @@ -4,9 +4,10 @@ import lombok.Getter; /** * 节点类型 - * - 根节点: 纠察图的起点,一定是虚节点 + * - 根节点: 纠察图的起点,一定是实节点或虚节点 * - 虚节点: 纠察图的某个业务节点,其通过子业务推导而来 * - 实节点: 真实的埋点业务节点 + * - 孩子节点:孩子节点: 真实的埋点业务节点 * * @author icanci * @since 1.0 Created in 2023/09/02 21:18 @@ -14,7 +15,7 @@ import lombok.Getter; @Getter public enum NodeTypeEnum { /** - * 根节点: 纠察图的起点,一定是虚节点 + * 根节点: 纠察图的起点,一定是实节点或虚节点 */ ROOT, /** @@ -25,4 +26,8 @@ public enum NodeTypeEnum { * 实节点: 真实的埋点业务节点 */ REAL, + /** + * 孩子节点: 真实的埋点业务节点 + */ + CHILD } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java index 6298231..208a969 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java @@ -32,4 +32,6 @@ public class BuryingVO extends BaseVO { private String message; /** 日志等级 */ private String loggerLevel; + /** 数据的唯一标识 */ + private String uniqueKey; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java new file mode 100644 index 0000000..67110a8 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.common.model; + +import lombok.Data; + +/** + * 节点样式 + * + * @author icanci + * @since 1.0 Created in 2023/09/08 10:42 + */ +@Data +public class NodeStyleVO extends BaseVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java index e7a60bf..4c7fd3a 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.model; +import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import lombok.Data; @@ -12,17 +13,19 @@ import lombok.Data; @Data public class NodeVO extends BaseVO { /** 节点名称 */ - private String nodeName; - /** 用例uuid */ - private String useCaseUuid; - /** 系统关联标识 */ - private String systemUuid; + private String nodeName; + /** 节点Key */ + private String nodeKey; + /** 节点Data模式:前缀匹配、全部匹配 */ + private NodeDataModeEnum nodeDataMode; + /** 节点DataKey: UseCase-Module-Category-SubCategory */ + private String nodeDataKey; /** hover 函数id */ - private String hoverFuncId; + private String hoverFuncId; /** click 函数id */ - private String clickFuncId; + private String clickFuncId; /** 样式 */ - private String ui; + private String styleId; /** 节点类型 */ - private NodeTypeEnum nodeType; + private NodeTypeEnum nodeType; } diff --git a/web/src/main/resources/.gitkeep b/web/src/main/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/web/src/main/resources/json/logs.json b/web/src/main/resources/json/logs.json new file mode 100644 index 0000000..8ee68c6 --- /dev/null +++ b/web/src/main/resources/json/logs.json @@ -0,0 +1,24 @@ +[ + { + "systemKey": "iflight.java.dsf.tradecore", + "useCase": "bookValidate", + "traceId": "TC20230907154200P4AQRPKF2B70CEOKZV0N7O8743RNXCBJ1RVGFLDIOOA9L6N8", + "businessNo": "", + "module": "BOOK_VALIDATE", + "category": "FR2", + "subCategory": "", + "time": "2023-09-07 15:47:41.868", + "message": "{\"currency\":\"\",\"language\":\"\",\"loginKey\":\"\",\"member\":null,\"pricingSerialNo\":\"TC_QJD_HSQJD\",\"reqPassengers\":[{\"passengerNum\":1,\"passengerType\":1},{\"passengerNum\":0,\"passengerType\":2},{\"passengerNum\":0,\"passengerType\":3}],\"resource\":852,\"resourceId\":\"EBOOKING-PRICING\",\"searchCondition\":{\"arrivalCity\":\"VTE\",\"bookingClass\":\"\",\"departureCity\":\"CAN\",\"departureDate\":\"2023-09-08\",\"flatType\":\"\",\"maxAge\":0,\"minAge\":0,\"nationList\":[],\"reqPassengers\":[],\"returnDate\":\"1900-01-01\",\"travelType\":\"OW\"},\"traceId\":\"TC20230907154200P4AQRPKF2B70CEOKZV0N7O8743RNXCBJ1RVGFLDIOOA9L6N8\",\"unitGuid\":\"CORE~20230907154207^OW_CAN/VTE/20230908_ADT-1|CHD-0|INF-0_Y|S|F|C_3319424961810663376_SIMPLE_0_V11^CZ6091_20230908^NORMAL\",\"unitKey\":\"NORMAL_GW_-7202149149514880210_ZYHSQJD_148390996\"}" + }, + { + "systemKey": "iflight.java.dsf.tradecore", + "useCase": "bookValidate", + "traceId": "TC20230907154200P4AQRPKF2B70CEOKZV0N7O8743RNXCBJ1RVGFLDIOOA9L6N8", + "businessNo": "", + "module": "BOOK_VALIDATE", + "category": "FR2", + "subCategory": "", + "time": "2023-09-07 15:48:41.868", + "message": "{\"code\":\"\",\"message\":\"\",\"priceChange\":false,\"prices\":[],\"remainCabinNum\":\"\",\"rule\":null,\"success\":true}" + } +] \ No newline at end of file -- Gitee From 08c1d0a1ae242c820bf9c028d5db72882e6414ac Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 9 Sep 2023 09:56:48 +0800 Subject: [PATCH 05/18] =?UTF-8?q?MVP=20=E7=89=88=E6=9C=AC=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convertor/AbstractBaseConverter.java | 48 +++++++++++++++++++ .../biz/mapper/convertor/BaseConverter.java | 23 +++++++++ .../convertor/FuncTypeEnumConverter.java | 14 ++++++ .../bic/common/enums/FuncTypeEnum.java | 13 +++-- .../bic/common/enums/NodeDataModeEnum.java | 13 ++++- .../bic/common/enums/NodeTypeEnum.java | 14 ++++-- .../bic/common/model/NodeStyleVO.java | 5 +- 7 files changed, 120 insertions(+), 10 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/AbstractBaseConverter.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/BaseConverter.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/FuncTypeEnumConverter.java diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/AbstractBaseConverter.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/AbstractBaseConverter.java new file mode 100644 index 0000000..4d7b24f --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/AbstractBaseConverter.java @@ -0,0 +1,48 @@ +package cn.icanci.loopstack.bic.biz.mapper.convertor; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +import org.apache.commons.lang3.StringUtils; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 17:03 + */ +public abstract class AbstractBaseConverter> implements BaseConverter { + @Override + public String asString(T t) { + if (t != null) { + return t.name(); + } + return null; + } + + @SuppressWarnings("all") + @Override + public T asEnum(String str) { + if (StringUtils.isBlank(str)) { + return null; + } + Class clazz = getClass(); + Class actualTypeArgument = (Class) GenericSuperclassUtil.getActualTypeArgument(clazz); + return (T) T.valueOf(actualTypeArgument, str); + } + + /** + * 获取泛型类Class对象,不是泛型类则返回null + */ + private static final class GenericSuperclassUtil { + public static Class getActualTypeArgument(Class clazz) { + Class entityClass = null; + Type genericSuperclass = clazz.getGenericSuperclass(); + if (genericSuperclass instanceof ParameterizedType) { + Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass).getActualTypeArguments(); + if (actualTypeArguments != null && actualTypeArguments.length > 0) { + entityClass = (Class) actualTypeArguments[0]; + } + } + return entityClass; + } + } +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/BaseConverter.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/BaseConverter.java new file mode 100644 index 0000000..9302ea0 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/BaseConverter.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.biz.mapper.convertor; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 17:03 + */ +public interface BaseConverter> { + /** + * 枚举转编码 + * + * @param t 枚举 + * @return 编码 + */ + String asString(T t); + + /** + * 编码转枚举 + * + * @param str 编码 + * @return 枚举 + */ + T asEnum(String str); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/FuncTypeEnumConverter.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/FuncTypeEnumConverter.java new file mode 100644 index 0000000..afd300b --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/FuncTypeEnumConverter.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.biz.mapper.convertor; + +import org.springframework.stereotype.Component; + +import cn.icanci.loopstack.bic.common.enums.FuncTypeEnum; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 17:03 + */ +@Component +public class FuncTypeEnumConverter extends AbstractBaseConverter { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java index b0be082..3577aaf 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.enums; +import lombok.AllArgsConstructor; import lombok.Getter; /** @@ -9,13 +10,19 @@ import lombok.Getter; * @since 1.0 Created in 2023/09/02 21:18 */ @Getter +@AllArgsConstructor public enum FuncTypeEnum { /** - * 点击函数 + * Click函数 */ - CLICK, + CLICK("CLICK", "Click函数"), /** * Hover函数 */ - HOVER + HOVER("HOVER", "Hover函数"); + + private final String code; + + private final String desc; + } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java index f198bf4..8786058 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeDataModeEnum.java @@ -1,5 +1,8 @@ package cn.icanci.loopstack.bic.common.enums; +import lombok.AllArgsConstructor; +import lombok.Getter; + /** * 节点数据匹配模式 * - 前缀匹配: 只匹配前缀值 @@ -8,13 +11,19 @@ package cn.icanci.loopstack.bic.common.enums; * @author icanci * @since 1.0 Created in 2023/09/08 10:45 */ +@Getter +@AllArgsConstructor public enum NodeDataModeEnum { /** * 前缀匹配: 只匹配前缀值 */ - PREFIX, + PREFIX("PREFIX", "前缀匹配"), /** * 全部匹配: 全部匹配才绑定数据 */ - ALL + ALL("ALL", "全部匹配"); + + private final String code; + + private final String desc; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java index 5378633..6719437 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeTypeEnum.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.enums; +import lombok.AllArgsConstructor; import lombok.Getter; /** @@ -13,21 +14,26 @@ import lombok.Getter; * @since 1.0 Created in 2023/09/02 21:18 */ @Getter +@AllArgsConstructor public enum NodeTypeEnum { /** * 根节点: 纠察图的起点,一定是实节点或虚节点 */ - ROOT, + ROOT("ROOT", "根节点"), /** * 虚节点: 纠察图的某个业务节点,其通过子业务推导而来 */ - VIRTUAL, + VIRTUAL("VIRTUAL", "虚节点"), /** * 实节点: 真实的埋点业务节点 */ - REAL, + REAL("REAL", "实节点"), /** * 孩子节点: 真实的埋点业务节点 */ - CHILD + CHILD("CHILD", "孩子节点"); + + private final String code; + + private final String desc; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java index 67110a8..ef72a37 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java @@ -10,5 +10,8 @@ import lombok.Data; */ @Data public class NodeStyleVO extends BaseVO { - + /** 节点样式名称 */ + private String nodeStyleName; + /** json格式的数据格式 */ + private String style; } -- Gitee From dcabf8029fd18cc2833ce1d20ab9045d8cac022b Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 9 Sep 2023 22:30:10 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=9B=BE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loopstack/bic/common/model/BuryingVO.java | 1 + .../common/model/{ => base}/EdgeFuncVO.java | 3 +- .../bic/common/model/{ => base}/EdgeVO.java | 3 +- .../common/model/{ => base}/NodeFuncVO.java | 28 ++++++++++--------- .../model/{ => base}/NodeRelationVO.java | 2 +- .../common/model/{ => base}/NodeStyleVO.java | 3 +- .../bic/common/model/{ => base}/NodeVO.java | 3 +- .../bic/common/model/{ => base}/SystemVO.java | 3 +- .../common/model/{ => base}/UseCaseVO.java | 3 +- .../bic/common/model/graph/UnitEdgeVO.java | 11 ++++++++ .../bic/common/model/graph/UnitNodeVO.java | 10 +++++++ .../bic/common/model/graph/UnitViewVO.java | 20 +++++++++++++ .../bic/common/model/package-info.java | 5 ++++ 13 files changed, 75 insertions(+), 20 deletions(-) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/EdgeFuncVO.java (61%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/EdgeVO.java (89%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/NodeFuncVO.java (64%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/NodeRelationVO.java (75%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/NodeStyleVO.java (73%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/NodeVO.java (89%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/SystemVO.java (70%) rename common/src/main/java/cn/icanci/loopstack/bic/common/model/{ => base}/UseCaseVO.java (76%) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/package-info.java diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java index 208a969..44ba9de 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/BuryingVO.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.model; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java similarity index 61% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java index f0dd655..bec6586 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeFuncVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java @@ -1,5 +1,6 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java similarity index 89% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java index 6427533..24fe720 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/EdgeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java @@ -1,7 +1,8 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; import cn.icanci.loopstack.bic.common.help.TODO; import cn.icanci.loopstack.bic.common.help.Tips; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java similarity index 64% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java index 337a5a0..89d0899 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeFuncVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java @@ -1,12 +1,14 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; +import org.apache.commons.lang3.StringUtils; + +import cn.icanci.loopstack.bic.common.enums.FuncTypeEnum; import cn.icanci.loopstack.bic.common.help.TODO; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; -import org.apache.commons.lang3.StringUtils; - /** - * 节点函数模型 + * 节点动作韩胡思模型 * * @author icanci * @since 1.0 Created in 2023/08/21 14:54 @@ -17,39 +19,39 @@ public class NodeFuncVO extends BaseVO { * 节点函数所属系统 * 必填 */ - private String systemUuid; + private String systemUuid; /** * 节点函数所属用例 * 必填 */ - private String useCaseUuid; + private String useCaseUuid; /** * 节点函数所属模块 */ - private String module; + private String module; /** * 节点函数所属category */ - private String category; + private String category; /** * 节点函数所属subCategory */ - private String subCategory; + private String subCategory; /** * 节点函数类型 * - * @see cn.icanci.loopstack.bic.common.enums.FuncTypeEnum#name() + * @see FuncTypeEnum#getCode() */ - private String funcType; + private FuncTypeEnum funcType; /** * 节点函数名称 */ - private String funcName; + private String funcName; /** * 节点函数体 */ - private String funcBody; + private String funcBody; /** * 唯一ID表示 diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java similarity index 75% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java index a176321..0562a41 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeRelationVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java @@ -1,4 +1,4 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; import lombok.Data; diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeStyleVO.java similarity index 73% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeStyleVO.java index ef72a37..dc5a398 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeStyleVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeStyleVO.java @@ -1,5 +1,6 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java similarity index 89% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java index 4c7fd3a..4f6c644 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/NodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java @@ -1,7 +1,8 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java similarity index 70% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java index 64668ae..671660c 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/SystemVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java @@ -1,5 +1,6 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/UseCaseVO.java similarity index 76% rename from common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java rename to common/src/main/java/cn/icanci/loopstack/bic/common/model/base/UseCaseVO.java index 4c47348..5eadb9c 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/UseCaseVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/UseCaseVO.java @@ -1,5 +1,6 @@ -package cn.icanci.loopstack.bic.common.model; +package cn.icanci.loopstack.bic.common.model.base; +import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java new file mode 100644 index 0000000..d32dc5f --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java @@ -0,0 +1,11 @@ +package cn.icanci.loopstack.bic.common.model.graph; + +/** + * 图结构的边 + * + * @author icanci + * @since 1.0 Created in 2023/09/09 22:13 + */ +public class UnitEdgeVO { + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java new file mode 100644 index 0000000..ffebab9 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java @@ -0,0 +1,10 @@ +package cn.icanci.loopstack.bic.common.model.graph; + +/** + * 图结构的节点 + * + * @author icanci + * @since 1.0 Created in 2023/09/09 22:13 + */ +public class UnitNodeVO { +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java new file mode 100644 index 0000000..d87e953 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java @@ -0,0 +1,20 @@ +package cn.icanci.loopstack.bic.common.model.graph; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +import java.util.List; + +/** + * 图结构单元视图 + * + * @author icanci + * @since 1.0 Created in 2023/09/09 21:49 + */ +@Data +public class UnitViewVO extends BaseVO { + /** 边组织结构 */ + private List edges; + /** 节点组织结构 */ + private List nodes; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/package-info.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/package-info.java new file mode 100644 index 0000000..169217c --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/package-info.java @@ -0,0 +1,5 @@ +/** + * @author icanci + * @since 1.0 Created in 2023/09/09 22:10 + */ +package cn.icanci.loopstack.bic.common.model; \ No newline at end of file -- Gitee From d8e02ace479d8b7b88bf63e0bdb9b8f5e26ef4c6 Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 9 Sep 2023 23:25:47 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E5=9B=BE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/common/model/base/EdgeStyleVO.java | 18 ++++++++++++++++ .../bic/common/model/base/EdgeVO.java | 18 ++++------------ .../bic/common/model/base/NodeRelationVO.java | 14 ------------- .../bic/common/model/base/NodeVO.java | 20 ++++-------------- .../bic/common/model/graph/UnitNodeVO.java | 21 +++++++++++++++++++ 5 files changed, 47 insertions(+), 44 deletions(-) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeStyleVO.java delete mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeStyleVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeStyleVO.java new file mode 100644 index 0000000..bd5c14d --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeStyleVO.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.common.model.base; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +/** + * 边样式 + * + * @author icanci + * @since 1.0 Created in 2023/09/09 23:05 + */ +@Data +public class EdgeStyleVO extends BaseVO { + /** 边样式名称 */ + private String edgeStyleName; + /** json格式的数据格式 */ + private String style; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java index 24fe720..5bc7373 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeVO.java @@ -1,14 +1,10 @@ package cn.icanci.loopstack.bic.common.model.base; -import cn.icanci.loopstack.bic.common.help.TODO; -import cn.icanci.loopstack.bic.common.help.Tips; import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** * 边模型 - * - 边具备2种函数类型。其中@hover函数所有都提供默认实现,只支持自定义颜色;其中@click函数暂不支持自定义 - * - 边的函数定义暂无意义,因此这里,暂不进行实现 * * @author icanci * @since 1.0 Created in 2023/08/21 14:54 @@ -17,14 +13,8 @@ import lombok.Data; public class EdgeVO extends BaseVO { /** 边命名 */ private String edgeName; - /** 入节点 */ - private String entryNodeId; - /** 出节点 */ - private String exitNodeId; - /** hover 函数id */ - @Tips("@hover函数所有都提供默认实现,现阶段只支持自定义颜色") - private String hoverFuncId; - /** click 函数id */ - @TODO("边的函数定义暂无意义,因此这里,暂不进行实现") - private String clickFuncId; + /** 边Key */ + private String edgeKey; + /** 系统唯一标识 */ + private String systemUuid; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java deleted file mode 100644 index 0562a41..0000000 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeRelationVO.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.icanci.loopstack.bic.common.model.base; - -import lombok.Data; - -/** - * 节点关联模型 - * - * @author icanci - * @since 1.0 Created in 2023/08/21 14:57 - */ -@Data -public class NodeRelationVO { - -} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java index 4f6c644..9abea5e 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVO.java @@ -1,7 +1,5 @@ package cn.icanci.loopstack.bic.common.model.base; -import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; -import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; @@ -13,20 +11,10 @@ import lombok.Data; */ @Data public class NodeVO extends BaseVO { + /** 节点系统标识 */ + private String systemUuid; /** 节点名称 */ - private String nodeName; + private String nodeName; /** 节点Key */ - private String nodeKey; - /** 节点Data模式:前缀匹配、全部匹配 */ - private NodeDataModeEnum nodeDataMode; - /** 节点DataKey: UseCase-Module-Category-SubCategory */ - private String nodeDataKey; - /** hover 函数id */ - private String hoverFuncId; - /** click 函数id */ - private String clickFuncId; - /** 样式 */ - private String styleId; - /** 节点类型 */ - private NodeTypeEnum nodeType; + private String nodeKey; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java index ffebab9..7fd8751 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java @@ -1,10 +1,31 @@ package cn.icanci.loopstack.bic.common.model.graph; +import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; +import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; +import lombok.Data; + /** * 图结构的节点 * * @author icanci * @since 1.0 Created in 2023/09/09 22:13 */ +@Data public class UnitNodeVO { + /** 节点名称 */ + private String nodeName; + /** 节点Key */ + private String nodeKey; + /** 节点Data模式:前缀匹配、全部匹配 */ + private NodeDataModeEnum nodeDataMode; + /** 节点DataKey: UseCase-Module-Category-SubCategory */ + private String nodeDataKey; + /** hover 函数id */ + private String hoverFuncId; + /** click 函数id */ + private String clickFuncId; + /** 样式 */ + private String styleId; + /** 节点类型 */ + private NodeTypeEnum nodeType; } -- Gitee From 5f43f3f3240b695686723e09b8065f43e696c910 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 13:17:17 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E5=9B=BE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/common/model/base/EdgeFuncVO.java | 21 ++++++++++- .../bic/common/model/base/NodeFuncVO.java | 35 ++----------------- .../bic/common/model/graph/UnitViewVO.java | 4 +++ 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java index bec6586..5b8dcde 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java @@ -1,5 +1,6 @@ package cn.icanci.loopstack.bic.common.model.base; +import cn.icanci.loopstack.bic.common.enums.FuncTypeEnum; import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; @@ -11,5 +12,23 @@ import lombok.Data; */ @Data public class EdgeFuncVO extends BaseVO { - + /** + * 边函数所属系统 + * 必填 + */ + private String systemUuid; + /** + * 边函数类型 + * + * @see FuncTypeEnum#getCode() + */ + private FuncTypeEnum edgeFuncType; + /** + * 边函数名称 + */ + private String edgeFuncName; + /** + * 边函数体 + */ + private String edgeFuncBody; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java index 89d0899..2c9ffd8 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeFuncVO.java @@ -1,9 +1,6 @@ package cn.icanci.loopstack.bic.common.model.base; -import org.apache.commons.lang3.StringUtils; - import cn.icanci.loopstack.bic.common.enums.FuncTypeEnum; -import cn.icanci.loopstack.bic.common.help.TODO; import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; @@ -20,44 +17,18 @@ public class NodeFuncVO extends BaseVO { * 必填 */ private String systemUuid; - /** - * 节点函数所属用例 - * 必填 - */ - private String useCaseUuid; - /** - * 节点函数所属模块 - */ - private String module; - /** - * 节点函数所属category - */ - private String category; - /** - * 节点函数所属subCategory - */ - private String subCategory; - /** * 节点函数类型 * * @see FuncTypeEnum#getCode() */ - private FuncTypeEnum funcType; + private FuncTypeEnum nodeFuncType; /** * 节点函数名称 */ - private String funcName; + private String nodeFuncName; /** * 节点函数体 */ - private String funcBody; - - /** - * 唯一ID表示 - */ - @TODO("唯一ID标识,每个节点,都有其自己的属性,可以通过唯一ID标识来识别") - public String unionId() { - return StringUtils.join(systemUuid, useCaseUuid, module, category, subCategory); - } + private String nodeFuncBody; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java index d87e953..7e8d556 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitViewVO.java @@ -13,6 +13,10 @@ import java.util.List; */ @Data public class UnitViewVO extends BaseVO { + /** 系统唯一标识 */ + private String systemUuid; + /** 用例唯一标识 */ + private String useCaseUuid; /** 边组织结构 */ private List edges; /** 节点组织结构 */ -- Gitee From a1de61db9aab37fc8e25e2350ccab30056793947 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 14:30:58 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E5=9B=BE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/common/model/base/LogVO.java | 22 +++++++++++++++ .../bic/common/model/graph/UnitEdgeVO.java | 20 +++++++++++++- .../model/graph/UnitGraphSnapshotVO.java | 27 +++++++++++++++++++ .../model/graph/UnitGraphVersionVO.java | 20 ++++++++++++++ .../bic/common/model/graph/UnitNodeVO.java | 2 ++ 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/base/LogVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphSnapshotVO.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphVersionVO.java diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/LogVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/LogVO.java new file mode 100644 index 0000000..b3c6de6 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/LogVO.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.bic.common.model.base; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +/** + * 日志 + * + * @author icanci + * @since 1.0 Created in 2023/09/10 14:15 + */ +@Data +public class LogVO extends BaseVO { + /** 日志模块 */ + private String module; + /** 记录ID */ + private String targetId; + /** 操作类型 */ + private String operatorType; + /** 日志操作内容 */ + private String content; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java index d32dc5f..29b8108 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitEdgeVO.java @@ -1,11 +1,29 @@ package cn.icanci.loopstack.bic.common.model.graph; +import lombok.Data; + /** * 图结构的边 * * @author icanci * @since 1.0 Created in 2023/09/09 22:13 */ +@Data public class UnitEdgeVO { - + /** uuid */ + private String uuid; + /** 边名称 */ + private String edgeName; + /** 边Key */ + private String edgeKey; + /** 边的起点 */ + private String sourceUuid; + /** 边的终点 */ + private String targetUuid; + /** Hover */ + private String hoverFuncId; + /** Click */ + private String clickFuncId; + /** 样式ID */ + private String styleId; } diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphSnapshotVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphSnapshotVO.java new file mode 100644 index 0000000..b39ef6e --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphSnapshotVO.java @@ -0,0 +1,27 @@ +package cn.icanci.loopstack.bic.common.model.graph; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +/** + * 单元用例模型 + * + * @author icanci + * @since 1.0 Created in 2023/09/10 14:28 + */ +@Data +public class UnitGraphSnapshotVO extends BaseVO { + /** 系统关联ID */ + private String systemUuid; + /** 用例关联ID */ + private String useCaseUuid; + /** 图名称 */ + private String name; + /** 图版本 */ + private int version; + /** 图缓存模型 + * + * @see UnitViewVO + */ + private String snapshot; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphVersionVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphVersionVO.java new file mode 100644 index 0000000..f889f42 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitGraphVersionVO.java @@ -0,0 +1,20 @@ +package cn.icanci.loopstack.bic.common.model.graph; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +/** + * 单元用例模型版本 + * + * @author icanci + * @since 1.0 Created in 2023/09/10 14:28 + */ +@Data +public class UnitGraphVersionVO extends BaseVO { + /** 系统关联ID */ + private String systemUuid; + /** 用例关联ID */ + private String useCaseUuid; + /** 图有效的版本 */ + private int version; +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java index 7fd8751..e400c06 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java @@ -12,6 +12,8 @@ import lombok.Data; */ @Data public class UnitNodeVO { + /** uuid */ + private String uuid; /** 节点名称 */ private String nodeName; /** 节点Key */ -- Gitee From 5760f1852d6bff777efe05e7d75b3df14321f655 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 14:49:46 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E7=A7=BB=E9=99=A4mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/vueboot/.env.development | 2 +- .../main/resources/vueboot/.env.production | 2 +- views/src/main/resources/vueboot/.env.staging | 2 +- .../main/resources/vueboot/src/api/user.js | 8 +- views/src/main/resources/vueboot/src/main.js | 8 +- .../src/main/resources/vueboot/vue.config.js | 48 ++++----- .../bic/web/auth/UserAccountController.java | 60 ++++++++++++ .../loopstack/bic/web/config/WebConfig.java | 39 ++++++++ .../bic/web/config/WebExceptionAdvice.java | 30 ++++++ .../loopstack/bic/web/model/AdminLogin.java | 98 +++++++++++++++++++ 10 files changed, 262 insertions(+), 35 deletions(-) create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/auth/UserAccountController.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/config/WebConfig.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/config/WebExceptionAdvice.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/model/AdminLogin.java diff --git a/views/src/main/resources/vueboot/.env.development b/views/src/main/resources/vueboot/.env.development index de583d0..dc0f43e 100644 --- a/views/src/main/resources/vueboot/.env.development +++ b/views/src/main/resources/vueboot/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = '/dev-api' +VUE_APP_BASE_API = 'http://localhost:9994/' diff --git a/views/src/main/resources/vueboot/.env.production b/views/src/main/resources/vueboot/.env.production index 80c8103..0d7fa8f 100644 --- a/views/src/main/resources/vueboot/.env.production +++ b/views/src/main/resources/vueboot/.env.production @@ -2,5 +2,5 @@ ENV = 'production' # base api -VUE_APP_BASE_API = '/prod-api' +VUE_APP_BASE_API = 'http://localhost:9994/' diff --git a/views/src/main/resources/vueboot/.env.staging b/views/src/main/resources/vueboot/.env.staging index a8793a0..486e386 100644 --- a/views/src/main/resources/vueboot/.env.staging +++ b/views/src/main/resources/vueboot/.env.staging @@ -4,5 +4,5 @@ NODE_ENV = production ENV = 'staging' # base api -VUE_APP_BASE_API = '/stage-api' +VUE_APP_BASE_API = 'http://localhost:9994/' diff --git a/views/src/main/resources/vueboot/src/api/user.js b/views/src/main/resources/vueboot/src/api/user.js index b8b8741..bc47d3a 100644 --- a/views/src/main/resources/vueboot/src/api/user.js +++ b/views/src/main/resources/vueboot/src/api/user.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function login(data) { return request({ - url: '/vue-element-admin/user/login', + url: '/bicAdmin/user/login', method: 'post', data }) @@ -10,15 +10,15 @@ export function login(data) { export function getInfo(token) { return request({ - url: '/vue-element-admin/user/info', + url: '/bicAdmin/user/info', method: 'get', - params: { token } + params: {token} }) } export function logout() { return request({ - url: '/vue-element-admin/user/logout', + url: '/bicAdmin/user/logout', method: 'post' }) } diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index b5fa135..d6b4ddc 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -28,10 +28,10 @@ import * as filters from './filters' // global filters * Currently MockJs will be used in the production environment, * please remove it before going online ! ! ! */ -if (process.env.NODE_ENV === 'production') { - const { mockXHR } = require('../mock') - mockXHR() -} +// if (process.env.NODE_ENV === 'production') { +// const { mockXHR } = require('../mock') +// mockXHR() +// } Vue.use(Element, { size: Cookies.get('size') || 'medium', // set element-ui default size diff --git a/views/src/main/resources/vueboot/vue.config.js b/views/src/main/resources/vueboot/vue.config.js index 6b06bc1..1d402a3 100644 --- a/views/src/main/resources/vueboot/vue.config.js +++ b/views/src/main/resources/vueboot/vue.config.js @@ -35,8 +35,8 @@ module.exports = { overlay: { warnings: false, errors: true - }, - before: require('./mock/mock-server.js') + } + // before: require('./mock/mock-server.js') }, configureWebpack: { // provide the app's title in webpack's name field, so that @@ -88,34 +88,34 @@ module.exports = { .plugin('ScriptExtHtmlWebpackPlugin') .after('html') .use('script-ext-html-webpack-plugin', [{ - // `runtime` must same as runtimeChunk name. default is `runtime` + // `runtime` must same as runtimeChunk name. default is `runtime` inline: /runtime\..*\.js$/ }]) .end() config .optimization.splitChunks({ - chunks: 'all', - cacheGroups: { - libs: { - name: 'chunk-libs', - test: /[\\/]node_modules[\\/]/, - priority: 10, - chunks: 'initial' // only package third parties that are initially dependent - }, - elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package - priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app - test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm - }, - commons: { - name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules - minChunks: 3, // minimum common number - priority: 5, - reuseExistingChunk: true - } + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial' // only package third parties that are initially dependent + }, + elementUI: { + name: 'chunk-elementUI', // split elementUI into a single package + priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app + test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), // can customize your rules + minChunks: 3, // minimum common number + priority: 5, + reuseExistingChunk: true } - }) + } + }) // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk config.optimization.runtimeChunk('single') } diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/auth/UserAccountController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/auth/UserAccountController.java new file mode 100644 index 0000000..bb81cf3 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/auth/UserAccountController.java @@ -0,0 +1,60 @@ +package cn.icanci.loopstack.bic.web.auth; + +import java.util.Date; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import cn.icanci.loopstack.bic.common.result.R; +import cn.icanci.loopstack.bic.common.result.ResultCodes; +import cn.icanci.loopstack.bic.web.model.AdminLogin; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 14:35 + */ +@RestController +@RequestMapping("/bicAdmin/user") +public class UserAccountController { + private final Logger logger = LoggerFactory.getLogger(UserAccountController.class); + + @PostMapping("/login") + public R login(@RequestBody(required = false) AdminLogin loginVO) { + try { + AdminLogin vo = new AdminLogin(); + vo.setId(1); + vo.setUsername("admin"); + vo.setPassword("admin"); + vo.setSecurity(1); + vo.setCreateTime(new Date()); + vo.setRoles("[admin]"); + vo.setAvatar("http://localhost:9999/static/head.jpg"); + return R.builderOk().message("登录成功").data("userInfo", vo).build(); + } catch (Exception e) { + return R.builderFail().message(e.getMessage()).build(); + } + } + + @GetMapping("/info/{username}") + public R info(@PathVariable("username") String username) { + if (StringUtils.isEmpty(username)) { + return R.builderOk().code(ResultCodes.LOGIN_TIME_OUT).message("用户已经退出").build(); + } + AdminLogin vo = new AdminLogin(); + vo.setId(1); + vo.setUsername("admin"); + vo.setPassword("admin"); + vo.setSecurity(1); + vo.setCreateTime(new Date()); + vo.setRoles("[admin]"); + vo.setAvatar("http://localhost:9999/static/head.jpg"); + return R.builderOk().data("roles", vo.getRoles()).data("name", vo.getUsername()).data("avatar", vo.getAvatar()).build(); + } + + @PostMapping("/logout") + public R logout() { + return R.builderOk().message("退出成功").build(); + } +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebConfig.java b/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebConfig.java new file mode 100644 index 0000000..a5d23be --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebConfig.java @@ -0,0 +1,39 @@ +package cn.icanci.loopstack.bic.web.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +/** + * 跨域配置 + * + * @author icanci + * @since 1.0 Created in 2022/04/27 16:11 + */ +@Configuration +public class WebConfig { + + // 过滤器跨域配置 + @Bean + public CorsFilter corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + + CorsConfiguration config = new CorsConfiguration(); + + // 允许跨域的头部信息 + config.addAllowedHeader("*"); + // 允许跨域的方法 + config.addAllowedMethod("*"); + // 可访问的外部域 + config.addAllowedOrigin("*"); + // 需要跨域用户凭证(cookie、HTTP认证及客户端SSL证明等) + // config.setAllowCredentials(true); + // config.addAllowedOriginPattern("*"); + + // 跨域路径配置 + source.registerCorsConfiguration("/**", config); + return new CorsFilter(source); + } +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebExceptionAdvice.java b/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebExceptionAdvice.java new file mode 100644 index 0000000..f8f4ba7 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/config/WebExceptionAdvice.java @@ -0,0 +1,30 @@ +package cn.icanci.loopstack.bic.web.config; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import cn.icanci.loopstack.bic.common.result.R; + +/** + * 异常处理器 + * + * @author icanci + * @since 1.0 Created in 2022/11/12 11:19 + */ +@ControllerAdvice +public class WebExceptionAdvice { + + /** + * 非跳转页面无权限异常 + * + * @param e 异常 + * @return 返回异常信息 + */ + @ExceptionHandler(value = Exception.class) + @ResponseBody + public R jsonHandlerException(Exception e) { + return R.builderFail().message(e.getMessage()).build(); + } + +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/AdminLogin.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/AdminLogin.java new file mode 100644 index 0000000..b27e8a4 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/AdminLogin.java @@ -0,0 +1,98 @@ +package cn.icanci.loopstack.bic.web.model; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户登录请求 + * + * @author icanci + * @since 1.0 Created in 2022/04/25 16:42 + */ +public class AdminLogin implements Serializable { + private static final long serialVersionUID = -6109731549811158442L; + /** + * 主键 + */ + private Integer id; + /** + * 用户名 + */ + private String username; + /** + * 密码 + */ + private String password; + /** + * 权限 + */ + private Integer security; + /** + * 创建时间 + */ + private Date createTime; + /** + * 角色 + */ + private String roles; + /** + * 头像地址 + */ + private String avatar; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Integer getSecurity() { + return security; + } + + public void setSecurity(Integer security) { + this.security = security; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getRoles() { + return roles; + } + + public void setRoles(String roles) { + this.roles = roles; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } +} -- Gitee From 0a01493ea7b69d641608fe1829f36e2e2d19463f Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 14:56:30 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E7=A7=BB=E9=99=A4mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/icanci/loopstack/bic/common/result/ResultCodes.java | 5 ++++- views/src/main/resources/vueboot/src/views/login/index.vue | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/result/ResultCodes.java b/common/src/main/java/cn/icanci/loopstack/bic/common/result/ResultCodes.java index e926f9d..323e507 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/result/ResultCodes.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/result/ResultCodes.java @@ -7,8 +7,11 @@ package cn.icanci.loopstack.bic.common.result; * @since 1.0 Created in 2022/04/04 20:09 */ public interface ResultCodes { + // res.code === 50008 || res.code === 50012 || res.code === 50014 + // You have been logged out, you can cancel to stay on this page, or log in again + /** 成功 */ - int SUCCESS = 200; + int SUCCESS = 20000; /** 400异常 */ int FAIL_404 = 404; /** 500异常 */ diff --git a/views/src/main/resources/vueboot/src/views/login/index.vue b/views/src/main/resources/vueboot/src/views/login/index.vue index 2590640..ab4952a 100644 --- a/views/src/main/resources/vueboot/src/views/login/index.vue +++ b/views/src/main/resources/vueboot/src/views/login/index.vue @@ -155,13 +155,15 @@ export default { handleLogin() { this.$refs.loginForm.validate(valid => { if (valid) { + debugger this.loading = true this.$store.dispatch('user/login', this.loginForm) .then(() => { this.$router.push({ path: this.redirect || '/', query: this.otherQuery }) this.loading = false }) - .catch(() => { + .catch((e) => { + console.log(e) this.loading = false }) } else { -- Gitee From 0e5fbcee28245290e04d7c518571c77ab3c88767 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 15:01:01 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E7=A7=BB=E9=99=A4mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- views/src/main/resources/vueboot/src/api/user.js | 5 ++--- .../resources/vueboot/src/views/dashboard/admin/index.vue | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/views/src/main/resources/vueboot/src/api/user.js b/views/src/main/resources/vueboot/src/api/user.js index bc47d3a..36803bf 100644 --- a/views/src/main/resources/vueboot/src/api/user.js +++ b/views/src/main/resources/vueboot/src/api/user.js @@ -10,9 +10,8 @@ export function login(data) { export function getInfo(token) { return request({ - url: '/bicAdmin/user/info', - method: 'get', - params: {token} + url: '/bicAdmin/user/info/' + token, + method: 'get' }) } diff --git a/views/src/main/resources/vueboot/src/views/dashboard/admin/index.vue b/views/src/main/resources/vueboot/src/views/dashboard/admin/index.vue index f2b13e7..851389e 100644 --- a/views/src/main/resources/vueboot/src/views/dashboard/admin/index.vue +++ b/views/src/main/resources/vueboot/src/views/dashboard/admin/index.vue @@ -1,7 +1,5 @@ diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/CommonController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/CommonController.java new file mode 100644 index 0000000..9bbb61f --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/CommonController.java @@ -0,0 +1,43 @@ +package cn.icanci.loopstack.bic.web.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.icanci.loopstack.bic.common.enums.FuncTypeEnum; +import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; +import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.result.R; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:05 + */ +@RestController +@SuppressWarnings("all") +@RequestMapping("/bicAdmin/common") +public class CommonController { + + @GetMapping("/funcType") + public R funcType() { + List textValues = Arrays.stream(FuncTypeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); + return R.builderOk().data("textValues", textValues).build(); + } + + @GetMapping("/nodeDataMode") + public R nodeDataMode() { + List textValues = Arrays.stream(NodeDataModeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); + return R.builderOk().data("textValues", textValues).build(); + } + + @GetMapping("/nodeType") + public R nodeType() { + List textValues = Arrays.stream(NodeTypeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); + return R.builderOk().data("textValues", textValues).build(); + } +} -- Gitee From f268a7517856872773eac211961384146ea92418 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 15:55:26 +0800 Subject: [PATCH 14/18] =?UTF-8?q?bic#mvp#system=20=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/biz/mapper/SystemMapper.java | 15 ++++ .../bic/biz/service/BaseService.java | 74 ++++++++++++++++ .../bic/biz/service/SystemService.java | 32 +++++++ .../biz/service/impl/SystemServiceImpl.java | 84 +++++++++++++++++++ .../bic/common/enums/ModuleTypeEnum.java | 21 +++++ .../bic/common/model/base/SystemVO.java | 9 +- .../bic/dal/mongo/daointerface/BaseDAO.java | 2 + .../bic/dal/mongo/daointerface/SystemDAO.java | 24 ++++++ .../bic/dal/mongo/dateobject/SystemDO.java | 15 ++++ .../bic/dal/mongo/mongo/MongoBuryingDAO.java | 5 ++ .../bic/dal/mongo/mongo/MongoSystemDAO.java | 84 +++++++++++++++++++ .../loopstack/bic/web/api/BuryingApi.java | 4 +- .../bic/web/controller/SystemController.java | 64 ++++++++++++++ .../loopstack/bic/web/form/BaseQueryForm.java | 23 +++++ .../bic/web/form/SystemQueryForm.java | 14 ++++ .../bic/web/mapper/BaseWebMapper.java | 18 ++++ .../bic/web/mapper/SystemWebMapper.java | 15 ++++ .../icanci/loopstack/bic/web/model/Base.java | 26 ++++++ .../{BuryingModelVO.java => Burying.java} | 2 +- .../loopstack/bic/web/model/System.java | 15 ++++ 20 files changed, 541 insertions(+), 5 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/SystemMapper.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/BaseService.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SystemService.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SystemServiceImpl.java create mode 100644 common/src/main/java/cn/icanci/loopstack/bic/common/enums/ModuleTypeEnum.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/SystemDAO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/SystemDO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoSystemDAO.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/controller/SystemController.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/form/BaseQueryForm.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/form/SystemQueryForm.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/mapper/BaseWebMapper.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/mapper/SystemWebMapper.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java rename web/src/main/java/cn/icanci/loopstack/bic/web/model/{BuryingModelVO.java => Burying.java} (92%) create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/model/System.java diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/SystemMapper.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/SystemMapper.java new file mode 100644 index 0000000..01cb258 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/SystemMapper.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.biz.mapper; + +import cn.icanci.loopstack.bic.common.model.base.SystemVO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.SystemDO; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:24 + */ +@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface SystemMapper extends BaseMapper { +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/BaseService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/BaseService.java new file mode 100644 index 0000000..bcce54a --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/BaseService.java @@ -0,0 +1,74 @@ +package cn.icanci.loopstack.bic.biz.service; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import cn.icanci.loopstack.bic.common.model.BaseVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; + +/** + * Base Service for CRUD + * + * @author icanci + * @since 1.0 Created in 2023/09/10 15:20 + */ +public interface BaseService { + /** label 格式化 */ + String DELETED_FORMAT = "[无效] %s"; + + /** label 格式化 */ + String NOT_DELETED_FORMAT = "[有效] %s"; + + /** + * 查询所有 T + * + * @return 返回所有T + */ + List queryAll(); + + /** + * 保存或者更新一条信息 + * + * @param t t + */ + void save(T t); + + /** + * 根据id进行查询 + * + * @param id id + * @return 返回查询的结果 + */ + T queryById(String id); + + /** + * 分页查询 + * + * @param t T + * @param pageNum pageNum + * @param pageSize pageSize + * @return 返回分页查询结果 + */ + PageList queryPage(T t, int pageNum, int pageSize); + + /** + * 是否是插入 + * + * @param t t + * @return 返回是否是插入 + */ + default boolean doInsert(T t) { + return StringUtils.isBlank(t.getId()); + } + + /** + * 是否是删除的 + * + * @param t t + * @return 返回是否是删除的 + */ + default boolean isDeleted(T t) { + return t.isDeleted(); + } +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SystemService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SystemService.java new file mode 100644 index 0000000..5491e23 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SystemService.java @@ -0,0 +1,32 @@ +package cn.icanci.loopstack.bic.biz.service; + +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.SystemVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; + +import java.util.List; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:19 + */ +public interface SystemService extends BaseService { + + @Override + List queryAll(); + + @Override + void save(SystemVO systemVO); + + @Override + SystemVO queryById(String id); + + @Override + PageList queryPage(SystemVO systemVO, int pageNum, int pageSize); + + List loadSelector(); + + SystemVO queryByName(String name); + + SystemVO queryByKey(String key); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SystemServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SystemServiceImpl.java new file mode 100644 index 0000000..367d73d --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SystemServiceImpl.java @@ -0,0 +1,84 @@ +package cn.icanci.loopstack.bic.biz.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.google.common.collect.Lists; + +import cn.icanci.loopstack.bic.biz.mapper.SystemMapper; +import cn.icanci.loopstack.bic.biz.service.SystemService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.SystemVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.SystemDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.SystemDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:21 + */ +@Service +public class SystemServiceImpl implements SystemService { + + @Resource + private SystemDAO systemDAO; + @Resource + private SystemMapper systemMapper; + + @Override + public List queryAll() { + return systemMapper.dos2vos(systemDAO.queryAll()); + } + + @Override + public void save(SystemVO systemVO) { + // TODO 日志记录 + if (doInsert(systemVO)) { + SystemDO insert = systemMapper.vo2do(systemVO); + systemDAO.insert(insert); + } else { + systemDAO.update(systemMapper.vo2do(systemVO)); + } + } + + @Override + public SystemVO queryById(String id) { + return systemMapper.do2vo(systemDAO.queryOneById(id)); + } + + @Override + public PageList queryPage(SystemVO systemVO, int pageNum, int pageSize) { + PageList pageQuery = systemDAO.pageQuery(systemMapper.vo2do(systemVO), pageNum, pageSize); + return new PageList<>(systemMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); + } + + @Override + public List loadSelector() { + List systems = queryAll(); + List textValues = Lists.newArrayList(); + for (SystemVO system : systems) { + String label; + if (isDeleted(system)) { + label = String.format(DELETED_FORMAT, system.systemName()); + } else { + label = String.format(NOT_DELETED_FORMAT, system.systemName()); + } + String value = system.getUuid(); + textValues.add(new TextValue(label, value)); + } + return null; + } + + @Override + public SystemVO queryByName(String name) { + return systemMapper.do2vo(systemDAO.queryByName(name)); + } + + @Override + public SystemVO queryByKey(String key) { + return systemMapper.do2vo(systemDAO.queryByKey(key)); + } +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/ModuleTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/ModuleTypeEnum.java new file mode 100644 index 0000000..b9c138a --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/ModuleTypeEnum.java @@ -0,0 +1,21 @@ +package cn.icanci.loopstack.bic.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:36 + */ +@Getter +@AllArgsConstructor +public enum ModuleTypeEnum { + /** + * SYSTEM + */ + BIC_SYSTEM("BIC_SYSTEM", "系统配置"); + + private final String code; + private final String desc; + +} diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java index 671660c..6389a87 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/SystemVO.java @@ -9,8 +9,13 @@ import lombok.Data; */ @Data public class SystemVO extends BaseVO { + private static final String FORMAT = "%s-%s"; /** 系统名称 */ - private String systemName; + private String systemName; /** 系统唯一标识 */ - private String systemKey; + private String systemKey; + + public String systemName() { + return String.format(FORMAT, systemName, systemKey); + } } diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/BaseDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/BaseDAO.java index 7d9883d..674d635 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/BaseDAO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/BaseDAO.java @@ -53,6 +53,8 @@ public interface BaseDAO { */ T queryOneById(String _id); + Class getBaseColumn(); + /** 基本表 */ interface BaseColumn { /** 文档id */ diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/SystemDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/SystemDAO.java new file mode 100644 index 0000000..7f695cb --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/SystemDAO.java @@ -0,0 +1,24 @@ +package cn.icanci.loopstack.bic.dal.mongo.daointerface; + +import cn.icanci.loopstack.bic.dal.mongo.dateobject.SystemDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:25 + */ +public interface SystemDAO extends BaseDAO { + /** 文档对应的名字 */ + String COLLECTION_NAME = BASE_COLLECTION_NAME + "system"; + /** 文档对应的Class */ + Class COLLECTION_CLASS = SystemDO.class; + + SystemDO queryByName(String name); + + SystemDO queryByKey(String key); + + /** 列 */ + interface SystemColumn extends BaseColumn { + String SYSTEM_NAME = "systemName"; + String SYSTEM_KEY = "systemKey"; + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/SystemDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/SystemDO.java new file mode 100644 index 0000000..37dc88d --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/SystemDO.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.dal.mongo.dateobject; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:24 + */ +@Data +public class SystemDO extends BaseDO { + /** 系统名称 */ + private String systemName; + /** 系统唯一标识 */ + private String systemKey; +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoBuryingDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoBuryingDAO.java index 1d12787..0b49ea1 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoBuryingDAO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoBuryingDAO.java @@ -58,6 +58,11 @@ public class MongoBuryingDAO extends AbstractBaseDAO implements Buryi return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); } + @Override + public Class getBaseColumn() { + return BuryingColumn.class; + } + @Override public void batchInsert(List buryingList) { super.batchInsert(buryingList); diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoSystemDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoSystemDAO.java new file mode 100644 index 0000000..93ec9fc --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoSystemDAO.java @@ -0,0 +1,84 @@ +package cn.icanci.loopstack.bic.dal.mongo.mongo; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.SystemDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.SystemDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:29 + */ +@Service("systemDAO") +public class MongoSystemDAO extends AbstractBaseDAO implements SystemDAO { + @Override + public void insert(SystemDO system) { + super.insert(system); + mongoTemplate.insert(system, COLLECTION_NAME); + } + + @Override + public void update(SystemDO system) { + super.update(system); + mongoTemplate.save(system, COLLECTION_NAME); + } + + @Override + public List queryAll() { + Criteria criteria = Criteria.where(SystemColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public PageList pageQuery(SystemDO system, int pageNum, int pageSize) { + Criteria criteria = Criteria.where(SystemColumn.ENV).is(DEFAULT_ENV); + if (StringUtils.isNotBlank(system.getSystemKey())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(SystemColumn.SYSTEM_KEY).regex("^.*" + system.getSystemKey() + ".*$", "i"); + } + if (StringUtils.isNotBlank(system.getSystemName())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(SystemColumn.SYSTEM_NAME).regex("^.*" + system.getSystemName() + ".*$", "i"); + } + Query query = new Query(criteria); + query.with(Sort.by(Sort.Direction.DESC, SystemColumn.CREATE_TIME)); + return pageQuery(query, COLLECTION_CLASS, pageSize, pageNum, COLLECTION_NAME); + } + + @Override + public SystemDO queryOneById(String _id) { + Criteria criteria = Criteria.where(SystemColumn._ID).is(_id); + criteria.and(SystemColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public Class getBaseColumn() { + return SystemColumn.class; + } + + @Override + public SystemDO queryByName(String name) { + Criteria criteria = Criteria.where(SystemColumn.SYSTEM_NAME).is(name); + criteria.and(SystemColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public SystemDO queryByKey(String key) { + Criteria criteria = Criteria.where(SystemColumn.SYSTEM_KEY).is(key); + criteria.and(SystemColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/api/BuryingApi.java b/web/src/main/java/cn/icanci/loopstack/bic/web/api/BuryingApi.java index a735252..7f96997 100644 --- a/web/src/main/java/cn/icanci/loopstack/bic/web/api/BuryingApi.java +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/api/BuryingApi.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RestController; import cn.icanci.loopstack.bic.biz.service.BuryingService; import cn.icanci.loopstack.bic.common.result.R; -import cn.icanci.loopstack.bic.web.model.BuryingModelVO; +import cn.icanci.loopstack.bic.web.model.Burying; /** * @author icanci @@ -22,7 +22,7 @@ public class BuryingApi { private BuryingService buryingService; @PostMapping("/batchSubmit") - public R batchSubmit(@RequestBody BuryingModelVO buryingModel) { + public R batchSubmit(@RequestBody Burying buryingModel) { buryingService.batchInsert(buryingModel.getBuryingList()); return R.builderOk().build(); } diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/SystemController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/SystemController.java new file mode 100644 index 0000000..173416d --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/SystemController.java @@ -0,0 +1,64 @@ +package cn.icanci.loopstack.bic.web.controller; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; + +import cn.icanci.loopstack.bic.biz.service.SystemService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.SystemVO; +import cn.icanci.loopstack.bic.common.result.R; +import cn.icanci.loopstack.bic.web.form.SystemQueryForm; +import cn.icanci.loopstack.bic.web.mapper.SystemWebMapper; +import cn.icanci.loopstack.bic.web.model.System; + +/** + * 系统控制层Controller + * + * @author icanci + * @since 1.0 Created in 2023/09/10 15:16 + */ +@RestController +@SuppressWarnings("all") +@RequestMapping("/bicAdmin/system") +public class SystemController { + @Resource + private SystemWebMapper systemWebMapper; + @Resource + private SystemService systemService; + + // ================================ CRUD ================================ + @PostMapping("query") + public R query(@RequestBody SystemQueryForm form) { + return R.builderOk() + .data("queryPage", systemService.queryPage(systemWebMapper.web2vo(form.getSystem()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())).build(); + } + + @PostMapping("save") + public R save(@RequestBody System system) { + systemService.save(systemWebMapper.web2vo(system)); + return R.builderOk().build(); + } + + @GetMapping("validateName/{name}") + public R validateName(@PathVariable("name") String name) { + SystemVO baseData = systemService.queryByName(name); + return R.builderOk().data("result", baseData == null).build(); + } + + @GetMapping("validateKey/{key}") + public R validateKey(@PathVariable("key") String key) { + SystemVO baseData = systemService.queryByKey(key); + return R.builderOk().data("result", baseData == null).build(); + } + // ================================ Load Selectors ================================ + + @GetMapping("loadSelector") + public R loadSelector() { + List textValues = systemService.loadSelector(); + return R.builderOk().data("textValues", textValues).build(); + } + +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/form/BaseQueryForm.java b/web/src/main/java/cn/icanci/loopstack/bic/web/form/BaseQueryForm.java new file mode 100644 index 0000000..f5c2c27 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/form/BaseQueryForm.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.web.form; + +import cn.icanci.loopstack.bic.dal.mongo.common.Paginator; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:44 + */ +@Data +public class BaseQueryForm { + private static final long serialVersionUID = -2325040090136131269L; + + private Paginator paginator; + + public Paginator getPaginator() { + return paginator; + } + + public void setPaginator(Paginator paginator) { + this.paginator = paginator; + } +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/form/SystemQueryForm.java b/web/src/main/java/cn/icanci/loopstack/bic/web/form/SystemQueryForm.java new file mode 100644 index 0000000..c6e3338 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/form/SystemQueryForm.java @@ -0,0 +1,14 @@ +package cn.icanci.loopstack.bic.web.form; + +import cn.icanci.loopstack.bic.web.model.System; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:44 + */ +@Data +public class SystemQueryForm extends BaseQueryForm { + private static final long serialVersionUID = -5707057820546333067L; + private System system; +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/BaseWebMapper.java b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/BaseWebMapper.java new file mode 100644 index 0000000..65397a1 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/BaseWebMapper.java @@ -0,0 +1,18 @@ +package cn.icanci.loopstack.bic.web.mapper; + +import java.util.List; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/11 17:20 + */ +public interface BaseWebMapper { + + R web2vo(T t); + + List webs2vos(List ts); + + T vo2web(R r); + + List vos2webs(List rs); +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/SystemWebMapper.java b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/SystemWebMapper.java new file mode 100644 index 0000000..68d499f --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/SystemWebMapper.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.web.mapper; + +import cn.icanci.loopstack.bic.common.model.base.SystemVO; +import cn.icanci.loopstack.bic.web.model.System; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:17 + */ +@Mapper(componentModel = "spring", uses = {}, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface SystemWebMapper extends BaseWebMapper { +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java new file mode 100644 index 0000000..7626737 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java @@ -0,0 +1,26 @@ +package cn.icanci.loopstack.bic.web.model; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:18 + */ +public class Base { + /** mongodb id */ + private String id; + /** 雪花算法随机UUID */ + private String uuid; + /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** 更新时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + /** 状态 false 有效,true 无效 */ + private boolean deleted; + /** 环境 */ + private String env; +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/BuryingModelVO.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Burying.java similarity index 92% rename from web/src/main/java/cn/icanci/loopstack/bic/web/model/BuryingModelVO.java rename to web/src/main/java/cn/icanci/loopstack/bic/web/model/Burying.java index e14e76b..d8140e1 100644 --- a/web/src/main/java/cn/icanci/loopstack/bic/web/model/BuryingModelVO.java +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Burying.java @@ -10,7 +10,7 @@ import cn.icanci.loopstack.bic.common.model.BuryingVO; * @author icanci * @since 1.0 Created in 2023/08/19 18:20 */ -public class BuryingModelVO implements Serializable { +public class Burying implements Serializable { private List buryingList; diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/System.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/System.java new file mode 100644 index 0000000..96f0ed9 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/System.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.web.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:18 + */ +@Data +public class System extends Base { + /** 系统名称 */ + private String systemName; + /** 系统唯一标识 */ + private String systemKey; +} -- Gitee From fd7e166caea98284b8319893872b878921bc0a9e Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 17:09:53 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE-mvp#=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- views/src/main/resources/vueboot/package.json | 1 + .../vueboot/src/api/loadSelectorApi.js | 11 ++ .../main/resources/vueboot/src/api/system.js | 34 +++-- views/src/main/resources/vueboot/src/main.js | 10 ++ .../views/bic-config/dialog/system-form.vue | 130 ++++++++++++++++ .../src/views/bic-config/system-config.vue | 139 +++++++++++++++++- .../vueboot/src/views/common/vue-log.vue | 112 ++++++++++++++ .../vueboot/src/views/common/vue-page.vue | 61 ++++++++ web/pom.xml | 26 ++++ .../icanci/loopstack/bic/web/model/Base.java | 3 + 10 files changed, 509 insertions(+), 18 deletions(-) create mode 100644 views/src/main/resources/vueboot/src/views/bic-config/dialog/system-form.vue create mode 100644 views/src/main/resources/vueboot/src/views/common/vue-log.vue create mode 100644 views/src/main/resources/vueboot/src/views/common/vue-page.vue diff --git a/views/src/main/resources/vueboot/package.json b/views/src/main/resources/vueboot/package.json index 5207d19..fd5d43b 100644 --- a/views/src/main/resources/vueboot/package.json +++ b/views/src/main/resources/vueboot/package.json @@ -33,6 +33,7 @@ "js-cookie": "2.2.0", "jsonlint": "1.6.3", "jszip": "3.2.1", + "moment": "^2.29.4", "normalize.css": "7.0.0", "nprogress": "0.2.0", "path-to-regexp": "2.4.0", diff --git a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js index ffdb592..39f7ec5 100644 --- a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js +++ b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js @@ -35,6 +35,17 @@ export async function nodeTypes() { return [] } +export async function systemSelector() { + let ret = await request({ + url: '/bicAdmin/system/loadSelector', + method: 'get' + }) + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + export function joiner(arr, join) { let res = "" if (!res && !join) { diff --git a/views/src/main/resources/vueboot/src/api/system.js b/views/src/main/resources/vueboot/src/api/system.js index 36803bf..2d04fd8 100644 --- a/views/src/main/resources/vueboot/src/api/system.js +++ b/views/src/main/resources/vueboot/src/api/system.js @@ -1,23 +1,33 @@ import request from '@/utils/request' -export function login(data) { - return request({ - url: '/bicAdmin/user/login', +export async function systemPageQuery(system, paginator) { + return await request({ + url: '/bicAdmin/system/query', method: 'post', - data + data: { + 'system': system, + 'paginator': paginator + } + }) +} +export async function systemSave(system) { + return await request({ + url: '/bicAdmin/system/save', + method: 'post', + data: system }) } -export function getInfo(token) { - return request({ - url: '/bicAdmin/user/info/' + token, - method: 'get' +export async function remoteValidateSystemName(name) { + return await request({ + url: '/bicAdmin/system/validateName/' + name, + method: 'get', }) } -export function logout() { - return request({ - url: '/bicAdmin/user/logout', - method: 'post' +export async function remoteValidatesSystemKey(key) { + return await request({ + url: '/bicAdmin/system/validateKey/' + key, + method: 'get', }) } diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index d6b4ddc..202d782 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -20,6 +20,7 @@ import './utils/error-log' // error log import * as filters from './filters' // global filters +import moment from "moment"; /** * If you don't want to use mock-server * you want to use MockJs for mock api @@ -45,6 +46,15 @@ Object.keys(filters).forEach(key => { Vue.config.productionTip = false +// 自定义全局方法 +Vue.prototype.$cloneObj = function (data) { + return JSON.parse(JSON.stringify(data)) +} +Vue.prototype.baseDateFormat = function (date) { + return moment(date).format('YYYY-MM-DD HH:mm:ss'); +} + + new Vue({ el: '#app', router, diff --git a/views/src/main/resources/vueboot/src/views/bic-config/dialog/system-form.vue b/views/src/main/resources/vueboot/src/views/bic-config/dialog/system-form.vue new file mode 100644 index 0000000..318ff47 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/dialog/system-form.vue @@ -0,0 +1,130 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue index 4af708b..86e9511 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue @@ -5,23 +5,150 @@ 因为边配置和节点配置是需要应用隔离的,因此需要维护一份数据,而在SDK或者HTTP写入的数据中,SystemKey就是应用的唯一标识。可以相关相互关联。 + + + + + + + + + + 查询 + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/views/src/main/resources/vueboot/src/views/common/vue-log.vue b/views/src/main/resources/vueboot/src/views/common/vue-log.vue new file mode 100644 index 0000000..0f9b869 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/common/vue-log.vue @@ -0,0 +1,112 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/common/vue-page.vue b/views/src/main/resources/vueboot/src/views/common/vue-page.vue new file mode 100644 index 0000000..b48169c --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/common/vue-page.vue @@ -0,0 +1,61 @@ + + + diff --git a/web/pom.xml b/web/pom.xml index ff75d3e..2e78d29 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -33,4 +33,30 @@ ${parent.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + org.projectlombok + lombok + ${lombok.version} + + + org.mapstruct + mapstruct-processor + ${mapstruct.version} + + + + + + \ No newline at end of file diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java index 7626737..1bfeb61 100644 --- a/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Base.java @@ -1,5 +1,7 @@ package cn.icanci.loopstack.bic.web.model; +import lombok.Data; + import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -8,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; * @author icanci * @since 1.0 Created in 2023/09/10 15:18 */ +@Data public class Base { /** mongodb id */ private String id; -- Gitee From ebe1f4b9b66f6c83fe4c4b0405f8df36bd4d088c Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 10 Sep 2023 17:13:14 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE-mvp#=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/vueboot/src/views/bic-config/system-config.vue | 5 ----- .../main/resources/vueboot/src/views/documentation/index.vue | 3 +++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue index 86e9511..c1f0b17 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue @@ -1,10 +1,5 @@