diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeMapper.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..709b36b1b2efcbc5a7f19029417cf7fcbe04667b --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeMapper.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.biz.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +import cn.icanci.loopstack.bic.common.model.base.NodeVO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:58 + */ +@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface NodeMapper extends BaseMapper { +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java new file mode 100644 index 0000000000000000000000000000000000000000..dc1acc68a59bbd6d30b893c50fc06efcc10f34c2 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java @@ -0,0 +1,32 @@ +package cn.icanci.loopstack.bic.biz.service; + +import java.util.List; + +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.NodeVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:56 + */ +public interface NodeService extends BaseService { + @Override + List queryAll(); + + @Override + void save(NodeVO nodeVO); + + @Override + NodeVO queryById(String id); + + @Override + PageList queryPage(NodeVO nodeVO, int pageNum, int pageSize); + + NodeVO queryBySystemUuidAndName(String systemUuid, String name); + + NodeVO queryBySystemUuidAndKey(String systemUuid, String key); + + List loadSelector(String systemUuid); + +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..c92aacaf1e1e174b405dd2f5b7f218c013d60ea7 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java @@ -0,0 +1,89 @@ +package cn.icanci.loopstack.bic.biz.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import com.google.common.collect.Lists; + +import cn.icanci.loopstack.bic.biz.mapper.NodeMapper; +import cn.icanci.loopstack.bic.biz.service.NodeService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.NodeVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.NodeDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:57 + */ +@Service("nodeService") +public class NodeServiceImpl implements NodeService { + @Resource + private NodeDAO nodeDAO; + @Resource + private NodeMapper nodeMapper; + + @Override + public List queryAll() { + return nodeMapper.dos2vos(nodeDAO.queryAll()); + } + + @Override + public void save(NodeVO nodeVO) { + // TODO 日志记录 + if (doInsert(nodeVO)) { + NodeDO insert = nodeMapper.vo2do(nodeVO); + nodeDAO.insert(insert); + } else { + nodeDAO.update(nodeMapper.vo2do(nodeVO)); + } + } + + @Override + public NodeVO queryById(String id) { + return nodeMapper.do2vo(nodeDAO.queryOneById(id)); + } + + @Override + public PageList queryPage(NodeVO nodeVO, int pageNum, int pageSize) { + PageList pageQuery = nodeDAO.pageQuery(nodeMapper.vo2do(nodeVO), pageNum, pageSize); + return new PageList<>(nodeMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); + } + + @Override + public NodeVO queryBySystemUuidAndName(String systemUuid, String name) { + return nodeMapper.do2vo(nodeDAO.queryBySystemUuidAndName(systemUuid, name)); + } + + @Override + public NodeVO queryBySystemUuidAndKey(String systemUuid, String key) { + return nodeMapper.do2vo(nodeDAO.queryBySystemUuidAndKey(systemUuid, key)); + } + + @Override + @SuppressWarnings("all") + public List loadSelector(String systemUuid) { + List nodes = queryAll(); + List textValues = Lists.newArrayList(); + for (NodeVO node : nodes) { + if (!StringUtils.equals(systemUuid, node.getSystemUuid())) { + continue; + } + + String label; + if (isDeleted(node)) { + label = String.format(DELETED_FORMAT, node.getNodeName()); + } else { + label = String.format(NOT_DELETED_FORMAT, node.getNodeName()); + } + String value = node.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UseCaseServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UseCaseServiceImpl.java index ca009303cb9d0a0d17ba089bba63823120547017..d47700879f4dca09783780746693c6bb8bf019fb 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UseCaseServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UseCaseServiceImpl.java @@ -67,6 +67,7 @@ public class UseCaseServiceImpl implements UseCaseService { } @Override + @SuppressWarnings("all") public List loadSelector(String systemUuid) { List useCases = queryAll(); List textValues = Lists.newArrayList(); diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeVueTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeVueTypeEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..2f360fcbcf1b6cc6cce2c67f28f69ca5dee985a5 --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/NodeVueTypeEnum.java @@ -0,0 +1,25 @@ +package cn.icanci.loopstack.bic.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/12 23:33 + */ +@Getter +@AllArgsConstructor +public enum NodeVueTypeEnum { + /** + * 弹框 + */ + DIALOG("DIALOG", "弹框"), + /** + * 打开新标签页 + */ + OPEN_TAG("OPEN_TAG", "打开新标签页"); + + private final String code; + + private final String desc; +} 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 44ba9de8e8fef71d293fa142cfb5981187c4b7ac..208a969cf62184e4e7509368e08741ab1ffea28e 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,5 @@ 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/base/EdgeFuncVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/EdgeFuncVO.java index 5b8dcde3c14c62d6f5a4eb959e56c8b8593f7d8a..5838a624187bb1f3550b576a689e8fc7dfc9a380 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 @@ -6,11 +6,13 @@ import lombok.Data; /** * 边函数模型 + * - 边动作函数已经过期,此功能经过设计不存在 * * @author icanci * @since 1.0 Created in 2023/08/21 14:54 */ @Data +@Deprecated public class EdgeFuncVO extends BaseVO { /** * 边函数所属系统 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 2c9ffd8d2a1a096767f139a99c67344b7df7137c..d5707a90a0184cb0c3e9da53876934821c91f90d 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 @@ -5,12 +5,14 @@ import cn.icanci.loopstack.bic.common.model.BaseVO; import lombok.Data; /** - * 节点动作韩胡思模型 - * + * 节点动作模型 + * - 节点动作函数已经过期,此功能经过设计不存在 + * * @author icanci * @since 1.0 Created in 2023/08/21 14:54 */ @Data +@Deprecated public class NodeFuncVO extends BaseVO { /** * 节点函数所属系统 diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java new file mode 100644 index 0000000000000000000000000000000000000000..f0f68fc8ed326847fc99824650e4ff55299b76bd --- /dev/null +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java @@ -0,0 +1,25 @@ +package cn.icanci.loopstack.bic.common.model.base; + +import cn.icanci.loopstack.bic.common.enums.NodeVueTypeEnum; +import cn.icanci.loopstack.bic.common.model.BaseVO; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/12 23:35 + */ +@Data +public class NodeVueVO extends BaseVO { + /** 节点函数组件所属的系统uuid */ + private String systemUuid; + /** 节点函数组件所属的节点 */ + private String nodeUuid; + /** 组件名称 */ + private String nodeVueName; + /** 组件Key */ + private String nodeVueKey; + /** 组件代码 */ + private String nodeVueCode; + /** 组件类型:DIALOG、OPEN_TAG,可以选择为弹框、或者打开一个新的标签页 */ + private NodeVueTypeEnum nodeVueType; +} 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 29b81086d7faa263b196530fbdde80bddb23fe76..1d7b3f218bc2e69ab9c7ca7e908aa12b2703ebc0 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 @@ -21,8 +21,10 @@ public class UnitEdgeVO { /** 边的终点 */ private String targetUuid; /** Hover */ + @Deprecated private String hoverFuncId; /** Click */ + @Deprecated private String clickFuncId; /** 样式ID */ private String styleId; 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 e400c061431573e80c422c9b4b879ec54f786cf1..e6f2448793a30a25748e9bfb8a08fc64f7854f40 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 @@ -23,8 +23,10 @@ public class UnitNodeVO { /** 节点DataKey: UseCase-Module-Category-SubCategory */ private String nodeDataKey; /** hover 函数id */ + @Deprecated private String hoverFuncId; /** click 函数id */ + @Deprecated private String clickFuncId; /** 样式 */ private String styleId; diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..bbc1c5453503009c2f7e14e2a07c6ba920cd5c60 --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeDAO.java @@ -0,0 +1,27 @@ +package cn.icanci.loopstack.bic.dal.mongo.daointerface; + +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:59 + */ +public interface NodeDAO extends BaseDAO { + /** 文档对应的名字 */ + String COLLECTION_NAME = BASE_COLLECTION_NAME + "node"; + /** 文档对应的Class */ + Class COLLECTION_CLASS = NodeDO.class; + + NodeDO queryBySystemUuidAndName(String systemUuid, String name); + + NodeDO queryBySystemUuidAndKey(String systemUuid, String key); + + /** 列 */ + interface NodeColumn extends BaseColumn { + String NODE_NAME = "nodeName"; + + String NODE_KEY = "nodeKey"; + + String SYSTEM_UUID = "systemUuid"; + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeDO.java new file mode 100644 index 0000000000000000000000000000000000000000..fec0597e2eab68a4b59d450198ef279d47b23a77 --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeDO.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.dal.mongo.dateobject; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:58 + */ +@Data +public class NodeDO extends BaseDO { + /** 节点系统标识 */ + private String systemUuid; + /** 节点名称 */ + private String nodeName; + /** 节点Key */ + private String nodeKey; +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..ac284b4c57fa442ec2d8873e344f3cf7cf6e17fe --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeDAO.java @@ -0,0 +1,89 @@ +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.NodeDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:29 + */ +@Service("nodeDAO") +public class MongoNodeDAO extends AbstractBaseDAO implements NodeDAO { + @Override + public void insert(NodeDO node) { + super.insert(node); + mongoTemplate.insert(node, COLLECTION_NAME); + } + + @Override + public void update(NodeDO node) { + super.update(node); + mongoTemplate.save(node, COLLECTION_NAME); + } + + @Override + public List queryAll() { + Criteria criteria = Criteria.where(NodeColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public PageList pageQuery(NodeDO node, int pageNum, int pageSize) { + Criteria criteria = Criteria.where(NodeColumn.ENV).is(DEFAULT_ENV); + if (StringUtils.isNotBlank(node.getNodeName())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(NodeColumn.NODE_NAME).regex("^.*" + node.getNodeName() + ".*$", "i"); + } + if (StringUtils.isNotBlank(node.getNodeKey())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(NodeColumn.NODE_KEY).regex("^.*" + node.getNodeKey() + ".*$", "i"); + } + if (StringUtils.isNotBlank(node.getSystemUuid())) { + criteria.and(NodeColumn.SYSTEM_UUID).is(node.getSystemUuid()); + } + Query query = new Query(criteria); + query.with(Sort.by(Sort.Direction.DESC, NodeColumn.CREATE_TIME)); + return pageQuery(query, COLLECTION_CLASS, pageSize, pageNum, COLLECTION_NAME); + } + + @Override + public NodeDO queryOneById(String _id) { + Criteria criteria = Criteria.where(NodeColumn._ID).is(_id); + criteria.and(NodeColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public Class getBaseColumn() { + return NodeColumn.class; + } + + @Override + public NodeDO queryBySystemUuidAndName(String systemUuid, String name) { + Criteria criteria = Criteria.where(NodeColumn.NODE_NAME).is(name); + criteria.and(NodeColumn.ENV).is(DEFAULT_ENV); + criteria.and(NodeColumn.SYSTEM_UUID).is(systemUuid); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public NodeDO queryBySystemUuidAndKey(String systemUuid, String key) { + Criteria criteria = Criteria.where(NodeColumn.NODE_KEY).is(key); + criteria.and(NodeColumn.ENV).is(DEFAULT_ENV); + criteria.and(NodeColumn.SYSTEM_UUID).is(systemUuid); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } +} diff --git a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js index 39f7ec5a66fccbce977b48f6a49d7e9ecf328c1d..0a71f943a99282d8f5891ea28793c916df95ae5e 100644 --- a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js +++ b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js @@ -34,6 +34,16 @@ export async function nodeTypes() { } return [] } +export async function nodeVueType() { + let ret = await request({ + url: '/bicAdmin/common/nodeVueType', + method: 'get' + }) + if (ret.ok) { + return ret.data.textValues; + } + return [] +} export async function systemSelector() { let ret = await request({ @@ -46,6 +56,28 @@ export async function systemSelector() { return [] } +export async function useCaseSelector(systemUuid) { + let ret = await request({ + url: '/bicAdmin/useCase/loadSelector/' + systemUuid, + method: 'get' + }) + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + +export async function nodeSelector(systemUuid) { + let ret = await request({ + url: '/bicAdmin/node/loadSelector/' + systemUuid, + 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/node.js b/views/src/main/resources/vueboot/src/api/node.js new file mode 100644 index 0000000000000000000000000000000000000000..6ebe242e958f0d7981b2fbff580246ec8e6a3a76 --- /dev/null +++ b/views/src/main/resources/vueboot/src/api/node.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export async function nodePageQuery(node, paginator) { + return await request({ + url: '/bicAdmin/node/query', + method: 'post', + data: { + 'node': node, + 'paginator': paginator + } + }) +} + +export async function nodeSave(node) { + return await request({ + url: '/bicAdmin/node/save', + method: 'post', + data: node + }) +} + +export async function remoteValidateNodeName(systemUuid, name) { + return await request({ + url: '/bicAdmin/node/validateName/' + systemUuid + '/' + name, + method: 'get', + }) +} + +export async function remoteValidatesNodeKey(systemUuid, key) { + return await request({ + url: '/bicAdmin/node/validateKey/' + systemUuid + '/' + key, + method: 'get', + }) +} diff --git a/views/src/main/resources/vueboot/src/router/index.js b/views/src/main/resources/vueboot/src/router/index.js index 21e67904b9b67f04dfaac21f6c6b9dc5477a2a65..b142bc64254b39491d2542978fd4a74b81304036 100644 --- a/views/src/main/resources/vueboot/src/router/index.js +++ b/views/src/main/resources/vueboot/src/router/index.js @@ -124,18 +124,6 @@ export const constantRoutes = [ name: 'useCaseConfig', meta: {title: '用例配置'}, }, - { - path: 'edge-config', - component: () => import('@/views/bic-config/edge-config'), - name: 'edgeConfig', - meta: {title: '边配置'} - }, - { - path: 'edge-function-config', - component: () => import('@/views/bic-config/edge-function-config'), - name: 'edgeFunctionConfig', - meta: {title: '边函数配置'} - }, { path: 'node-config', component: () => import('@/views/bic-config/node-config'), @@ -143,11 +131,41 @@ export const constantRoutes = [ meta: {title: '节点配置'} }, { - path: 'node-function-config', - component: () => import('@/views/bic-config/node-function-config'), - name: 'nodeFunctionConfig', - meta: {title: '节点函数配置'} + path: 'node-style', + component: () => import('@/views/bic-config/node-style-config'), + name: 'nodeStyleConfig', + meta: {title: '节点样式配置'} + }, + // { + // path: 'node-function-config', + // component: () => import('@/views/bic-config/node-function-config'), + // name: 'nodeFunctionConfig', + // meta: {title: '节点函数配置'} + // }, + { + path: 'node-vue-config', + component: () => import('@/views/bic-config/node-vue-config'), + name: 'nodeVueConfig', + meta: {title: '节点组件配置'} + }, + { + path: 'edge-config', + component: () => import('@/views/bic-config/edge-config'), + name: 'edgeConfig', + meta: {title: '边配置'} + }, + { + path: 'edge-style-config', + component: () => import('@/views/bic-config/edge-style-config'), + name: 'edgeStyleConfig', + meta: {title: '边样式配置'} }, + // { + // path: 'edge-function-config', + // component: () => import('@/views/bic-config/edge-function-config'), + // name: 'edgeFunctionConfig', + // meta: {title: '边函数配置'} + // }, { path: 'module-relation', component: () => import('@/views/bic-config/module-relation'), diff --git a/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-form.vue b/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-form.vue new file mode 100644 index 0000000000000000000000000000000000000000..76e1f6bbcc4527eab5b960e41e80557c944c65c5 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-form.vue @@ -0,0 +1,163 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue new file mode 100644 index 0000000000000000000000000000000000000000..2047579e8467cd60c573915406e04ce8bb764b88 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue index 0bb837c2539be35d4ad9bb95f4e975ce4d7c1ede..3f4bf0b71b032095a370202e40ca406dd1b2cab6 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue @@ -1,19 +1,188 @@ diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue new file mode 100644 index 0000000000000000000000000000000000000000..52c7649c5f0042793d1c742f41ac6db8c37fec6f --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue new file mode 100644 index 0000000000000000000000000000000000000000..809fcad1b0132e0244c62310e80491bb9c1d1b93 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue @@ -0,0 +1,24 @@ + + + + + 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 index 9bbb61f82e69fcdfbb8d8167273cb031c487419c..ecb428ca51b4595f196023491386224de1371500 100644 --- 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 @@ -11,6 +11,7 @@ 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.enums.NodeVueTypeEnum; import cn.icanci.loopstack.bic.common.model.TextValue; import cn.icanci.loopstack.bic.common.result.R; @@ -40,4 +41,10 @@ public class CommonController { List textValues = Arrays.stream(NodeTypeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); return R.builderOk().data("textValues", textValues).build(); } + + @GetMapping("/nodeVueType") + public R nodeVueType() { + List textValues = Arrays.stream(NodeVueTypeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); + return R.builderOk().data("textValues", textValues).build(); + } } diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/EdgeController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/EdgeController.java new file mode 100644 index 0000000000000000000000000000000000000000..d02d837463169619e8811ce1b0e74613a367562c --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/EdgeController.java @@ -0,0 +1,61 @@ +//package cn.icanci.loopstack.bic.web.controller; +// +//import cn.icanci.loopstack.bic.biz.service.NodeService; +//import cn.icanci.loopstack.bic.common.model.TextValue; +//import cn.icanci.loopstack.bic.common.model.base.NodeVO; +//import cn.icanci.loopstack.bic.common.result.R; +//import cn.icanci.loopstack.bic.web.form.NodeQueryForm; +//import cn.icanci.loopstack.bic.web.mapper.NodeWebMapper; +//import cn.icanci.loopstack.bic.web.model.Node; +// +//import java.util.List; +// +//import javax.annotation.Resource; +// +//import org.springframework.web.bind.annotation.*; +// +///** +// * @author icanci +// * @since 1.0 Created in 2023/09/11 23:21 +// */ +//@RestController +//@RequestMapping("/bicAdmin/edge") +//public class EdgeController { +// @Resource +// private EdgeWebMapper edgeWebMapper; +// @Resource +// private EdgeService edgeService; +// +// +// // ================================ CRUD ================================ +// @PostMapping("query") +// public R query(@RequestBody NodeQueryForm form) { +// return R.builderOk().data("queryPage", nodeService.queryPage(nodeWebMapper.web2vo(form.getNode()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())) +// .build(); +// } +// +// @PostMapping("save") +// public R save(@RequestBody Node node) { +// nodeService.save(nodeWebMapper.web2vo(node)); +// return R.builderOk().build(); +// } +// +// @GetMapping("validateName/{systemUuid}/{name}") +// public R validateName(@PathVariable("systemUuid") String systemUuid, @PathVariable("name") String name) { +// NodeVO node = nodeService.queryBySystemUuidAndName(systemUuid, name); +// return R.builderOk().data("result", node == null).build(); +// } +// +// @GetMapping("validateKey/{systemUuid}/{key}") +// public R validateKey(@PathVariable("systemUuid") String systemUuid, @PathVariable("key") String key) { +// NodeVO node = nodeService.queryBySystemUuidAndKey(systemUuid, key); +// return R.builderOk().data("result", node == null).build(); +// } +// // ================================ Load Selectors ================================ +// +// @GetMapping("loadSelector/{systemUuid}") +// public R loadSelector(@PathVariable("systemUuid") String systemUuid) { +// List textValues = nodeService.loadSelector(systemUuid); +// return R.builderOk().data("textValues", textValues).build(); +// } +//} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeController.java new file mode 100644 index 0000000000000000000000000000000000000000..3b14e309612721c7e7570f419551e9a2dabcb918 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeController.java @@ -0,0 +1,60 @@ +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.NodeService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.NodeVO; +import cn.icanci.loopstack.bic.common.result.R; +import cn.icanci.loopstack.bic.web.form.NodeQueryForm; +import cn.icanci.loopstack.bic.web.mapper.NodeWebMapper; +import cn.icanci.loopstack.bic.web.model.Node; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 21:40 + */ +@RestController +@RequestMapping("/bicAdmin/node") +public class NodeController { + @Resource + private NodeWebMapper nodeWebMapper; + @Resource + private NodeService nodeService; + + // ================================ CRUD ================================ + @PostMapping("query") + public R query(@RequestBody NodeQueryForm form) { + return R.builderOk().data("queryPage", nodeService.queryPage(nodeWebMapper.web2vo(form.getNode()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())) + .build(); + } + + @PostMapping("save") + public R save(@RequestBody Node node) { + nodeService.save(nodeWebMapper.web2vo(node)); + return R.builderOk().build(); + } + + @GetMapping("validateName/{systemUuid}/{name}") + public R validateName(@PathVariable("systemUuid") String systemUuid, @PathVariable("name") String name) { + NodeVO node = nodeService.queryBySystemUuidAndName(systemUuid, name); + return R.builderOk().data("result", node == null).build(); + } + + @GetMapping("validateKey/{systemUuid}/{key}") + public R validateKey(@PathVariable("systemUuid") String systemUuid, @PathVariable("key") String key) { + NodeVO node = nodeService.queryBySystemUuidAndKey(systemUuid, key); + return R.builderOk().data("result", node == null).build(); + } + // ================================ Load Selectors ================================ + + @GetMapping("loadSelector/{systemUuid}") + public R loadSelector(@PathVariable("systemUuid") String systemUuid) { + List textValues = nodeService.loadSelector(systemUuid); + return R.builderOk().data("textValues", textValues).build(); + } +} 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 deleted file mode 100644 index d5f3f23cfb2b2f8fd42a4580bccc783c7280a5d9..0000000000000000000000000000000000000000 --- a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeFuncController.java +++ /dev/null @@ -1,16 +0,0 @@ -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 { - -} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeQueryForm.java b/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeQueryForm.java new file mode 100644 index 0000000000000000000000000000000000000000..fa16aa2d6238a3b4be8467154f2d1cd73ec342f1 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeQueryForm.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.web.form; + +import cn.icanci.loopstack.bic.web.model.Node; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 20:06 + */ +@Data +public class NodeQueryForm extends BaseQueryForm { + /** + * 用例查询模型 + */ + private Node node; +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeWebMapper.java b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeWebMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..645998220b363e3e60bad71138e6a5ecc9ef5d56 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeWebMapper.java @@ -0,0 +1,15 @@ +package cn.icanci.loopstack.bic.web.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +import cn.icanci.loopstack.bic.common.model.base.NodeVO; +import cn.icanci.loopstack.bic.web.model.Node; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/10 15:17 + */ +@Mapper(componentModel = "spring", uses = {}, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface NodeWebMapper extends BaseWebMapper { +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/Edge.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Edge.java new file mode 100644 index 0000000000000000000000000000000000000000..861c2c15b08ca5feeb44abb479ddac3278c47839 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Edge.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.web.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:55 + */ +@Data +public class Edge extends Base { + /** 节点系统标识 */ + private String systemUuid; + /** 节点名称 */ + private String nodeName; + /** 节点Key */ + private String nodeKey; +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/Node.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Node.java new file mode 100644 index 0000000000000000000000000000000000000000..516b7ee30ac251814d393b60e237628860914c07 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/Node.java @@ -0,0 +1,17 @@ +package cn.icanci.loopstack.bic.web.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/11 22:55 + */ +@Data +public class Node extends Base { + /** 节点系统标识 */ + private String systemUuid; + /** 节点名称 */ + private String nodeName; + /** 节点Key */ + private String nodeKey; +}