From 840cdb0b50519fdba998402ca731b0bcedc377bf Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 20 Nov 2022 12:53:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=96=E7=95=A5=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/biz/service/DataSourceService.java | 12 +- .../admin/biz/service/StrategyService.java | 2 +- .../biz/service/impl/BaseDataServiceImpl.java | 2 +- .../service/impl/DataSourceServiceImpl.java | 31 +- .../mongodb/daointerface/DataSourceDAO.java | 6 +- .../dal/mongodb/mongo/MongoDataSourceDAO.java | 11 +- .../vueboot/src/api/dataSourceApi.js | 13 + .../resources/vueboot/src/api/strategyApi.js | 83 ++++- .../src/main/resources/vueboot/src/main.js | 2 +- .../vueboot/src/views/common/vue-log.vue | 2 +- .../vueboot/src/views/ruleConfig/baseData.vue | 2 +- .../ruleConfig/components/ruleTreeList.vue | 1 + .../ruleConfig/components/ruleTreeNode.vue | 327 ++++++++++++++---- .../src/views/ruleConfig/dataSource.vue | 2 +- .../views/ruleConfig/dialog/strategyForm.vue | 114 +++++- .../vueboot/src/views/ruleConfig/domain.vue | 2 +- .../vueboot/src/views/ruleConfig/metadata.vue | 2 +- .../vueboot/src/views/ruleConfig/strategy.vue | 2 +- .../config/DataSourceController.java | 6 + .../icanci/rec/common/enums/OperatorEnum.java | 2 +- .../repository/EngineRepositoryHolder.java | 6 +- 21 files changed, 515 insertions(+), 115 deletions(-) diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DataSourceService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DataSourceService.java index d648828..72c2e76 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DataSourceService.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DataSourceService.java @@ -1,12 +1,12 @@ package cn.icanci.rec.admin.biz.service; -import java.util.List; - import cn.icanci.rec.admin.biz.model.DataSourceDebugResult; import cn.icanci.rec.admin.dal.mongodb.common.PageList; import cn.icanci.rec.common.model.TextValue; import cn.icanci.rec.common.model.config.DataSourceVO; +import java.util.List; + /** * @author icanci * @since 1.0 Created in 2022/11/12 09:03 @@ -48,4 +48,12 @@ public interface DataSourceService extends BaseService { * @return 返回执行结果 */ DataSourceDebugResult debug(DataSourceVO dataSource); + + /** + * 根据uuid查询 + * + * @param dataSourceUuid dataSourceUuid + * @return 返回查询结果 + */ + DataSourceVO queryByUuid(String dataSourceUuid); } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/StrategyService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/StrategyService.java index 3dc96c3..6493423 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/StrategyService.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/StrategyService.java @@ -36,7 +36,7 @@ public interface StrategyService extends BaseService { * 对策略进行测试 * * @param strategy strategy - * @param scriptContentTest 测试参数,当数据源存在且为脚本的时候,此项有值 + * @param scriptContentTest 测试参数 * @return 返回测试结果 */ StrategyDebugResult debug(StrategyVO strategy, String scriptContentTest); diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/BaseDataServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/BaseDataServiceImpl.java index 1b66255..623000a 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/BaseDataServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/BaseDataServiceImpl.java @@ -94,7 +94,7 @@ public class BaseDataServiceImpl implements BaseDataService { label = String.format(NOT_DELETED_FORMAT, baseData.getFieldName()); } String value = baseData.getUuid(); - textValues.add(new TextValue(label, value)); + textValues.add(new TextValue(label, value, baseData.getDataType().getCode())); } return textValues; } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DataSourceServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DataSourceServiceImpl.java index ebc8679..a612dab 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DataSourceServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DataSourceServiceImpl.java @@ -1,17 +1,5 @@ package cn.icanci.rec.admin.biz.service.impl; -import java.util.List; -import java.util.Map; -import java.util.concurrent.*; - -import javax.annotation.Resource; - -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; - -import com.alibaba.fastjson.JSONException; -import com.google.common.collect.Lists; - import cn.icanci.rec.admin.biz.event.log.LogEvent; import cn.icanci.rec.admin.biz.mapper.config.DataSourceMapper; import cn.icanci.rec.admin.biz.model.DataSourceDebugResult; @@ -30,6 +18,18 @@ import cn.icanci.rec.engine.script.context.RecScriptEngineContext; import cn.icanci.rec.engine.script.wrapper.HttpResponseWrapper; import cn.icanci.rec.spi.event.EventDispatcher; +import java.util.List; +import java.util.Map; +import java.util.concurrent.*; + +import javax.annotation.Resource; + +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson.JSONException; +import com.google.common.collect.Lists; + /** * @author icanci * @since 1.0 Created in 2022/11/12 09:04 @@ -100,7 +100,7 @@ public class DataSourceServiceImpl implements DataSourceService { label = String.format(NOT_DELETED_TYPE_FORMAT, dataSourceType.getDesc(), dataSource.getDataSourceName()); } String value = dataSource.getUuid(); - textValues.add(new TextValue(label, value)); + textValues.add(new TextValue(label, value, dataSource.getDataSourceType().getCode())); } return textValues; } @@ -166,6 +166,11 @@ public class DataSourceServiceImpl implements DataSourceService { } } + @Override + public DataSourceVO queryByUuid(String dataSourceUuid) { + return dataSourceMapper.do2vo(dataSourceDAO.queryByUuid(dataSourceUuid)); + } + /** * 脚本执行处理 * diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DataSourceDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DataSourceDAO.java index e0b87ec..dc2440d 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DataSourceDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DataSourceDAO.java @@ -22,6 +22,8 @@ public interface DataSourceDAO extends BaseDAO { List queryByDomainCode(String domainCode); + DataSourceDO queryByUuid(String dataSourceUuid); + interface DataSourceColumn extends BaseColumn { /** * 数据源名称 @@ -32,8 +34,8 @@ public interface DataSourceDAO extends BaseDAO { */ String dataSourceType = "dataSourceType"; /** - * 数据源类型 + * 数据源DomainCode */ - String domainCode = "domainCode"; + String domainCode = "domainCode"; } } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDataSourceDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDataSourceDAO.java index 84d823c..a44d5c0 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDataSourceDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDataSourceDAO.java @@ -73,10 +73,19 @@ public class MongoDataSourceDAO extends AbstractBaseDAO implements return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); } - @Override public List queryByDomainCode(String domainCode) { + @Override + public List queryByDomainCode(String domainCode) { Criteria criteria = Criteria.where(DataSourceColumn.domainCode).is(domainCode); criteria.and(DataSourceColumn.env).is(DEFAULT_ENV); Query query = new Query(criteria); return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); } + + @Override + public DataSourceDO queryByUuid(String dataSourceUuid) { + Criteria criteria = Criteria.where(DataSourceColumn.uuid).is(dataSourceUuid); + criteria.and(DataSourceColumn.env).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } } diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/dataSourceApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/dataSourceApi.js index c021566..ecc8c1d 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/dataSourceApi.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/dataSourceApi.js @@ -58,3 +58,16 @@ export async function dataSourceDebug(dataSource) { data: dataSource }) } + +/** + * 测试 + * + * @param dataSourceUuid dataSourceUuid + * @returns {*} + */ +export async function dataSourceDebugForUuid(dataSourceUuid) { + return await request({ + url: '/rec/dataSource/debugUuid/' + dataSourceUuid, + method: 'get', + }) +} diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/strategyApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/strategyApi.js index 3d9c7c6..5acfe20 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/strategyApi.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/strategyApi.js @@ -13,6 +13,7 @@ export async function remoteValidateStrategyName(domainCode, dataSourceName) { method: 'get', }) } + /** * 验证 remoteValidateSceneCode * @@ -66,13 +67,89 @@ export async function strategyPageQuery(strategy, paginator) { * @param scriptContentTest scriptContentTest * @returns {*} */ -export async function strategyDebug(strategy, scriptContentTest) { +export async function strategyDebug(strategy,scriptContentTest) { return await request({ url: '/rec/strategy/debug', method: 'post', data: { - 'strategy': strategy, - 'scriptContentTest': scriptContentTest + 'strategy':strategy, + 'scriptContentTest':scriptContentTest } }) } + + +/** + * 获取Boolean操作类型的选择框 + */ +export function getBooleanOperator() { + return [ + {label: '等于(=)', value: 'EQ'}, + {label: '不等于(!=)', value: 'NE'}, + ] +} + +/** + * 获取number操作类型的选择框 + */ +export function getNumberOperator() { + return [ + {label: '等于(=)', value: 'EQ'}, + {label: '大于(>)', value: 'GT'}, + {label: '大于等于(>=)', value: 'GTE'}, + {label: '小于(<)', value: 'LT'}, + {label: '小于等于(<=)', value: 'LTE'}, + {label: '不等于(!=)', value: 'NE'}, + ] +} + +/** + * 获取String操作类型的选择框 + */ +export function getStringOperator() { + return [ + {label: '等于(=)', value: 'EQ'}, + {label: '不等于(!=)', value: 'NE'}, + {label: '包含(⊇)', value: 'CONTAIN'}, + {label: '不包含', value: 'UN_CONTAIN'}, + // {label: '包含于(⊆或⊂)', value: 'INCLUDED'}, + ] +} + +/** + * 获取Date操作类型的选择框 + */ +export function getDateOperator() { + return [ + {label: '等于(=)', value: 'EQ'}, + {label: '大于(>)', value: 'GT'}, + {label: '大于等于(>=)', value: 'GTE'}, + {label: '小于(<)', value: 'LT'}, + {label: '小于等于(<=)', value: 'LTE'}, + {label: '不等于(!=)', value: 'NE'}, + ] +} + +/** + * 获取Metadata操作类型的选择框 + */ +export function getMetadataOperator() { + return [ + {label: '等于(=)', value: 'EQ'}, + {label: '不等于(!=)', value: 'NE'}, + {label: '包含(⊇)', value: 'CONTAIN'}, + {label: '不包含', value: 'UN_CONTAIN'}, + {label: '包含于(⊆或⊂)', value: 'INCLUDED'}, + ] +} + +/** + * 获取布尔操作下拉框 + * @returns {[{label: string, value: string}, {label: string, value: string}]} + */ +export function getBooleanValueOptions() { + return [ + {label: 'TRUE', value: 'TRUE'}, + {label: 'FALSE', value: 'FALSE'}, + ] +} diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js index e154a53..bb4d330 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js @@ -21,7 +21,7 @@ Vue.config.productionTip = false Vue.prototype.$cloneObj = function (data) { return JSON.parse(JSON.stringify(data)) } -Vue.prototype.dateFormat = function (date) { +Vue.prototype.recDateFormat = function (date) { return moment(date).format('YYYY-MM-DD HH:mm:ss'); } diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue index 5a04c6b..93d257b 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue @@ -45,7 +45,7 @@ width="150" label="操作时间"> diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/baseData.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/baseData.vue index c6e80bc..dca9a5e 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/baseData.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/baseData.vue @@ -91,7 +91,7 @@ width="300" label="创建/修改时间"> diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeNode.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeNode.vue index c81f7fd..75941f6 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeNode.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeNode.vue @@ -102,8 +102,9 @@ @@ -116,60 +117,185 @@ + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + @@ -215,17 +331,73 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dataSource.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dataSource.vue index de95f7d..99c8c0b 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dataSource.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dataSource.vue @@ -88,7 +88,7 @@ width="300" label="创建/修改时间"> + 执行 + + +
+ 是否执行成功:{{ dataSourceDebugResult.success }}
+ 实际执行结果:{{ dataSourceDebugResult.realResult }}
+ 执行异常:{{ dataSourceDebugResult.exceptionMessage }} +
- 规则模式切换自动清除中断相关配置数据 + 规则模式切换自动清除中断相关配置数据 (如果此项禁用则需要选择场景) + + + + +
+ 请求参数:{{ ruleDebugResult.executorParam }}
+ 是否执行成功:{{ ruleDebugResult.success }}
+ 返回值是否是布尔类型:{{ ruleDebugResult.retBoolean }}
+ 实际执行结果:{{ ruleDebugResult.retValue }}
+ 执行异常:{{ ruleDebugResult.exceptionMessage }} +
+
取 消 测 试 - 确 定 + 确 定