From 7486653ce0084468dedcb48939eaf7529ee4e52a Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Sun, 30 Oct 2022 09:29:22 +0800 Subject: [PATCH] =?UTF-8?q?refactror(=E5=BA=94=E7=94=A8):=20=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=BC=96=E8=BE=91=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/DatasourceController.java | 6 +- .../io/dataease/ext/ExtDataSourceMapper.java | 2 +- .../io/dataease/ext/ExtDataSourceMapper.xml | 7 ++ .../service/datasource/DatasourceService.java | 119 ++++++++++-------- .../service/panel/PanelGroupService.java | 4 +- .../panel/appTemplateMarket/log/index.vue | 4 +- .../src/views/system/datasource/DsForm.vue | 47 +++---- 7 files changed, 93 insertions(+), 96 deletions(-) diff --git a/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java b/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java index 272304b63c..4de2848a3e 100644 --- a/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java +++ b/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java @@ -85,11 +85,7 @@ public class DatasourceController { @ApiOperation("查询数据源详情") @PostMapping("/get/{id}") public DatasourceDTO getDatasource(@PathVariable String id) throws Exception { - DatasourceUnionRequest request = new DatasourceUnionRequest(); - request.setUserId("1"); - request.setId(id); - List datasourceList = datasourceService.getDatasourceList(request); - return CollectionUtils.isNotEmpty(datasourceList) ? datasourceList.get(0) : null; + return datasourceService.getDataSourceDetails(id); } @ApiOperation("查询当前用户数据源") diff --git a/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.java b/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.java index 21ddb7de91..d9d1b687e0 100644 --- a/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.java +++ b/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.java @@ -15,7 +15,7 @@ public interface ExtDataSourceMapper { List findByPanelId(@Param("panelId") String panelId); - + DatasourceDTO queryDetails(@Param("datasourceId") String datasourceId,@Param("userId") String userId); } diff --git a/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.xml b/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.xml index e7b7e1ca56..10ce945c85 100644 --- a/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.xml +++ b/backend/src/main/java/io/dataease/ext/ExtDataSourceMapper.xml @@ -130,5 +130,12 @@ WHERE panel_view.panel_id = #{panelId} + + diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index 25a89a4933..c60c17f22a 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -152,64 +152,75 @@ public class DatasourceService { request.setSort("update_time desc"); List datasourceDTOS = extDataSourceMapper.queryUnion(request); datasourceDTOS.forEach(datasourceDTO -> { - types().forEach(dataSourceType -> { - if (dataSourceType.getType().equalsIgnoreCase(datasourceDTO.getType())) { - datasourceDTO.setTypeDesc(dataSourceType.getName()); - datasourceDTO.setCalculationMode(dataSourceType.getCalculationMode()); - } - }); - if (!datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.api.toString())) { - JdbcConfiguration configuration = new Gson().fromJson(datasourceDTO.getConfiguration(), JdbcConfiguration.class); - if (StringUtils.isNotEmpty(configuration.getCustomDriver()) && !configuration.getCustomDriver().equalsIgnoreCase("default")) { - datasourceDTO.setCalculationMode(DatasourceCalculationMode.DIRECT); - } - JSONObject jsonObject = JSONObject.parseObject(datasourceDTO.getConfiguration()); - if (jsonObject.getString("queryTimeout") == null) { - jsonObject.put("queryTimeout", 30); - datasourceDTO.setConfiguration(jsonObject.toString()); - } - } - - if (datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.mysql.toString())) { - MysqlConfiguration mysqlConfiguration = new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class); - datasourceDTO.setConfiguration(new Gson().toJson(mysqlConfiguration)); - } - if (datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.api.toString())) { - List apiDefinitionList = new Gson().fromJson(datasourceDTO.getConfiguration(), new TypeToken>() { - }.getType()); - List apiDefinitionListWithStatus = new ArrayList<>(); - int success = 0; - if (StringUtils.isNotEmpty(datasourceDTO.getStatus())) { - JsonObject apiItemStatuses = JsonParser.parseString(datasourceDTO.getStatus()).getAsJsonObject(); - - for (int i = 0; i < apiDefinitionList.size(); i++) { - String status = null; - if (apiItemStatuses.get(apiDefinitionList.get(i).getName()) != null) { - status = apiItemStatuses.get(apiDefinitionList.get(i).getName()).getAsString(); - } - apiDefinitionList.get(i).setStatus(status); - apiDefinitionList.get(i).setSerialNumber(i); - apiDefinitionListWithStatus.add(apiDefinitionList.get(i)); - if (StringUtils.isNotEmpty(status) && status.equalsIgnoreCase("Success")) { - success++; - } - } - } - datasourceDTO.setApiConfiguration(apiDefinitionListWithStatus); - if (success == apiDefinitionList.size()) { - datasourceDTO.setStatus("Success"); - } else { - if (success > 0 && success < apiDefinitionList.size()) { - datasourceDTO.setStatus("Warning"); - } else { - datasourceDTO.setStatus("Error"); - } - } - } + datasourceTrans(datasourceDTO); }); return datasourceDTOS; } + private void datasourceTrans(DatasourceDTO datasourceDTO){ + types().forEach(dataSourceType -> { + if (dataSourceType.getType().equalsIgnoreCase(datasourceDTO.getType())) { + datasourceDTO.setTypeDesc(dataSourceType.getName()); + datasourceDTO.setCalculationMode(dataSourceType.getCalculationMode()); + } + }); + if (!datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.api.toString())) { + JdbcConfiguration configuration = new Gson().fromJson(datasourceDTO.getConfiguration(), JdbcConfiguration.class); + if (StringUtils.isNotEmpty(configuration.getCustomDriver()) && !configuration.getCustomDriver().equalsIgnoreCase("default")) { + datasourceDTO.setCalculationMode(DatasourceCalculationMode.DIRECT); + } + JSONObject jsonObject = JSONObject.parseObject(datasourceDTO.getConfiguration()); + if (jsonObject.getString("queryTimeout") == null) { + jsonObject.put("queryTimeout", 30); + datasourceDTO.setConfiguration(jsonObject.toString()); + } + } + + if (datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.mysql.toString())) { + MysqlConfiguration mysqlConfiguration = new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class); + datasourceDTO.setConfiguration(new Gson().toJson(mysqlConfiguration)); + } + if (datasourceDTO.getType().equalsIgnoreCase(DatasourceTypes.api.toString())) { + List apiDefinitionList = new Gson().fromJson(datasourceDTO.getConfiguration(), new TypeToken>() { + }.getType()); + List apiDefinitionListWithStatus = new ArrayList<>(); + int success = 0; + if (StringUtils.isNotEmpty(datasourceDTO.getStatus())) { + JsonObject apiItemStatuses = JsonParser.parseString(datasourceDTO.getStatus()).getAsJsonObject(); + + for (int i = 0; i < apiDefinitionList.size(); i++) { + String status = null; + if (apiItemStatuses.get(apiDefinitionList.get(i).getName()) != null) { + status = apiItemStatuses.get(apiDefinitionList.get(i).getName()).getAsString(); + } + apiDefinitionList.get(i).setStatus(status); + apiDefinitionList.get(i).setSerialNumber(i); + apiDefinitionListWithStatus.add(apiDefinitionList.get(i)); + if (StringUtils.isNotEmpty(status) && status.equalsIgnoreCase("Success")) { + success++; + } + } + } + datasourceDTO.setApiConfiguration(apiDefinitionListWithStatus); + if (success == apiDefinitionList.size()) { + datasourceDTO.setStatus("Success"); + } else { + if (success > 0 && success < apiDefinitionList.size()) { + datasourceDTO.setStatus("Warning"); + } else { + datasourceDTO.setStatus("Error"); + } + } + } + } + + public DatasourceDTO getDataSourceDetails(String datasourceId){ + DatasourceDTO result = extDataSourceMapper.queryDetails(datasourceId,String.valueOf(AuthUtils.getUser().getUserId())); + if(result != null){ + this.datasourceTrans(result); + } + return result; + } public List gridQuery(BaseGridRequest request) { //如果没有查询条件增加一个默认的条件 if (CollectionUtils.isEmpty(request.getConditions())) { diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index cb9af63d96..651b71c757 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -814,8 +814,8 @@ public class PanelGroupService { // dataset check if (CollectionUtils.isEmpty(datasetTablesInfo)) { return new PanelExport2App("this panel don't have dataset"); - } else if (datasetTablesInfo.stream().filter(datasetTable -> datasetTable.getType().equals("excel")).collect(Collectors.toList()).size() > 0) { - return new PanelExport2App("this panel have dataset witch type is excel"); + } else if (datasetTablesInfo.stream().filter(datasetTable -> datasetTable.getType().equals("excel") || datasetTable.getType().equals("api")).collect(Collectors.toList()).size() > 0) { + return new PanelExport2App("this panel have dataset witch type is excel or api"); } //datasource check diff --git a/frontend/src/views/panel/appTemplateMarket/log/index.vue b/frontend/src/views/panel/appTemplateMarket/log/index.vue index fb000a9004..226f2479a9 100644 --- a/frontend/src/views/panel/appTemplateMarket/log/index.vue +++ b/frontend/src/views/panel/appTemplateMarket/log/index.vue @@ -224,6 +224,7 @@ import { import { deleteLogAndResource, logGrid } from '@/api/appTemplateMarket/log' import { findOneWithParent } from '@/api/panel/panel' import AppTemplateApply from '@/views/panel/appTemplate/component/AppTemplateApply' +import { hasDataPermission } from '@/utils/permission' export default { name: 'AppTemplateLog', @@ -308,7 +309,8 @@ export default { panelName: item.panelName, datasourcePrivileges: item.datasourcePrivileges, panelPrivileges: item.panelPrivileges, - datasetPrivileges: item.datasetPrivileges + datasetPrivileges: item.datasetPrivileges, + appMarketEdit: hasDataPermission('manage', item.datasourcePrivileges) } this.$refs.templateEditApply.init(param) }, diff --git a/frontend/src/views/system/datasource/DsForm.vue b/frontend/src/views/system/datasource/DsForm.vue index 95c41caa64..be8f01584d 100644 --- a/frontend/src/views/system/datasource/DsForm.vue +++ b/frontend/src/views/system/datasource/DsForm.vue @@ -87,7 +87,7 @@ > @@ -138,13 +138,7 @@ :model="form" :rules="rule" size="small" - :disabled=" - params && - params.id && - params.showModel && - params.showModel === 'show' && - !canEdit - " + :disabled="disabled" class="de-form-item" label-width="180px" label-position="right" @@ -218,13 +212,7 @@ ref="dsConfig" :datasource-type="datasourceType" :form="form" - :disabled=" - params && - params.id && - params.showModel && - params.showModel === 'show' && - !canEdit - " + :disabled="disabled" />