diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/BaseDataService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/BaseDataService.java index 44da7034988f8433454e05cb092352dbfaef2806..2f7fc509762634f34afc3a8c46f1c82d563ff281 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/BaseDataService.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/BaseDataService.java @@ -35,10 +35,11 @@ public interface BaseDataService extends BaseService { /** * 加载下拉框 - * + * + * @param domainCode domainCode * @return 返回下拉框数据 */ - List loadSelector(); + List loadSelector(String domainCode); /** * 测试 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 0c9cbcd564d5f7b214a06f4a0acac92a72ac5074..d6488283a59f58b74bce0580f3a30492b88f68aa 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 @@ -36,9 +36,10 @@ public interface DataSourceService extends BaseService { /** * 下拉框加载 * + * @param domainCode domainCode * @return 返回加载的数据 */ - List loadSelector(); + List loadSelector(String domainCode); /** * 对数据源进行预先执行 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 cd483de5f1114892b40f288095ef58604d36bae9..3dc96c350722203d1cc63bc959e57cfc3066e62a 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 @@ -40,4 +40,13 @@ public interface StrategyService extends BaseService { * @return 返回测试结果 */ StrategyDebugResult debug(StrategyVO strategy, String scriptContentTest); + + /** + * 根据domainCode和sceneCode查询 + * + * @param domainCode domainCode + * @param sceneCode sceneCode + * @return 返回查询结果 + */ + StrategyVO queryBySceneCode(String domainCode, String sceneCode); } 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 1838e921a8ce11729917e5f8ed83dc9255ceaaaf..1b66255c90ab6f837158d440de629d1d6259e6a3 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 @@ -80,8 +80,8 @@ public class BaseDataServiceImpl implements BaseDataService { } @Override - public List loadSelector() { - List baseDatas = queryAll(); + public List loadSelector(String domainCode) { + List baseDatas = baseDataMapper.dos2vos(baseDataDAO.queryByDomainCode(domainCode)); if (CollectionUtils.isEmpty(baseDatas)) { return Lists.newArrayList(); } 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 d83fb71522d939e878ef90ae042fd92ace071b24..ebc867973e7686794f88030cfe14c318d10f0826 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,5 +1,17 @@ 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; @@ -18,18 +30,6 @@ 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 @@ -45,6 +45,12 @@ public class DataSourceServiceImpl implements DataSourceService { @Resource private EventDispatcher eventDispatcher; + /** label 格式化 */ + String DELETED_TYPE_FORMAT = "[无效] [%s] %s"; + + /** label 格式化 */ + String NOT_DELETED_TYPE_FORMAT = "[有效] [%s] %s"; + @Override public List queryAll() { return dataSourceMapper.dos2vos(dataSourceDAO.queryAll()); @@ -79,18 +85,19 @@ public class DataSourceServiceImpl implements DataSourceService { } @Override - public List loadSelector() { - List dataSources = queryAll(); + public List loadSelector(String domainCode) { + List dataSources = dataSourceMapper.dos2vos(dataSourceDAO.queryByDomainCode(domainCode)); if (CollectionUtils.isEmpty(dataSources)) { return Lists.newArrayList(); } List textValues = Lists.newArrayList(); for (DataSourceVO dataSource : dataSources) { String label; + DataSourceTypeEnum dataSourceType = dataSource.getDataSourceType(); if (isDeleted(dataSource)) { - label = String.format(DELETED_FORMAT, dataSource.getDataSourceName()); + label = String.format(DELETED_TYPE_FORMAT, dataSourceType.getDesc(), dataSource.getDataSourceName()); } else { - label = String.format(NOT_DELETED_FORMAT, dataSource.getDataSourceName()); + label = String.format(NOT_DELETED_TYPE_FORMAT, dataSourceType.getDesc(), dataSource.getDataSourceName()); } String value = dataSource.getUuid(); textValues.add(new TextValue(label, value)); diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/MetadataServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/MetadataServiceImpl.java index cc980f2386f2b0b3042f5fa71e76d0da9fe6836a..b36f1d04b2608dec993684c05892adaec07df88b 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/MetadataServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/MetadataServiceImpl.java @@ -65,7 +65,7 @@ public class MetadataServiceImpl implements MetadataService { @Override public List loadSelector(String domainCode) { - List metadatas = queryAll(); + List metadatas = metadataMapper.dos2vos(metadataDAO.queryByDomainCode(domainCode)); if (CollectionUtils.isEmpty(metadatas)) { return Lists.newArrayList(); } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/StrategyServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/StrategyServiceImpl.java index 1a7e8ad7fc578e5b694b27c7f724ba7f60090af6..5c9a52fcc068574e9920e0faa3898f88b79c0a8e 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/StrategyServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/StrategyServiceImpl.java @@ -1,5 +1,21 @@ package cn.icanci.rec.admin.biz.service.impl; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.Resource; +import javax.script.CompiledScript; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + import cn.icanci.rec.admin.biz.event.log.LogEvent; import cn.icanci.rec.admin.biz.mapper.config.StrategyMapper; import cn.icanci.rec.admin.biz.mapper.config.StrategyVoDtoMapper; @@ -24,22 +40,6 @@ import cn.icanci.rec.engine.sdk.rule.repository.DomainSceneKey; import cn.icanci.rec.engine.sdk.rule.repository.EngineRepositoryHolder; import cn.icanci.rec.spi.event.EventDispatcher; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import javax.annotation.Resource; -import javax.script.CompiledScript; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - /** * @author icanci * @since 1.0 Created in 2022/11/12 10:38 @@ -150,6 +150,11 @@ public class StrategyServiceImpl implements StrategyService { return result; } + @Override + public StrategyVO queryBySceneCode(String domainCode, String sceneCode) { + return strategyMapper.do2vo(strategyDAO.queryBySceneCode(domainCode, sceneCode)); + } + /** * 编译执行脚本 * diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/StrategyDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/StrategyDAO.java index 7bf5995b042620c9b5dcec3309b7911aa6655347..73859b94704906d87fa94d7a69f7415be427c8d1 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/StrategyDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/StrategyDAO.java @@ -24,6 +24,8 @@ public interface StrategyDAO extends BaseDAO { List queryByDomainCode(String domainCode); + StrategyDO queryBySceneCode(String domainCode, String sceneCode); + interface StrategyColumn extends BaseColumn { /** * 域Code diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/StrategyDO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/StrategyDO.java index f8cdd920915f5318de721c1491ef28114c4c9ce1..8c465b663d932acdb360f233f0d9fd031687e584 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/StrategyDO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/StrategyDO.java @@ -21,12 +21,6 @@ public class StrategyDO extends BaseDO { * 策略组名称 */ private String strategyName; - /** - * 数据源类型(脚本、接口、SQL) - * - * @see DataSourceTypeEnum#name() - */ - private String dataSourceType; /** * 数据源关联uuid */ @@ -76,14 +70,6 @@ public class StrategyDO extends BaseDO { this.strategyName = strategyName; } - public String getDataSourceType() { - return dataSourceType; - } - - public void setDataSourceType(String dataSourceType) { - this.dataSourceType = dataSourceType; - } - public String getDataSourceUuid() { return dataSourceUuid; } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoStrategyDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoStrategyDAO.java index 3405d9b25c0a35c7afa74a544eb80730c3bafc81..957e16c9b37792db0ea917e8afb94f9e87cb3ae6 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoStrategyDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoStrategyDAO.java @@ -82,4 +82,13 @@ public class MongoStrategyDAO extends AbstractBaseDAO implements Str Query query = new Query(criteria); return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME); } + + @Override + public StrategyDO queryBySceneCode(String domainCode, String sceneCode) { + Criteria criteria = Criteria.where(StrategyColumn.domainCode).is(domainCode); + criteria.and(StrategyColumn.env).is(DEFAULT_ENV); + criteria.and(StrategyColumn.sceneCode).is(sceneCode); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } } \ No newline at end of file diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js index 23c305a6f552aa5ac7241c8c514710d58e76355c..0e2a94d1f5bfcd54ad9fc32d3319577196561229 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js @@ -6,30 +6,30 @@ import request from '@/utils/request' * @returns {*} */ export async function loadDomainSelector() { - let ret = await request({ - url: '/rec/domain/loadSelector', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/domain/loadSelector', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** - * loadMetadataSelector + * loadBaseDataSelector * * @returns {*} */ -export async function loadMetadataSelector(domainCode) { - let ret = await request({ - url: '/rec/metadata/loadSelector/' + domainCode, - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] +export async function loadBaseDataSelector(domainCode) { + let ret = await request({ + url: '/rec/baseData/loadSelector/' + domainCode, + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } @@ -38,14 +38,14 @@ export async function loadMetadataSelector(domainCode) { * @returns {*} */ export async function loadDomainSceneSelector(domainCode) { - let ret = await request({ - url: '/rec/scene/loadSelector/' + domainCode, - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/scene/loadSelector/' + domainCode, + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -53,14 +53,29 @@ export async function loadDomainSceneSelector(domainCode) { * @returns {*} */ export async function loadDomainMetadataSelector(domainCode) { - let ret = await request({ - url: '/rec/metadata/loadSelector/' + domainCode, - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/metadata/loadSelector/' + domainCode, + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + +/** + * @param domainCode domainCode + * @returns {*} + */ +export async function loadDataSourceSelector(domainCode) { + let ret = await request({ + url: '/rec/dataSource/loadSelector/' + domainCode, + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -69,14 +84,14 @@ export async function loadDomainMetadataSelector(domainCode) { * @returns {*} */ export async function loadDataSourceTypeSelector() { - let ret = await request({ - url: '/rec/common/dataSourceType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/dataSourceType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -85,14 +100,14 @@ export async function loadDataSourceTypeSelector() { * @returns {*} */ export async function loadDataTypeSelector() { - let ret = await request({ - url: '/rec/common/dataType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/dataType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -101,14 +116,14 @@ export async function loadDataTypeSelector() { * @returns {*} */ export async function loadHttpRequestTypeSelector() { - let ret = await request({ - url: '/rec/common/httpRequestType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/httpRequestType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -117,14 +132,14 @@ export async function loadHttpRequestTypeSelector() { * @returns {*} */ export async function loadInterruptSelector() { - let ret = await request({ - url: '/rec/common/interrupt', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/interrupt', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -133,14 +148,14 @@ export async function loadInterruptSelector() { * @returns {*} */ export async function loadOperatorSelector() { - let ret = await request({ - url: '/rec/common/operator', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/operator', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -149,14 +164,14 @@ export async function loadOperatorSelector() { * @returns {*} */ export async function loadResultTypeSelector() { - let ret = await request({ - url: '/rec/common/resultType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/resultType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -165,14 +180,30 @@ export async function loadResultTypeSelector() { * @returns {*} */ export async function loadRuleTypeSelector() { - let ret = await request({ - url: '/rec/common/ruleType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/ruleType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + +/** + * loadRuleModeSelector + * + * @returns {*} + */ +export async function loadRuleModeSelector() { + let ret = await request({ + url: '/rec/common/ruleMode', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } /** @@ -181,12 +212,12 @@ export async function loadRuleTypeSelector() { * @returns {*} */ export async function loadScriptTypeSelector() { - let ret = await request({ - url: '/rec/common/scriptType', - method: 'get', - }); - if (ret.ok) { - return ret.data.textValues; - } - return [] + let ret = await request({ + url: '/rec/common/scriptType', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] } 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 88f6842ab810405718f2aaf52f565fe9812e38f3..3d9c7c6c3fa6aa51d60421917db6d5451ab1d1c1 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,19 @@ export async function remoteValidateStrategyName(domainCode, dataSourceName) { method: 'get', }) } +/** + * 验证 remoteValidateSceneCode + * + * @param domainCode domainCode + * @param sceneCode sceneCode + * @returns {*} + */ +export async function remoteValidateSceneCode(domainCode, sceneCode) { + return await request({ + url: '/rec/strategy/validateSceneCode/' + domainCode + "/" + sceneCode, + method: 'get', + }) +} /** * 保存 diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeList.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeList.vue new file mode 100644 index 0000000000000000000000000000000000000000..eef1c37bbc2a8c26e5294b79d182ab338c4df1ef --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeList.vue @@ -0,0 +1,98 @@ + + + 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 new file mode 100644 index 0000000000000000000000000000000000000000..c81f7fdb1c68868c1afc149d86f8ce2d0d3c64bb --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/components/ruleTreeNode.vue @@ -0,0 +1,264 @@ + + + + diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/baseDataForm.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/baseDataForm.vue index a6af396650faa7e105c02bf5554529e548da4e7d..3536bb4f5a6b8b500e48ba6e5388abefbd04531d 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/baseDataForm.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/baseDataForm.vue @@ -19,7 +19,6 @@ > import {baseDataDebug, remoteValidateFieldName, saveBaseData} from "../../../api/basedataApi"; -import {loadDataTypeSelector, loadDomainSelector, loadMetadataSelector, loadResultTypeSelector, loadScriptTypeSelector} from "../../../api/loadSelectorApi"; +import {loadDataTypeSelector, loadDomainMetadataSelector, loadDomainSelector, loadResultTypeSelector, loadScriptTypeSelector} from "../../../api/loadSelectorApi"; export default { name: "baseDataForm", @@ -194,8 +193,6 @@ export default { vm.dataTypeOptions = await loadDataTypeSelector() vm.scriptTypeOptions = await loadScriptTypeSelector() vm.resultTypeOptions = await loadResultTypeSelector() - vm.metadataOptions = await loadMetadataSelector() - if (data) { vm.saveData = vm.$cloneObj(data) } @@ -242,9 +239,6 @@ export default { } vm.dialogVisible = false }, - async domainChange(value) { - this.metadataOptions = await loadMetadataSelector(value) - }, debug() { this.$refs['ruleForm'].validate(async (valid) => { if (valid) { @@ -262,6 +256,18 @@ export default { } }) } + }, + watch: { + "saveData.domainCode": { + async handler(newVal, oldVal) { + if (newVal) { + this.metadataOptions = [] + this.saveData.metadataUuid = '' + this.metadataOptions = await loadDomainMetadataSelector(newVal) + } + }, + immediate: true + } } } diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/dataSourceForm.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/dataSourceForm.vue index a4cf80208cf9c73dcc672eadd91c4d58a7bcede2..3aa0b5ebaa8e17a8f8db9d23ea897fcb676d00c0 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/dataSourceForm.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/dataSourceForm.vue @@ -200,13 +200,13 @@ export default { {required: true, message: '此项必填', trigger: 'change'} ], 'httpInfo.reqUrl': [ - {required: true, message: '此项必填', trigger: 'change'} + {required: true, message: '此项必填', trigger: 'blur'} ], 'httpInfo.reqParam': [ {required: true, message: '此项必填', trigger: 'change'} ], 'httpInfo.timeout': [ - {required: true, message: '此项必填', trigger: 'change'} + {required: true, message: '此项必填', trigger: 'blur'} ], }, testPass: false, diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/strategyForm.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/strategyForm.vue index ef7d54dc6d6076d8058bb9beecb32a04e802af3d..5dd7461e24ca7f287cf2fef95a23be41ad1d0d52 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/strategyForm.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/strategyForm.vue @@ -2,59 +2,135 @@ diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/strategy.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/strategy.vue index 87b196d32acbed9aaeee448822e40e4b728addf9..fa025fe07ddc814ef3c82d61df5271205b5a4b2c 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/strategy.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/strategy.vue @@ -33,7 +33,7 @@ - + diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/CommonController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/CommonController.java index f2378b1384e1751e7326a56de8f24c05ca49fcf9..af569da0ea694e0d2583976d977c9c26a7cb283b 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/CommonController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/CommonController.java @@ -68,4 +68,10 @@ public class CommonController { return R.builderOk().data("textValues", textValues).build(); } + @GetMapping("ruleMode") + public R ruleMode() { + List textValues = Arrays.stream(RuleModeEnum.values()).map(x -> new TextValue(x.getDesc(), x.name())).collect(Collectors.toList()); + return R.builderOk().data("textValues", textValues).build(); + } + } diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java index cbe2c6835cdf771d3a26861e9a15eb052874865d..39794b5184e0298c51098f14a50ed0b33de72abb 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java @@ -49,9 +49,9 @@ public class BaseDataController { } // ================================ Load Selectors ================================ - @GetMapping("loadSelector") - public R loadSelector() { - List textValues = baseDataService.loadSelector(); + @GetMapping("loadSelector/{domainCode}") + public R loadSelector(@PathVariable("domainCode") String domainCode) { + List textValues = baseDataService.loadSelector(domainCode); return R.builderOk().data("textValues", textValues).build(); } // ================================ Debug ================================ diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DataSourceController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DataSourceController.java index 747935088ca5cbe6addde780a3de161781b474bc..e77e4e6c00b525f2588bcf7a91428d095e6def2d 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DataSourceController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DataSourceController.java @@ -47,9 +47,9 @@ public class DataSourceController { } // ================================ Load Selectors ================================ - @GetMapping("loadSelector") - public R loadSelector() { - List textValues = dataSourceService.loadSelector(); + @GetMapping("loadSelector/{domainCode}") + public R loadSelector(@PathVariable("domainCode") String domainCode) { + List textValues = dataSourceService.loadSelector(domainCode); return R.builderOk().data("textValues", textValues).build(); } // ================================ Debug ================================ diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/StrategyController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/StrategyController.java index fca8afdc1b6edcd5cb52346c61ab15901a1eb11c..43df62e1579b0b78b74f7154b663764f235a8ca3 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/StrategyController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/StrategyController.java @@ -44,6 +44,12 @@ public class StrategyController { StrategyVO strategy = strategyService.queryByStrategyName(domainCode, strategyName); return R.builderOk().data("result", strategy == null).build(); } + + @GetMapping("validateSceneCode/{domainCode}/{sceneCode}") + public R validateSceneCode(@PathVariable("domainCode") String domainCode, @PathVariable("sceneCode") String sceneCode) { + StrategyVO strategy = strategyService.queryBySceneCode(domainCode, sceneCode); + return R.builderOk().data("result", strategy == null).build(); + } // ================================ Debug ================================ @PostMapping("debug") diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Strategy.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Strategy.java index d48c69bdac6aa7a905d46ecbd9858d4fe7011233..6d5ad67a3a8559f2c3c70604c5a133eadba3ef03 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Strategy.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Strategy.java @@ -22,12 +22,6 @@ public class Strategy extends Base { * 策略组名称 */ private String strategyName; - /** - * 数据源类型(脚本、接口、SQL) - * - * @see DataSourceTypeEnum#name() - */ - private String dataSourceType; /** * 数据源关联uuid */ @@ -77,14 +71,6 @@ public class Strategy extends Base { this.strategyName = strategyName; } - public String getDataSourceType() { - return dataSourceType; - } - - public void setDataSourceType(String dataSourceType) { - this.dataSourceType = dataSourceType; - } - public String getDataSourceUuid() { return dataSourceUuid; } diff --git a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/StrategyDTO.java b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/StrategyDTO.java index 6c96d15c471a43c8666891174603f8c5a398a3ba..220edd0c5bcd1d1ec78561caafc3195f3a984b0c 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/StrategyDTO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/StrategyDTO.java @@ -23,12 +23,6 @@ public class StrategyDTO extends BaseDTO { * 策略组名称 */ private String strategyName; - /** - * 数据源类型(脚本、接口、SQL) - * - * @see DataSourceTypeEnum#name() - */ - private String dataSourceType; /** * 数据源关联uuid */ @@ -78,14 +72,6 @@ public class StrategyDTO extends BaseDTO { this.strategyName = strategyName; } - public String getDataSourceType() { - return dataSourceType; - } - - public void setDataSourceType(String dataSourceType) { - this.dataSourceType = dataSourceType; - } - public String getDataSourceUuid() { return dataSourceUuid; } diff --git a/rec-common/src/main/java/cn/icanci/rec/common/enums/InterruptEnum.java b/rec-common/src/main/java/cn/icanci/rec/common/enums/InterruptEnum.java index 50774eae40c2bacd05785511fa67760511764be0..88f1e08753c5e4dc412f931c46611e3743d52178 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/enums/InterruptEnum.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/enums/InterruptEnum.java @@ -10,11 +10,11 @@ public enum InterruptEnum { /** * TRUE */ - TRUE("TRUE", "TRUE"), + TRUE("TRUE", "TRUE(中断)"), /** * FALSE */ - FALSE("FALSE", "FALSE"),; + FALSE("FALSE", "FALSE(不中断)"),; InterruptEnum(String code, String desc) { this.code = code; diff --git a/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java b/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java index b2681dd71030b1a45b2485fa9f20cb43e11c4135..70b01bc5b5ea0b6aa454fe3117f8fb8e0dac1601 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java @@ -16,10 +16,11 @@ public enum ScriptTypeEnum { * MVEL2 */ MVEL2("MVEL2", "Mvel2.0脚本"), - /** - * JAVA_SCRIPT - */ - JAVA_SCRIPT("JAVA_SCRIPT", "JavaScript脚本"), + // TODO JAVA_SCRIPT + // /** + // * JAVA_SCRIPT + // */ + // JAVA_SCRIPT("JAVA_SCRIPT", "JavaScript脚本"), // /** // * Json 取值 // */ diff --git a/rec-common/src/main/java/cn/icanci/rec/common/model/config/StrategyVO.java b/rec-common/src/main/java/cn/icanci/rec/common/model/config/StrategyVO.java index f195df7901f00ceb4128f5c2d3a160c017897134..2677a2d8c734f69ce3be9dc30e6e786a194e180f 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/model/config/StrategyVO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/model/config/StrategyVO.java @@ -14,39 +14,36 @@ public class StrategyVO extends BaseVO { /** * 域Code */ - private String domainCode; + private String domainCode; /** * 场景Code */ - private String sceneCode; + private String sceneCode; /** * 策略组名称 */ - private String strategyName; - /** - * 数据源类型(脚本、接口、SQL) - */ - private DataSourceTypeEnum dataSourceType; + private String strategyName; + /** * 数据源关联uuid */ - private String dataSourceUuid; + private String dataSourceUuid; /** * 规则配置类型(默认为List) */ - private RuleTypeEnum ruleType; + private RuleTypeEnum ruleType; /** * 规则模式 默认为simple */ - private RuleModeEnum ruleMode; + private RuleModeEnum ruleMode; /** * 规则配置类型为List时候的规则数据 */ - private RuleListInfo ruleListInfo; + private RuleListInfo ruleListInfo; /** * 规则配置类型为Tree时候的规则数据 */ - private RuleTreeInfo ruleTreeInfo; + private RuleTreeInfo ruleTreeInfo; public String getDomainCode() { return domainCode; @@ -72,14 +69,6 @@ public class StrategyVO extends BaseVO { this.strategyName = strategyName; } - public DataSourceTypeEnum getDataSourceType() { - return dataSourceType; - } - - public void setDataSourceType(DataSourceTypeEnum dataSourceType) { - this.dataSourceType = dataSourceType; - } - public String getDataSourceUuid() { return dataSourceUuid; } diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/enums/ScriptTypeFactoryEnum.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/enums/ScriptTypeFactoryEnum.java index dc5cf5c8a889f9df62c9872a5891af5672914d50..02042351edd5043c87f07ab7f06435411a1e58d2 100644 --- a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/enums/ScriptTypeFactoryEnum.java +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/enums/ScriptTypeFactoryEnum.java @@ -1,7 +1,6 @@ package cn.icanci.rec.engine.script.enums; import cn.icanci.rec.common.enums.ScriptTypeEnum; -import jdk.nashorn.api.scripting.NashornScriptEngineFactory; import java.util.HashMap; import java.util.Map; @@ -24,16 +23,17 @@ public enum ScriptTypeFactoryEnum { * MVEL2 */ MVEL2(ScriptTypeEnum.MVEL2, new MvelScriptEngineFactory()), - /** - * JAVA_SCRIPT - * - * Tip: NashornScriptEngineFactory 支持执行 - * nashorn,Nashorn,js,JS,JavaScript,javascript,ECMAScript,ecmascript - * 此处只用到了JavaScript - * - * Warning: Nashorn engine is planned to be removed from a future JDK release - */ - JAVA_SCRIPT(ScriptTypeEnum.JAVA_SCRIPT, new NashornScriptEngineFactory()), + + /** + * TODO JAVA_SCRIPT + * + * Tip: NashornScriptEngineFactory 支持执行 + * nashorn,Nashorn,js,JS,JavaScript,javascript,ECMAScript,ecmascript + * 此处只用到了JavaScript + * + * Warning: Nashorn engine is planned to be removed from a future JDK release + */ + // JAVA_SCRIPT(ScriptTypeEnum.JAVA_SCRIPT, new NashornScriptEngineFactory()), ; diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java index 304f987b2ba3a98ffb5e8d6e67ba068a58115d6d..d07cc42df65c6013f6497bfc2412db3bbe81a869 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java @@ -214,7 +214,7 @@ public final class EngineExecutor { if (CollectionUtils.isEmpty(last.getChildren())) { return Boolean.TRUE; } - // 执行孩子节点 + // 执行孩子节点 List结构没有孩子节点 return matchGroup(last.getChildren(), domainCode, ruleMode, bindings); } @@ -235,9 +235,8 @@ public final class EngineExecutor { if (parameters != null) { bindings.putAll(parameters); } - String dataSourceType = strategy.getDataSourceType(); String dataSourceUuid = strategy.getDataSourceUuid(); - if (StringUtils.isNotBlank(dataSourceType) && StringUtils.isNotBlank(dataSourceUuid)) { + if (StringUtils.isNotBlank(dataSourceUuid)) { DataSourceDTO dataSource = holder.getDataSource(domain.getDomainCode(), dataSourceUuid); DataSourceTypeEnum dataSourceTypeEnum = DataSourceTypeEnum.valueOf(dataSource.getDataSourceType()); switch (dataSourceTypeEnum) { diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/pool/ScriptExecutorPoolHolder.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/pool/ScriptExecutorPoolHolder.java index fe1cae344058f0f5768390f0dfa2f641455a8c88..b300e4122ea8d5aeb2b168430b95f03629eb27ab 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/pool/ScriptExecutorPoolHolder.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/pool/ScriptExecutorPoolHolder.java @@ -24,7 +24,7 @@ public class ScriptExecutorPoolHolder { return instance; } - private ThreadPoolExecutor registryOrRemoveThreadPool = null; + private ThreadPoolExecutor registryOrRemoveThreadPool; private ScriptExecutorPoolHolder() { registryOrRemoveThreadPool = new ThreadPoolExecutor(2, 10, 30L, TimeUnit.SECONDS, new LinkedBlockingQueue(2000),