From 4758ae8a237da020fb75e02997f8dcdcc9eb4e09 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 7 Nov 2024 18:28:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E9=9D=9E=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E6=97=A0=E6=9D=83=E8=AE=BF=E9=97=AE=E5=BC=95=E6=93=8E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/server/EngineServer.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/EngineServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/EngineServer.java index 788336f184..5b61fcb4f2 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/EngineServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/EngineServer.java @@ -1,11 +1,14 @@ package io.dataease.datasource.server; +import com.mchange.rmi.NotAuthorizedException; import io.dataease.api.ds.EngineApi; import io.dataease.datasource.dao.auto.entity.CoreDeEngine; import io.dataease.datasource.dao.auto.mapper.CoreDeEngineMapper; import io.dataease.datasource.manage.EngineManage; import io.dataease.datasource.provider.CalciteProvider; +import io.dataease.exception.DEException; import io.dataease.extensions.datasource.dto.DatasourceDTO; +import io.dataease.utils.AuthUtils; import io.dataease.utils.BeanUtils; import io.dataease.utils.IDUtils; import jakarta.annotation.Resource; @@ -30,6 +33,9 @@ public class EngineServer implements EngineApi { @Override public DatasourceDTO getEngine() { + if (!AuthUtils.getUser().getUserId().equals(1L)) { + DEException.throwException("非管理员,无权访问!"); + } DatasourceDTO datasourceDTO = new DatasourceDTO(); List deEngines = deEngineMapper.selectList(null); if (CollectionUtils.isEmpty(deEngines)) { @@ -40,23 +46,29 @@ public class EngineServer implements EngineApi { @Override public void save(DatasourceDTO datasourceDTO) { + if (!AuthUtils.getUser().getUserId().equals(1L)) { + DEException.throwException("非管理员,无权访问!"); + } if (StringUtils.isNotEmpty(datasourceDTO.getConfiguration())) { datasourceDTO.setConfiguration(new String(Base64.getDecoder().decode(datasourceDTO.getConfiguration()))); } CoreDeEngine coreDeEngine = new CoreDeEngine(); BeanUtils.copyBean(coreDeEngine, datasourceDTO); - if(coreDeEngine.getId() == null){ + if (coreDeEngine.getId() == null) { coreDeEngine.setId(IDUtils.snowID()); datasourceDTO.setId(coreDeEngine.getId()); deEngineMapper.insert(coreDeEngine); - }else { + } else { deEngineMapper.updateById(coreDeEngine); } calciteProvider.update(datasourceDTO); } @Override - public void validate(DatasourceDTO datasourceDTO) throws Exception{ + public void validate(DatasourceDTO datasourceDTO) throws Exception { + if (!AuthUtils.getUser().getUserId().equals(1L)) { + DEException.throwException("非管理员,无权访问!"); + } CoreDeEngine coreDeEngine = new CoreDeEngine(); BeanUtils.copyBean(coreDeEngine, datasourceDTO); coreDeEngine.setConfiguration(new String(Base64.getDecoder().decode(coreDeEngine.getConfiguration()))); @@ -65,6 +77,9 @@ public class EngineServer implements EngineApi { @Override public void validateById(Long id) throws Exception { + if (!AuthUtils.getUser().getUserId().equals(1L)) { + DEException.throwException("非管理员,无权访问!"); + } engineManage.validate(deEngineMapper.selectById(id)); } From 631d852af312f39d42941e9a17a3b6c55b98ac3f Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 8 Nov 2024 16:29:45 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8D=E7=8E=B0=E5=AE=9E=E6=95=B0=E6=8D=AE=E6=BA=90=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/server/ChartDataServer.java | 15 +++++++----- .../datasource/server/DatasourceServer.java | 17 ++++++++++++++ .../manage/ExportCenterManage.java | 18 ++++++++------- core/core-frontend/src/api/datasource.ts | 2 ++ .../visualized/data/datasource/index.vue | 23 +++++++++++++++---- .../api/chart/request/ChartExcelRequest.java | 3 +++ .../io/dataease/api/ds/DatasourceApi.java | 9 ++++++-- 7 files changed, 66 insertions(+), 21 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index 8824da3e23..cf716553da 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -126,17 +126,20 @@ public class ChartDataServer implements ChartDataApi { request.setHeader(dsHeader); request.setExcelTypes(dsTypes); } - for (Object[] objects : tableRow) { - for (int i = 0; i < viewDTO.getXAxis().size(); i++) { - if (viewDTO.getXAxis().get(i).getDeType().equals(DeTypeConstants.DE_INT) || viewDTO.getXAxis().get(i).getDeType().equals(DeTypeConstants.DE_FLOAT)) { - try { - objects[i] = valueFormatter(BigDecimal.valueOf(Double.valueOf(objects[i].toString())), viewDTO.getXAxis().get(i).getFormatterCfg()); - } catch (Exception ignore) { + if (CollectionUtils.isNotEmpty(tableRow)) { + for (Object[] objects : tableRow) { + for (int i = 0; i < viewDTO.getXAxis().size(); i++) { + if (viewDTO.getXAxis().get(i).getDeType().equals(DeTypeConstants.DE_INT) || viewDTO.getXAxis().get(i).getDeType().equals(DeTypeConstants.DE_FLOAT)) { + try { + objects[i] = valueFormatter(BigDecimal.valueOf(Double.valueOf(objects[i].toString())), viewDTO.getXAxis().get(i).getFormatterCfg()); + } catch (Exception ignore) { + } } } } } request.setDetails(tableRow); + request.setData(chartViewInfo.getData()); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index 7579a284e1..42e2c06938 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -483,6 +483,23 @@ public class DatasourceServer implements DatasourceApi { return getDatasourceDTOById(datasourceId, true); } + @Override + public DatasourceDTO getSimpleDs(Long datasourceId) throws DEException { + CoreDatasource datasource = datasourceMapper.selectById(datasourceId); + if (datasource == null) { + DEException.throwException("不存在的数据源!"); + } + if (datasource.getType().equalsIgnoreCase("api")) { + datasource.setConfiguration("[]"); + } else { + datasource.setConfiguration(""); + } + datasource.setConfiguration(""); + DatasourceDTO datasourceDTO = new DatasourceDTO(); + BeanUtils.copyBean(datasourceDTO, datasource); + return datasourceDTO; + } + @Override public DatasourceDTO get(Long datasourceId) throws DEException { return getDatasourceDTOById(datasourceId, false); diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java index 894c0c1280..f0e138d4e3 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java @@ -655,16 +655,18 @@ public class ExportCenterManage implements BaseExportApi { cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); if (CollectionUtils.isEmpty(request.getMultiInfo())) { - List details = request.getDetails(); - Integer[] excelTypes = request.getExcelTypes(); - details.add(0, request.getHeader()); - ViewDetailField[] detailFields = request.getDetailFields(); - Object[] header = request.getHeader(); + if(request.getViewInfo().getType().equalsIgnoreCase("chart-mix-dual-line")){ - //明细sheet - Sheet detailsSheet = wb.createSheet("数据"); + }else { + List details = request.getDetails(); + Integer[] excelTypes = request.getExcelTypes(); + details.add(0, request.getHeader()); + ViewDetailField[] detailFields = request.getDetailFields(); + Object[] header = request.getHeader(); + Sheet detailsSheet = wb.createSheet("数据"); + ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes); + } - ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes); } else { //多个sheet for (int i = 0; i < request.getMultiInfo().size(); i++) { diff --git a/core/core-frontend/src/api/datasource.ts b/core/core-frontend/src/api/datasource.ts index c1997c91c1..751ebb5436 100644 --- a/core/core-frontend/src/api/datasource.ts +++ b/core/core-frontend/src/api/datasource.ts @@ -155,6 +155,8 @@ export const getById = (id: number) => request.get({ url: '/datasource/get/' + i export const getHidePwById = (id: number) => request.get({ url: '/datasource/hidePw/' + id }) +export const getSimpleDs = (id: number) => request.get({ url: '/datasource/getSimpleDs/' + id }) + export const uploadFile = async (data): Promise => { return request .post({ diff --git a/core/core-frontend/src/views/visualized/data/datasource/index.vue b/core/core-frontend/src/views/visualized/data/datasource/index.vue index fccea21710..8ea91497e1 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/index.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/index.vue @@ -41,7 +41,13 @@ import { HandleMore } from '@/components/handle-more' import { Icon } from '@/components/icon-custom' import { fieldType } from '@/utils/attr' import { useEmitt } from '@/hooks/web/useEmitt' -import { getHidePwById, listSyncRecord, uploadFile, perDeleteDatasource } from '@/api/datasource' +import { + getHidePwById, + listSyncRecord, + uploadFile, + perDeleteDatasource, + getSimpleDs +} from '@/api/datasource' import CreatDsGroup from './form/CreatDsGroup.vue' import type { Tree } from '../dataset/form/CreatDsGroup.vue' import { previewData, getById } from '@/api/datasource' @@ -549,7 +555,11 @@ const handleNodeClick = data => { dsListTree.value.setCurrentKey(null) return } - return getHidePwById(data.id).then(res => { + let method = getHidePwById + if (data.weight < 7) { + method = getSimpleDs + } + return method(data.id).then(res => { let { name, createBy, @@ -893,6 +903,7 @@ const operation = (cmd: string, data: Tree, nodeType: string) => { const handleClick = (tabName: TabPaneName) => { switch (tabName) { case 'config': + tableData.value = [] listDatasourceTables({ datasourceId: nodeInfo.id }).then(res => { tabList.value = res.data.map(ele => { const { name, tableName } = ele @@ -1421,7 +1432,9 @@ const getMenuList = (val: boolean) => { }} - -