From 889184db7eba25f6d6662ac0d6377be58346321a Mon Sep 17 00:00:00 2001 From: icanci Date: Fri, 15 Sep 2023 18:33:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE#NodeVueType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic/biz/mapper/NodeVueMapper.java | 16 ++ .../convertor/NodeVueTypeEnumConverter.java | 13 ++ .../bic/biz/service/NodeVueService.java | 31 +++ .../biz/service/impl/NodeVueServiceImpl.java | 94 +++++++++ .../dal/mongo/daointerface/NodeVueDAO.java | 28 +++ .../bic/dal/mongo/dateobject/NodeVueDO.java | 23 +++ .../bic/dal/mongo/mongo/MongoNodeVueDAO.java | 93 +++++++++ views/src/main/resources/vueboot/package.json | 1 + .../main/resources/vueboot/src/api/nodeVue.js | 34 ++++ views/src/main/resources/vueboot/src/main.js | 5 + .../resources/vueboot/src/router/index.js | 12 ++ .../src/views/bic-config/dialog/node-form.vue | 2 +- .../bic-config/dialog/node-style-form.vue | 10 +- .../views/bic-config/dialog/system-form.vue | 2 +- .../views/bic-config/dialog/use-case-form.vue | 2 +- .../src/views/bic-config/node-vue-config.vue | 184 +++++++++++++++++- .../src/views/demos/dialog/demo-code.vue | 23 +++ .../vueboot/src/views/demos/dialog/demo.vue | 52 +++++ .../vueboot/src/views/demos/tests.vue | 29 +++ .../src/main/resources/vueboot/vue.config.js | 1 + .../bic/web/controller/NodeVueController.java | 62 ++++++ .../bic/web/form/NodeVueQueryForm.java | 13 ++ .../bic/web/mapper/NodeVueWebMapper.java | 16 ++ .../loopstack/bic/web/model/NodeVue.java | 23 +++ 24 files changed, 751 insertions(+), 18 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeVueMapper.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/NodeVueTypeEnumConverter.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeVueDAO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java create mode 100644 dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeVueDAO.java create mode 100644 views/src/main/resources/vueboot/src/api/nodeVue.js create mode 100644 views/src/main/resources/vueboot/src/views/demos/dialog/demo-code.vue create mode 100644 views/src/main/resources/vueboot/src/views/demos/dialog/demo.vue create mode 100644 views/src/main/resources/vueboot/src/views/demos/tests.vue create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeVueController.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeVueQueryForm.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeVueWebMapper.java create mode 100644 web/src/main/java/cn/icanci/loopstack/bic/web/model/NodeVue.java diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeVueMapper.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeVueMapper.java new file mode 100644 index 0000000..d02e802 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/NodeVueMapper.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.biz.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +import cn.icanci.loopstack.bic.biz.mapper.convertor.NodeVueTypeEnumConverter; +import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeVueDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:12 + */ +@Mapper(componentModel = "spring", uses = { NodeVueTypeEnumConverter.class }, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface NodeVueMapper extends BaseMapper { +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/NodeVueTypeEnumConverter.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/NodeVueTypeEnumConverter.java new file mode 100644 index 0000000..f41416f --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/mapper/convertor/NodeVueTypeEnumConverter.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.biz.mapper.convertor; + +import org.springframework.stereotype.Component; + +import cn.icanci.loopstack.bic.common.enums.NodeVueTypeEnum; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:14 + */ +@Component +public class NodeVueTypeEnumConverter extends AbstractBaseConverter { +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java new file mode 100644 index 0000000..7fad95e --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java @@ -0,0 +1,31 @@ +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.NodeVueVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:09 + */ +public interface NodeVueService extends BaseService { + @Override + List queryAll(); + + @Override + void save(NodeVueVO nodeVueVO); + + @Override + NodeVueVO queryById(String id); + + @Override + PageList queryPage(NodeVueVO nodeVueVO, int pageNum, int pageSize); + + NodeVueVO queryBySystemUuidAndName(String systemUuid, String name); + + NodeVueVO queryBySystemUuidAndKey(String systemUuid, String key); + + List loadSelector(String systemUuid, String nodeUuid); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java new file mode 100644 index 0000000..98d24f2 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java @@ -0,0 +1,94 @@ +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.NodeVueMapper; +import cn.icanci.loopstack.bic.biz.service.NodeVueService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; +import cn.icanci.loopstack.bic.dal.mongo.common.PageList; +import cn.icanci.loopstack.bic.dal.mongo.daointerface.NodeVueDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeVueDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:11 + */ +@Service +public class NodeVueServiceImpl implements NodeVueService { + @Resource + private NodeVueDAO nodeVueDAO; + @Resource + private NodeVueMapper nodeVueMapper; + + @Override + public List queryAll() { + return nodeVueMapper.dos2vos(nodeVueDAO.queryAll()); + } + + @Override + public void save(NodeVueVO nodeVueVO) { + // TODO 日志记录 + // TODO 更新视图 + if (doInsert(nodeVueVO)) { + NodeVueDO insert = nodeVueMapper.vo2do(nodeVueVO); + nodeVueDAO.insert(insert); + } else { + nodeVueDAO.update(nodeVueMapper.vo2do(nodeVueVO)); + } + } + + @Override + public NodeVueVO queryById(String id) { + return nodeVueMapper.do2vo(nodeVueDAO.queryOneById(id)); + } + + @Override + public PageList queryPage(NodeVueVO nodeVueVO, int pageNum, int pageSize) { + PageList pageQuery = nodeVueDAO.pageQuery(nodeVueMapper.vo2do(nodeVueVO), pageNum, pageSize); + return new PageList<>(nodeVueMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); + + } + + @Override + public NodeVueVO queryBySystemUuidAndName(String systemUuid, String name) { + return nodeVueMapper.do2vo(nodeVueDAO.queryBySystemUuidAndName(systemUuid, name)); + } + + @Override + public NodeVueVO queryBySystemUuidAndKey(String systemUuid, String key) { + return nodeVueMapper.do2vo(nodeVueDAO.queryBySystemUuidAndKey(systemUuid, key)); + } + + @Override + public List loadSelector(String systemUuid, String nodeUuid) { + List nodeVues = queryAll(); + List textValues = Lists.newArrayList(); + for (NodeVueVO nodeVue : nodeVues) { + + if (!StringUtils.equals(systemUuid, nodeVue.getSystemUuid())) { + continue; + } + if (!StringUtils.equals(nodeUuid, nodeVue.getNodeUuid())) { + continue; + } + + String label; + if (isDeleted(nodeVue)) { + label = String.format(DELETED_FORMAT, nodeVue.getNodeVueName()); + } else { + label = String.format(NOT_DELETED_FORMAT, nodeVue.getNodeVueName()); + } + String value = nodeVue.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeVueDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeVueDAO.java new file mode 100644 index 0000000..3cc4db1 --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/NodeVueDAO.java @@ -0,0 +1,28 @@ +package cn.icanci.loopstack.bic.dal.mongo.daointerface; + +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeVueDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:19 + */ +public interface NodeVueDAO extends BaseDAO { + /** 文档对应的名字 */ + String COLLECTION_NAME = BASE_COLLECTION_NAME + "node-vue"; + /** 文档对应的Class */ + Class COLLECTION_CLASS = NodeVueDO.class; + + NodeVueDO queryBySystemUuidAndName(String systemUuid, String name); + + NodeVueDO queryBySystemUuidAndKey(String systemUuid, String key); + + /** 列 */ + interface NodeVueColumn extends BaseColumn { + String SYSTEM_UUID = "systemUuid"; + String NODE_UUID = "nodeUuid"; + String NODE_VUE_NAME = "nodeVueName"; + String NODE_VUE_KEY = "nodeVueKey"; + String NODE_VUE_CODE = "nodeVueCode"; + String NODE_VUE_TYPE = "nodeVueType"; + } +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java new file mode 100644 index 0000000..ac4779d --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.dal.mongo.dateobject; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:14 + */ +@Data +public class NodeVueDO extends BaseDO { + /** 节点函数组件所属的系统uuid */ + private String systemUuid; + /** 节点函数组件所属的节点 */ + private String nodeUuid; + /** 组件名称 */ + private String nodeVueName; + /** 组件Key */ + private String nodeVueKey; + /** 组件代码 */ + private String nodeVueCode; + /** 组件类型:DIALOG、OPEN_TAG,可以选择为弹框、或者打开一个新的标签页 */ + private String nodeVueType; +} diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeVueDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeVueDAO.java new file mode 100644 index 0000000..8c853bc --- /dev/null +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoNodeVueDAO.java @@ -0,0 +1,93 @@ +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.NodeVueDAO; +import cn.icanci.loopstack.bic.dal.mongo.dateobject.NodeVueDO; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:21 + */ +@Service("nodeVueDAO") +public class MongoNodeVueDAO extends AbstractBaseDAO implements NodeVueDAO { + @Override + public void insert(NodeVueDO nodeVueDO) { + super.insert(nodeVueDO); + mongoTemplate.insert(nodeVueDO, COLLECTION_NAME); + } + + @Override + public void update(NodeVueDO nodeVueDO) { + super.update(nodeVueDO); + mongoTemplate.save(nodeVueDO, COLLECTION_NAME); + } + + @Override + public List queryAll() { + Criteria criteria = Criteria.where(NodeVueColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public PageList pageQuery(NodeVueDO nodeVueDO, int pageNum, int pageSize) { + Criteria criteria = Criteria.where(NodeVueColumn.ENV).is(DEFAULT_ENV); + if (StringUtils.isNotBlank(nodeVueDO.getNodeVueName())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(NodeVueColumn.NODE_VUE_NAME).regex("^.*" + nodeVueDO.getNodeVueName() + ".*$", "i"); + } + if (StringUtils.isNotBlank(nodeVueDO.getNodeVueKey())) { + // 不分区大小写查询,其中操作符"i":表示不分区大小写 + criteria.and(NodeVueColumn.NODE_VUE_KEY).regex("^.*" + nodeVueDO.getNodeVueKey() + ".*$", "i"); + } + if (StringUtils.isNotBlank(nodeVueDO.getSystemUuid())) { + criteria.and(NodeVueColumn.SYSTEM_UUID).is(nodeVueDO.getSystemUuid()); + } + if (StringUtils.isNotBlank(nodeVueDO.getNodeVueType())) { + criteria.and(NodeVueColumn.NODE_VUE_TYPE).is(nodeVueDO.getNodeVueType()); + } + Query query = new Query(criteria); + query.with(Sort.by(Sort.Direction.DESC, NodeVueColumn.CREATE_TIME)); + return pageQuery(query, COLLECTION_CLASS, pageSize, pageNum, COLLECTION_NAME); + } + + @Override + public NodeVueDO queryOneById(String _id) { + Criteria criteria = Criteria.where(NodeVueColumn._ID).is(_id); + criteria.and(NodeVueColumn.ENV).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public Class getBaseColumn() { + return NodeVueColumn.class; + } + + @Override + public NodeVueDO queryBySystemUuidAndName(String systemUuid, String name) { + Criteria criteria = Criteria.where(NodeVueColumn.NODE_VUE_NAME).is(name); + criteria.and(NodeVueColumn.ENV).is(DEFAULT_ENV); + criteria.and(NodeVueColumn.SYSTEM_UUID).is(systemUuid); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public NodeVueDO queryBySystemUuidAndKey(String systemUuid, String key) { + Criteria criteria = Criteria.where(NodeVueColumn.NODE_VUE_KEY).is(key); + criteria.and(NodeVueColumn.ENV).is(DEFAULT_ENV); + criteria.and(NodeVueColumn.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/package.json b/views/src/main/resources/vueboot/package.json index b08b57a..72f0e02 100644 --- a/views/src/main/resources/vueboot/package.json +++ b/views/src/main/resources/vueboot/package.json @@ -43,6 +43,7 @@ "tui-editor": "1.3.3", "v-jsoneditor": "^1.4.5", "vue": "2.6.10", + "vue-code-view": "^0.4.1", "vue-count-to": "1.0.13", "vue-router": "3.0.2", "vue-splitpane": "1.0.4", diff --git a/views/src/main/resources/vueboot/src/api/nodeVue.js b/views/src/main/resources/vueboot/src/api/nodeVue.js new file mode 100644 index 0000000..bfbf2e8 --- /dev/null +++ b/views/src/main/resources/vueboot/src/api/nodeVue.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export async function nodeVuePageQuery(nodeVue, paginator) { + return await request({ + url: '/bicAdmin/nodeVue/query', + method: 'post', + data: { + 'nodeVue': nodeVue, + 'paginator': paginator + } + }) +} + +export async function nodeVueSave(nodeVue) { + return await request({ + url: '/bicAdmin/nodeVue/save', + method: 'post', + data: nodeVue + }) +} + +export async function remoteValidateNodeVueName(systemUuid, name) { + return await request({ + url: '/bicAdmin/nodeVue/validateName/' + systemUuid + '/' + name, + method: 'get', + }) +} + +export async function remoteValidatesNodeVueKey(systemUuid, key) { + return await request({ + url: '/bicAdmin/nodeVue/validateKey/' + systemUuid + '/' + key, + method: 'get', + }) +} diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index 30cafc3..7cb052b 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -25,6 +25,11 @@ Vue.component('v-jsoneditor', VJsoneditor); import * as filters from './filters' // global filters import moment from "moment"; + +import CodeView from "vue-code-view"; + +Vue.use(CodeView); + /** * If you don't want to use mock-server * you want to use MockJs for mock api diff --git a/views/src/main/resources/vueboot/src/router/index.js b/views/src/main/resources/vueboot/src/router/index.js index b142bc6..469d93e 100644 --- a/views/src/main/resources/vueboot/src/router/index.js +++ b/views/src/main/resources/vueboot/src/router/index.js @@ -240,6 +240,18 @@ export const constantRoutes = [ } ] }, + { + path: '/tests', + component: Layout, + children: [ + { + path: 'tests', + component: () => import('@/views/demos/tests'), + name: 'tests', + meta: {title: '测试', icon: 'icon', noCache: true} + } + ] + }, { path: '/profile', component: Layout, 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 index 199715a..e8e8019 100644 --- 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 @@ -7,7 +7,7 @@ :visible.sync="dialogVisible" :close-on-press-escape="false" :close-on-click-modal="false" - width="40%" + width="50%" :before-close="clearForm">
- + + + + + + + + + + + + + + + + 查询 + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/demo-code.vue b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-code.vue new file mode 100644 index 0000000..c1e0d39 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-code.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/demo.vue b/views/src/main/resources/vueboot/src/views/demos/dialog/demo.vue new file mode 100644 index 0000000..730b2b9 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/demo.vue @@ -0,0 +1,52 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/tests.vue b/views/src/main/resources/vueboot/src/views/demos/tests.vue new file mode 100644 index 0000000..39faf1f --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/tests.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/views/src/main/resources/vueboot/vue.config.js b/views/src/main/resources/vueboot/vue.config.js index 1d402a3..6894cdf 100644 --- a/views/src/main/resources/vueboot/vue.config.js +++ b/views/src/main/resources/vueboot/vue.config.js @@ -24,6 +24,7 @@ module.exports = { * In most cases please use '/' !!! * Detail: https://cli.vuejs.org/config/#publicpath */ + runtimeCompiler: true, publicPath: '/', outputDir: 'dist', assetsDir: 'static', diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeVueController.java b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeVueController.java new file mode 100644 index 0000000..ae9ea05 --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/controller/NodeVueController.java @@ -0,0 +1,62 @@ +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.NodeVueService; +import cn.icanci.loopstack.bic.common.model.TextValue; +import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; +import cn.icanci.loopstack.bic.common.result.R; +import cn.icanci.loopstack.bic.web.form.NodeVueQueryForm; +import cn.icanci.loopstack.bic.web.mapper.NodeVueWebMapper; +import cn.icanci.loopstack.bic.web.model.NodeVue; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/13 22:23 + */ +@RestController +@RequestMapping("/bicAdmin/nodeVue") +public class NodeVueController { + + @Resource + private NodeVueWebMapper nodeVueWebMapper; + @Resource + private NodeVueService nodeVueService; + + // ================================ CRUD ================================ + @PostMapping("query") + public R query(@RequestBody NodeVueQueryForm form) { + return R.builderOk() + .data("queryPage", nodeVueService.queryPage(nodeVueWebMapper.web2vo(form.getNodeVue()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())) + .build(); + } + + @PostMapping("save") + public R save(@RequestBody NodeVue nodeVue) { + nodeVueService.save(nodeVueWebMapper.web2vo(nodeVue)); + return R.builderOk().build(); + } + + @GetMapping("validateName/{systemUuid}/{name}") + public R validateName(@PathVariable("systemUuid") String systemUuid, @PathVariable("name") String name) { + NodeVueVO nodeVue = nodeVueService.queryBySystemUuidAndName(systemUuid, name); + return R.builderOk().data("result", nodeVue == null).build(); + } + + @GetMapping("validateKey/{systemUuid}/{key}") + public R validateKey(@PathVariable("systemUuid") String systemUuid, @PathVariable("key") String key) { + NodeVueVO nodeVue = nodeVueService.queryBySystemUuidAndKey(systemUuid, key); + return R.builderOk().data("result", nodeVue == null).build(); + } + // ================================ Load Selectors ================================ + + @GetMapping("loadSelector/{systemUuid}/{nodeUuid}") + public R loadSelector(@PathVariable("systemUuid") String systemUuid, @PathVariable("nodeUuid") String nodeUuid) { + List textValues = nodeVueService.loadSelector(systemUuid, nodeUuid); + return R.builderOk().data("textValues", textValues).build(); + } +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeVueQueryForm.java b/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeVueQueryForm.java new file mode 100644 index 0000000..24dc34c --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/form/NodeVueQueryForm.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.bic.web.form; + +import cn.icanci.loopstack.bic.web.model.NodeVue; +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:07 + */ +@Data +public class NodeVueQueryForm extends BaseQueryForm { + private NodeVue nodeVue; +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeVueWebMapper.java b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeVueWebMapper.java new file mode 100644 index 0000000..4e60c6d --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/mapper/NodeVueWebMapper.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.web.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; +import cn.icanci.loopstack.bic.web.model.NodeVue; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/13 22:26 + */ +@Mapper(componentModel = "spring", uses = {}, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface NodeVueWebMapper extends BaseWebMapper { + +} diff --git a/web/src/main/java/cn/icanci/loopstack/bic/web/model/NodeVue.java b/web/src/main/java/cn/icanci/loopstack/bic/web/model/NodeVue.java new file mode 100644 index 0000000..99e03cf --- /dev/null +++ b/web/src/main/java/cn/icanci/loopstack/bic/web/model/NodeVue.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.bic.web.model; + +import lombok.Data; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/14 21:08 + */ +@Data +public class NodeVue extends Base { + /** 节点函数组件所属的系统uuid */ + private String systemUuid; + /** 节点函数组件所属的节点 */ + private String nodeUuid; + /** 组件名称 */ + private String nodeVueName; + /** 组件Key */ + private String nodeVueKey; + /** 组件代码 */ + private String nodeVueCode; + /** 组件类型:DIALOG、OPEN_TAG,可以选择为弹框、或者打开一个新的标签页 */ + private String nodeVueType; +} -- Gitee