forked from github/dataease
Merge branch 'dev-v2' into pr@dev-v2_dzz
This commit is contained in:
commit
65ada898cb
2
.github/ISSUE_TEMPLATE/bug---.md
vendored
2
.github/ISSUE_TEMPLATE/bug---.md
vendored
@ -3,7 +3,7 @@ name: Bug 提交
|
||||
about: 提交产品缺陷帮助我们更好的改进
|
||||
title: "[Bug]"
|
||||
labels: 状态:待处理
|
||||
assignees: BBchicken-9527, zrfit
|
||||
assignees: BBchicken-9527, Shenguobin0102, zrfit
|
||||
|
||||
---
|
||||
|
||||
|
@ -218,14 +218,14 @@
|
||||
</resources>
|
||||
</build>
|
||||
</profile>
|
||||
<!-- 分布式版(企业版/saas版) -->
|
||||
<!-- 分布式版(企业版) -->
|
||||
<profile>
|
||||
<id>distributed</id>
|
||||
<properties>
|
||||
<profiles.active>distributed</profiles.active>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- 分布式版(企业版/saas版) 引入分布式组件 -->
|
||||
<!-- 分布式版(企业版) 引入分布式组件 -->
|
||||
<dependency>
|
||||
<groupId>io.dataease</groupId>
|
||||
<artifactId>distributed</artifactId>
|
||||
@ -239,7 +239,7 @@
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<!-- 分布式版(企业版/saas版) 需要排除权限替补实现 否则就会出现多个权限实现 报错 -->
|
||||
<!-- 分布式版(企业版) 需要排除权限替补实现 否则就会出现多个权限实现 报错 -->
|
||||
<exclude>io/dataease/substitute/**</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
@ -269,9 +269,6 @@
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<!--<configuration>
|
||||
<mainClass>io.dataease.CoreApplication</mainClass>
|
||||
</configuration>-->
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
|
@ -96,6 +96,7 @@ public class MenuManage {
|
||||
|| coreMenu.getId().equals(21L)
|
||||
|| coreMenu.getPid().equals(21L)
|
||||
|| coreMenu.getId().equals(25L)
|
||||
|| coreMenu.getId().equals(26L);
|
||||
|| coreMenu.getId().equals(26L)
|
||||
|| coreMenu.getId().equals(35L);
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ public class CoreVisualizationManage {
|
||||
}
|
||||
QueryWrapper<Object> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("delete_flag", false);
|
||||
queryWrapper.ne("pid",-1);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(request.getLeaf()), "node_type", ObjectUtils.isNotEmpty(request.getLeaf()) && request.getLeaf() ? "leaf" : "folder");
|
||||
queryWrapper.eq("type", request.getBusiFlag());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
@ -108,6 +109,10 @@ public class CoreVisualizationManage {
|
||||
|
||||
@XpackInteract(value = "visualizationResourceTree", before = false)
|
||||
public Long innerSave(DataVisualizationInfo visualizationInfo) {
|
||||
return preInnerSave(visualizationInfo);
|
||||
}
|
||||
|
||||
public Long preInnerSave(DataVisualizationInfo visualizationInfo){
|
||||
if (visualizationInfo.getId() == null) {
|
||||
Long id = IDUtils.snowID();
|
||||
visualizationInfo.setId(id);
|
||||
|
@ -122,18 +122,24 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
}
|
||||
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
||||
BeanUtils.copyBean(visualizationInfo, request);
|
||||
|
||||
// 检查当前节点的pid是否一致如果不一致 需要调用move 接口(预存 可能会出现pid =-1的情况)
|
||||
if (request.getPid() != -1) {
|
||||
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("pid", request.getPid());
|
||||
queryWrapper.eq("id", dvId);
|
||||
if (!visualizationInfoMapper.exists(queryWrapper)) {
|
||||
request.setMoveFromUpdate(true);
|
||||
coreVisualizationManage.move(request);
|
||||
if(DataVisualizationConstants.RESOURCE_OPT_TYPE.COPY.equals(request.getOptType())){
|
||||
// 复制更新 新建权限插入
|
||||
visualizationInfoMapper.deleteById(dvId);
|
||||
visualizationInfo.setNodeType(DataVisualizationConstants.NODE_TYPE.LEAF);
|
||||
coreVisualizationManage.innerSave(visualizationInfo);
|
||||
}else{
|
||||
// 检查当前节点的pid是否一致如果不一致 需要调用move 接口(预存 可能会出现pid =-1的情况)
|
||||
if (request.getPid() != -1) {
|
||||
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("pid", request.getPid());
|
||||
queryWrapper.eq("id", dvId);
|
||||
if (!visualizationInfoMapper.exists(queryWrapper)) {
|
||||
request.setMoveFromUpdate(true);
|
||||
coreVisualizationManage.move(request);
|
||||
}
|
||||
}
|
||||
coreVisualizationManage.innerEdit(visualizationInfo);
|
||||
}
|
||||
coreVisualizationManage.innerEdit(visualizationInfo);
|
||||
//保存视图信
|
||||
chartDataManage.saveChartViewFromVisualization(request.getComponentData(), dvId, request.getCanvasViewInfo());
|
||||
}
|
||||
@ -214,8 +220,10 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
extDataVisualizationMapper.copyLinkJump(copyId);
|
||||
extDataVisualizationMapper.copyLinkJumpInfo(copyId);
|
||||
extDataVisualizationMapper.copyLinkJumpTargetInfo(copyId);
|
||||
|
||||
coreVisualizationManage.innerSave(newDv);
|
||||
DataVisualizationInfo visualizationInfoTarget = new DataVisualizationInfo();
|
||||
BeanUtils.copyBean(visualizationInfoTarget,newDv);
|
||||
visualizationInfoTarget.setPid(-1L);
|
||||
coreVisualizationManage.preInnerSave(visualizationInfoTarget);
|
||||
return String.valueOf(newDvId);
|
||||
}
|
||||
|
||||
@ -321,6 +329,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
}
|
||||
wrapper.eq("delete_flag", 0);
|
||||
wrapper.eq("pid", request.getPid());
|
||||
wrapper.ne("pid", -1);
|
||||
wrapper.eq("name", request.getName().trim());
|
||||
wrapper.eq("node_type", request.getNodeType());
|
||||
wrapper.eq("type", request.getType());
|
||||
|
@ -10,26 +10,6 @@
|
||||
|
||||
<persistence directory="/opt/dataease2.0/cache" />
|
||||
|
||||
<!--<cache alias="AlertsConfig" uses-template="heap-cache"/>
|
||||
<cache alias="Alerts" uses-template="alerts-template"/>
|
||||
|
||||
<cache-template name="heap-cache">
|
||||
<resources>
|
||||
<heap unit="entries">1</heap>
|
||||
<offheap unit="MB">1</offheap>
|
||||
<disk persistent="true" unit="MB">100</disk>
|
||||
</resources>
|
||||
</cache-template>
|
||||
|
||||
|
||||
<cache-template name="alerts-template">
|
||||
<resources>
|
||||
<heap unit="entries">1</heap>
|
||||
<offheap unit="MB">1</offheap>
|
||||
<disk persistent="true" unit="MB">100</disk>
|
||||
</resources>
|
||||
</cache-template>-->
|
||||
|
||||
<cache-template name="common-cache">
|
||||
<expiry>
|
||||
<none/>
|
||||
@ -138,14 +118,6 @@
|
||||
<cache alias="core_menu_cache" uses-template="common-cache">
|
||||
<key-type>java.lang.String</key-type>
|
||||
<value-type>java.util.List</value-type>
|
||||
<!--<expiry>
|
||||
<none/>
|
||||
</expiry>
|
||||
<resources>
|
||||
<heap unit="entries">20</heap>
|
||||
<offheap unit="MB">2</offheap>
|
||||
<disk unit="MB" persistent="true">5</disk>
|
||||
</resources>-->
|
||||
</cache>
|
||||
|
||||
</config>
|
||||
|
@ -2,18 +2,12 @@ export default {
|
||||
server: {
|
||||
proxy: {
|
||||
'/api/f': {
|
||||
// target: 'http://192.168.31.38:8100',
|
||||
target: 'http://localhost:8100',
|
||||
changeOrigin: true,
|
||||
rewrite: path => path.replace(/^\/api\/f/, '')
|
||||
},
|
||||
// 使用 proxy 实例
|
||||
'/api': {
|
||||
// target: 'http://qa-de2.fit2cloud.com',
|
||||
// target: 'http://192.168.31.74:8100',
|
||||
// target: 'https://de2.fit2cloud.com',
|
||||
// target: 'http://localhost:8100',
|
||||
// target: 'http://192.168.0.121:9080',
|
||||
target: 'http://localhost:8100',
|
||||
changeOrigin: true,
|
||||
rewrite: path => path.replace(/^\/api/, 'de2api')
|
||||
|
@ -411,7 +411,6 @@ onMounted(() => {
|
||||
>
|
||||
<tabs-group themes="light" :dv-model="dvModel"></tabs-group>
|
||||
</component-group>
|
||||
<!-- <component-button :show-split-line="true" icon-name="dv-tab" title="Tab"></component-button>-->
|
||||
<component-button-label
|
||||
icon-name="icon_copy_filled"
|
||||
title="复用"
|
||||
|
@ -82,6 +82,8 @@ onUnmounted(() => {
|
||||
<el-row class="custom-main">
|
||||
<div class="scale-area">
|
||||
<el-input
|
||||
@keydown.stop
|
||||
@keyup.stop
|
||||
type="number"
|
||||
size="small"
|
||||
effect="dark"
|
||||
|
@ -1185,9 +1185,7 @@ const userViewEnlargeOpen = (opt, item) => {
|
||||
}
|
||||
|
||||
const initSnapshotTimer = () => {
|
||||
console.log('check1==')
|
||||
snapshotTimer.value = setInterval(() => {
|
||||
console.log('check2==')
|
||||
snapshotStore.snapshotCatchToStore()
|
||||
}, 1000)
|
||||
}
|
||||
|
@ -214,6 +214,7 @@ const deepScale = computed(() => scale.value / 100)
|
||||
:search-count="searchCount"
|
||||
:scale="deepScale"
|
||||
:disabled="true"
|
||||
:is-edit="false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -103,10 +103,6 @@ const downloadViewDetails = () => {
|
||||
const chart = { ...viewInfo.value, chartExtRequest, data: viewDataInfo }
|
||||
exportExcelDownload(chart)
|
||||
}
|
||||
//
|
||||
// const htmlToImage = () => {
|
||||
// downloadCanvas('img', viewContainer.value, viewInfo.value.title)
|
||||
// }
|
||||
|
||||
const htmlToImage = () => {
|
||||
toPng(viewContainer.value)
|
||||
|
@ -8,7 +8,7 @@
|
||||
<de-custom-tab
|
||||
v-model="editableTabsValue"
|
||||
@tab-add="addTab"
|
||||
:addable="isEdit"
|
||||
:addable="isEditMode"
|
||||
:font-color="fontColor"
|
||||
:active-color="activeColor"
|
||||
:border-color="noBorderColor"
|
||||
@ -25,7 +25,7 @@
|
||||
<template #label>
|
||||
<span :style="titleStyle(tabItem.name)">{{ tabItem.title }}</span>
|
||||
<el-dropdown
|
||||
v-if="dropdownShow"
|
||||
v-if="isEditMode"
|
||||
style="line-height: 4 !important"
|
||||
trigger="click"
|
||||
@command="handleCommand"
|
||||
@ -118,7 +118,7 @@ import DeCustomTab from '@/custom-component/de-tabs/DeCustomTab.vue'
|
||||
import DePreview from '@/components/data-visualization/canvas/DePreview.vue'
|
||||
import { useEmitt } from '@/hooks/web/useEmitt'
|
||||
const dvMainStore = dvMainStoreWithOut()
|
||||
const { tabMoveInActiveId, bashMatrixInfo } = storeToRefs(dvMainStore)
|
||||
const { tabMoveInActiveId, bashMatrixInfo, editMode } = storeToRefs(dvMainStore)
|
||||
const tabComponentRef = ref(null)
|
||||
|
||||
const props = defineProps({
|
||||
@ -168,6 +168,8 @@ const editableTabsValue = ref(null)
|
||||
const noBorderColor = ref('none')
|
||||
let currentInstance
|
||||
|
||||
const isEditMode = computed(() => editMode.value === 'edit' && isEdit.value)
|
||||
|
||||
const calcTabLength = () => {
|
||||
setTimeout(() => {
|
||||
if (element.value.propValue.length > 1) {
|
||||
|
@ -55,9 +55,6 @@ const customCanvasStyle = computed(() => {
|
||||
result.scale = canvasStyleData.value.scale
|
||||
result.width = (element.value.style.width * 100) / result.scale
|
||||
result.height = (element.value.style.height * 100) / result.scale
|
||||
|
||||
// result.width = element.value.style.width
|
||||
// result.height = element.value.style.height
|
||||
return result
|
||||
})
|
||||
</script>
|
||||
|
@ -52,6 +52,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
// 大屏基础信息
|
||||
dvInfo: {
|
||||
dataState: null,
|
||||
optType: null,
|
||||
id: null,
|
||||
name: null,
|
||||
pid: null,
|
||||
@ -845,6 +846,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
resetDvInfo() {
|
||||
this.dvInfo = {
|
||||
dataState: null,
|
||||
optType: null,
|
||||
id: null,
|
||||
name: null,
|
||||
pid: null,
|
||||
@ -871,6 +873,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
updateDvInfoId(newId) {
|
||||
if (this.dvInfo) {
|
||||
this.dvInfo.dataState = 'ready'
|
||||
this.dvInfo.optType = null
|
||||
this.dvInfo.id = newId
|
||||
}
|
||||
},
|
||||
@ -878,6 +881,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
const optName = dvType === 'dashboard' ? '新建仪表板' : '新建数据大屏'
|
||||
this.dvInfo = {
|
||||
dataState: 'prepare',
|
||||
optType: null,
|
||||
id: resourceId,
|
||||
name: optName,
|
||||
pid: pid,
|
||||
@ -899,6 +903,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
this.componentData = []
|
||||
this.dvInfo = {
|
||||
dataState: null,
|
||||
optType: null,
|
||||
id: null,
|
||||
name: null,
|
||||
pid: null,
|
||||
|
@ -14,7 +14,6 @@
|
||||
color-scheme: light dark;
|
||||
|
||||
font-synthesis: none;
|
||||
// text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
@ -298,7 +297,7 @@ body {
|
||||
// padding: 0 0 64px 0 !important;
|
||||
// }
|
||||
|
||||
.ed-tree-node.is-current > .ed-tree-node__content:not(.is-menu):after {
|
||||
.ed-tree-node.is-current>.ed-tree-node__content:not(.is-menu):after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
@ -289,7 +289,7 @@ export function filterEmptyFolderTree(nodes) {
|
||||
|
||||
export function findParentIdByChildIdRecursive(tree, targetChildId) {
|
||||
function findParentId(node, targetChildId) {
|
||||
if (node.type === 'folder' && node.children) {
|
||||
if (node.children) {
|
||||
for (const childNode of node.children) {
|
||||
if (childNode.id === targetChildId) {
|
||||
return node.id // 找到匹配的子节点,返回其父节点的 ID
|
||||
|
@ -198,14 +198,6 @@ export function getCanvasStyle(canvasStyleData) {
|
||||
return style
|
||||
}
|
||||
|
||||
// export function createGroupStyle(groupComponent) {
|
||||
// const parentStyle = groupComponent.style
|
||||
// groupComponent.propValue.forEach(component => {
|
||||
// component.style.left = component.style.left - parentStyle.left
|
||||
// component.style.top = component.style.top - parentStyle.top
|
||||
// })
|
||||
// }
|
||||
|
||||
export function createGroupStyle(groupComponent) {
|
||||
const parentStyle = groupComponent.style
|
||||
groupComponent.propValue.forEach(component => {
|
||||
|
@ -264,22 +264,6 @@ onMounted(() => {
|
||||
<span class="set-text-info" :class="{ 'set-text-info-dark': themes === 'dark' }">
|
||||
已设置
|
||||
</span>
|
||||
|
||||
<!-- <el-button
|
||||
class="circle-button font14"
|
||||
:title="t('chart.delete')"
|
||||
:class="'label-' + props.themes"
|
||||
text
|
||||
size="small"
|
||||
:style="{ width: '24px', marginLeft: '6px' }"
|
||||
@click="linkageSetOpen"
|
||||
>
|
||||
<template #icon>
|
||||
<el-icon size="14px">
|
||||
<Icon name="icon_delete-trash_outlined" />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-button>-->
|
||||
</template>
|
||||
<el-button
|
||||
class="circle-button font14"
|
||||
|
@ -165,17 +165,6 @@ export function getColors(chart, colors, reset) {
|
||||
} else {
|
||||
if (chart.data) {
|
||||
const data = chart.data.data
|
||||
// data 的维度值,需要根据自定义顺序排序
|
||||
// let customSortData
|
||||
// if (Object.prototype.toString.call(chart.customSort) === '[object Array]') {
|
||||
// customSortData = JSON.parse(JSON.stringify(chart.customSort))
|
||||
// } else {
|
||||
// customSortData = JSON.parse(chart.customSort)
|
||||
// }
|
||||
// if (customSortData && customSortData.length > 0) {
|
||||
// data = customSort(customSortData, data)
|
||||
// }
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
const s = data[i]
|
||||
seriesColors.push({
|
||||
|
@ -244,9 +244,9 @@ const operation = (cmd: string, data: BusiTreeNode, nodeType: string) => {
|
||||
copyResource(params).then(data => {
|
||||
const baseUrl =
|
||||
curCanvasType.value === 'dataV'
|
||||
? '#/dvCanvas?opt=copy&dvId='
|
||||
: '#/dashboard?opt=copy&resourceId='
|
||||
window.open(baseUrl + data.data, '_blank')
|
||||
? `#/dvCanvas?opt=copy&pid=${params.pid}&dvId=${data.data}`
|
||||
: `#/dashboard?opt=copy&pid=${params.pid}&resourceId=${data.data}`
|
||||
window.open(baseUrl, '_blank')
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -467,12 +467,6 @@ defineExpose({
|
||||
@finish="resourceOptFinish"
|
||||
ref="resourceGroupOpt"
|
||||
/>
|
||||
<!-- <de-resource-create-opt-->
|
||||
<!-- :cur-canvas-type="curCanvasType"-->
|
||||
<!-- ref="resourceCreateOpt"-->
|
||||
<!-- @finish="resourceCreateFinish"-->
|
||||
<!-- >-->
|
||||
<!-- </de-resource-create-opt>-->
|
||||
<de-resource-create-opt-v2
|
||||
:cur-canvas-type="curCanvasType"
|
||||
ref="resourceCreateOpt"
|
||||
|
@ -28,8 +28,15 @@ const eventCheck = e => {
|
||||
const dvMainStore = dvMainStoreWithOut()
|
||||
const snapshotStore = snapshotStoreWithOut()
|
||||
|
||||
const { componentData, curComponent, canvasStyleData, canvasViewInfo, editMode, batchOptStatus } =
|
||||
storeToRefs(dvMainStore)
|
||||
const {
|
||||
componentData,
|
||||
curComponent,
|
||||
canvasStyleData,
|
||||
canvasViewInfo,
|
||||
editMode,
|
||||
batchOptStatus,
|
||||
dvInfo
|
||||
} = storeToRefs(dvMainStore)
|
||||
const dataInitState = ref(false)
|
||||
|
||||
const state = reactive({
|
||||
@ -62,6 +69,14 @@ onMounted(() => {
|
||||
dataInitState.value = false
|
||||
initCanvasData(resourceId, 'dashboard', function () {
|
||||
dataInitState.value = true
|
||||
if (dvInfo.value && opt === 'copy') {
|
||||
dvInfo.value.dataState = 'prepare'
|
||||
dvInfo.value.optType = 'copy'
|
||||
dvInfo.value.pid = pid
|
||||
setTimeout(() => {
|
||||
snapshotStore.recordSnapshotCache()
|
||||
}, 1500)
|
||||
}
|
||||
})
|
||||
} else if (opt && opt === 'create') {
|
||||
dataInitState.value = false
|
||||
|
@ -85,7 +85,6 @@ watch(
|
||||
</el-popover>
|
||||
</div>
|
||||
<div class="canvas-opt-button">
|
||||
<!-- <el-button type="primary" @click="download()">导出</el-button>-->
|
||||
<el-button @click="preview()">
|
||||
<template #icon>
|
||||
<icon name="icon_pc_outlined"></icon>
|
||||
|
@ -193,13 +193,18 @@ onMounted(() => {
|
||||
state.canvasInitStatus = false
|
||||
initCanvasData(dvId, 'dataV', function () {
|
||||
state.canvasInitStatus = true
|
||||
if (dvInfo.value && opt === 'copy') {
|
||||
dvInfo.value.dataState = 'prepare'
|
||||
}
|
||||
// afterInit
|
||||
nextTick(() => {
|
||||
dvMainStore.setDataPrepareState(true)
|
||||
snapshotStore.recordSnapshotCache('renderChart')
|
||||
if (dvInfo.value && opt === 'copy') {
|
||||
dvInfo.value.dataState = 'prepare'
|
||||
dvInfo.value.optType = 'copy'
|
||||
dvInfo.value.pid = pid
|
||||
setTimeout(() => {
|
||||
snapshotStore.recordSnapshotCache('renderChart')
|
||||
}, 1500)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else if (opt && opt === 'create') {
|
||||
|
@ -167,34 +167,6 @@ defineExpose({
|
||||
</div>
|
||||
<div v-else />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="禁止扫码创建用户" prop="autoCreateUser">
|
||||
<el-switch v-model="state.form.autoCreateUser" />
|
||||
</el-form-item> -->
|
||||
|
||||
<!-- <el-form-item label="数据源检测时间间隔" prop="dsIntervalTime">
|
||||
<div class="ds-task-form-inline">
|
||||
<span>每</span>
|
||||
<el-input-number
|
||||
v-model="state.form.dsIntervalTime"
|
||||
autocomplete="off"
|
||||
step-strictly
|
||||
class="text-left"
|
||||
:min="1"
|
||||
:placeholder="t('common.inputText')"
|
||||
controls-position="right"
|
||||
type="number"
|
||||
/>
|
||||
<el-select v-model="state.form.dsExecuteTime">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<span class="ds-span">执行一次</span>
|
||||
</div>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
|
@ -7,7 +7,6 @@
|
||||
<div class="container-sys-param">
|
||||
<map-setting v-if="activeName === 'map'" />
|
||||
<basic-info v-if="activeName === 'basic'" />
|
||||
<!-- <email-info v-if="activeName === 'email'" /> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -990,7 +990,6 @@ const getMenuList = (val: boolean) => {
|
||||
</el-row>
|
||||
<template v-if="!['Excel', 'API'].includes(nodeInfo.type)">
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="12">
|
||||
<BaseInfoItem label="驱动">驱动</BaseInfoItem>
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
|
2
de-xpack
2
de-xpack
@ -1 +1 @@
|
||||
Subproject commit dfc290223ffb39bcff839d43f5e828dbe647c730
|
||||
Subproject commit dfef649cb7d7d2490891ba7acb0ecfb342673a7b
|
@ -43,6 +43,11 @@ function usage() {
|
||||
echo " clear-images 清理 DATAEASE 旧版本的相关镜像"
|
||||
echo " version 查看 DATAEASE 版本"
|
||||
}
|
||||
function _generate_compose_file_args() {
|
||||
if [[ $DE_INSTALL_MODE != "community" ]];then
|
||||
compose_files="${compose_files} -f docker-compose-apisix.yml"
|
||||
fi
|
||||
}
|
||||
function _check_apisix_init() {
|
||||
if [[ $DE_INSTALL_MODE != "community" ]];then
|
||||
_prepare_apisix
|
||||
@ -100,7 +105,7 @@ function _get_current_version() {
|
||||
function status() {
|
||||
echo
|
||||
echo "DataEase 容器运行状态"
|
||||
_check_apisix_init
|
||||
_generate_compose_file_args
|
||||
cd ${DE_RUNNING_BASE}
|
||||
${compose_cmd} ${compose_files} ps
|
||||
|
||||
@ -137,7 +142,7 @@ function start() {
|
||||
}
|
||||
function stop() {
|
||||
echo
|
||||
_check_apisix_init
|
||||
_generate_compose_file_args
|
||||
cd ${DE_RUNNING_BASE}
|
||||
${compose_cmd} ${compose_files} down -v ${target}
|
||||
}
|
||||
@ -224,7 +229,7 @@ def get_releases(page):
|
||||
releases=[ x["name"] for x in json.loads(releases) if x["prerelease"] == False ]
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
print("获取Release信息失败,请检查服务器到 %s 的网络连接是否正常" % (server_url))
|
||||
print("Failed to obtain Release information, please check the network.")
|
||||
exit(1)
|
||||
else:
|
||||
for release in releases:
|
||||
@ -239,10 +244,10 @@ while (page <= 3):
|
||||
page += 1
|
||||
|
||||
if latest_release == None or latest_release == "":
|
||||
print("未获取到最新版本,请稍候重试")
|
||||
print("Failed to obtain latest version, please try again.")
|
||||
exit(1)
|
||||
else:
|
||||
print("最新版本为 %s" % (latest_release))
|
||||
print("latest version is %s" % (latest_release))
|
||||
|
||||
# 记录最新版本号
|
||||
os.popen("echo "+latest_release+" > /tmp/de_latest_release")
|
||||
@ -289,7 +294,7 @@ EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ${installer_file%.*}
|
||||
cd ${installer_file%.tar.gz}
|
||||
/bin/bash install.sh
|
||||
|
||||
cd ..
|
||||
|
@ -4,23 +4,32 @@ import io.dataease.api.lark.dto.LarkEnableEditor;
|
||||
import io.dataease.api.lark.dto.LarkTokenRequest;
|
||||
import io.dataease.api.lark.vo.LarkInfoVO;
|
||||
import io.dataease.api.lark.dto.LarkSettingCreator;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@Tag(name = "飞书设置")
|
||||
public interface LarkApi {
|
||||
|
||||
@Operation(summary = "查询飞书信息")
|
||||
@GetMapping("/info")
|
||||
LarkInfoVO info();
|
||||
|
||||
@Operation(summary = "保存")
|
||||
@PostMapping("/create")
|
||||
void save(@RequestBody LarkSettingCreator creator);
|
||||
|
||||
@Operation(summary = "飞书token", hidden = true)
|
||||
@PostMapping("/token")
|
||||
String larkToken(@RequestBody LarkTokenRequest request);
|
||||
|
||||
@Operation(summary = "切换开启状态")
|
||||
@PostMapping("/switchEnable")
|
||||
void switchEnable(@RequestBody LarkEnableEditor editor);
|
||||
|
||||
@Operation(summary = "验证可用性")
|
||||
@PostMapping("/validate")
|
||||
void validate(@RequestBody LarkSettingCreator creator);
|
||||
}
|
||||
|
@ -1,11 +1,13 @@
|
||||
package io.dataease.api.lark.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "开启状态切换器")
|
||||
@Data
|
||||
public class LarkEnableEditor implements Serializable {
|
||||
|
||||
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean enable;
|
||||
}
|
||||
|
@ -1,19 +1,21 @@
|
||||
package io.dataease.api.lark.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "飞书设置构造器")
|
||||
@Data
|
||||
public class LarkSettingCreator implements Serializable {
|
||||
|
||||
@Schema(description = "appId", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String appId;
|
||||
|
||||
@Schema(description = "appSecret", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String appSecret;
|
||||
|
||||
@Schema(description = "回调域名", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String callBack;
|
||||
|
||||
@Schema(description = "是否可用", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Boolean enable;
|
||||
|
||||
@Schema(description = "是否有效")
|
||||
private Boolean valid;
|
||||
}
|
||||
|
@ -2,20 +2,23 @@ package io.dataease.api.lark.vo;
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "飞书信息")
|
||||
@Data
|
||||
public class LarkInfoVO implements Serializable {
|
||||
|
||||
@Schema(description = "appId")
|
||||
private String appId;
|
||||
|
||||
@Schema(description = "appSecret")
|
||||
private String appSecret;
|
||||
|
||||
@Schema(description = "回调域名")
|
||||
private String callBack;
|
||||
|
||||
@Schema(description = "是否开启")
|
||||
private Boolean enable = false;
|
||||
|
||||
@Schema(description = "是否可用")
|
||||
private Boolean valid = false;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.visualization.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享列表过滤器")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -14,11 +16,12 @@ public class VisualizationWorkbranchQueryRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3522243514336261778L;
|
||||
|
||||
@Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String type;
|
||||
|
||||
@Schema(description = "关键字")
|
||||
private String keyword;
|
||||
|
||||
@Schema(description = "查询来源")
|
||||
private String queryFrom;
|
||||
|
||||
@Schema(description = "是否升序", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean asc = false;
|
||||
}
|
||||
|
@ -3,23 +3,30 @@ package io.dataease.api.xpack.settings;
|
||||
import io.dataease.api.xpack.settings.request.XpackAuthenticationEditor;
|
||||
import io.dataease.api.xpack.settings.vo.XpackAuthenticationStatusVO;
|
||||
import io.dataease.api.xpack.settings.vo.XpackAuthenticationVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "认证设置")
|
||||
public interface XpackAuthenticationApi {
|
||||
|
||||
@Operation(summary = "同步")
|
||||
@GetMapping("/sync")
|
||||
void sync();
|
||||
|
||||
@Operation(summary = "查询列表")
|
||||
@GetMapping("/grid")
|
||||
List<XpackAuthenticationVO> grid();
|
||||
|
||||
@Operation(summary = "切换状态")
|
||||
@PostMapping("/update")
|
||||
void update(@RequestBody XpackAuthenticationEditor editor);
|
||||
|
||||
@Operation(summary = "查询状态")
|
||||
@GetMapping("/status")
|
||||
List<XpackAuthenticationStatusVO> status();
|
||||
}
|
||||
|
@ -1,16 +1,19 @@
|
||||
package io.dataease.api.xpack.settings.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "状态切换器")
|
||||
@Data
|
||||
public class XpackAuthenticationEditor implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 8817503683420624977L;
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean enable;
|
||||
}
|
||||
|
@ -1,16 +1,18 @@
|
||||
package io.dataease.api.xpack.settings.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "状态VO")
|
||||
@Data
|
||||
public class XpackAuthenticationStatusVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3394065091528285702L;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private boolean enable;
|
||||
}
|
||||
|
@ -2,20 +2,23 @@ package io.dataease.api.xpack.settings.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "认证列表VO")
|
||||
@Data
|
||||
public class XpackAuthenticationVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -1744424881280545811L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private boolean enable;
|
||||
}
|
||||
|
@ -8,6 +8,10 @@ import io.dataease.api.xpack.share.request.XpackSharePwdValidator;
|
||||
import io.dataease.api.xpack.share.vo.XpackShareGridVO;
|
||||
import io.dataease.api.xpack.share.vo.XpackShareProxyVO;
|
||||
import io.dataease.api.xpack.share.vo.XpackShareVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -16,32 +20,45 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Tag(name = "分享")
|
||||
public interface XpackShareApi {
|
||||
|
||||
@Operation(summary = "查询资源分享状态")
|
||||
@Parameter(name = "resourceId", description = "资源ID", required = true, in = ParameterIn.PATH)
|
||||
@GetMapping("/status/{resourceId}")
|
||||
boolean status(@PathVariable("resourceId") Long resourceId);
|
||||
|
||||
@Operation(summary = "切换资源分享状态")
|
||||
@Parameter(name = "resourceId", description = "资源ID", required = true, in = ParameterIn.PATH)
|
||||
@PostMapping("/switcher/{resourceId}")
|
||||
void switcher(@PathVariable("resourceId") Long resourceId);
|
||||
|
||||
@Operation(summary = "设置分享有效期")
|
||||
@PostMapping("/editExp")
|
||||
void editExp(@RequestBody XpackShareExpRequest request);
|
||||
|
||||
@Operation(summary = "编辑分享密码")
|
||||
@PostMapping("/editPwd")
|
||||
void editPwd(@RequestBody XpackSharePwdRequest request);
|
||||
|
||||
@Operation(summary = "查询分享详情")
|
||||
@GetMapping("/detail/{resourceId}")
|
||||
@Parameter(name = "resourceId", description = "资源ID", required = true, in = ParameterIn.PATH)
|
||||
XpackShareVO detail(@PathVariable("resourceId") Long resourceId);
|
||||
|
||||
@Operation(summary = "查询分享列表")
|
||||
@PostMapping("/query")
|
||||
List<XpackShareGridVO> query(@RequestBody VisualizationWorkbranchQueryRequest request);
|
||||
|
||||
@Operation(summary = "查询分享代理信息")
|
||||
@PostMapping("/proxyInfo")
|
||||
XpackShareProxyVO proxyInfo(@RequestBody XpackShareProxyRequest request);
|
||||
|
||||
@Operation(summary = "验证分享")
|
||||
@PostMapping("/validate")
|
||||
boolean validatePwd(@RequestBody XpackSharePwdValidator validator);
|
||||
|
||||
@Operation(summary = "", hidden = true)
|
||||
@GetMapping("/queryRelationByUserId/{uid}")
|
||||
Map<String, String> queryRelationByUserId(@PathVariable("uid") Long uid);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.xpack.share.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,14 +8,16 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "有效期设置器")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class XpackShareExpRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 5519219260721146347L;
|
||||
|
||||
@Schema(description = "资源ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long resourceId;
|
||||
|
||||
@Schema(description = "有效期")
|
||||
private Long exp;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.xpack.share.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,14 +8,15 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享代理信息过滤器")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class XpackShareProxyRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 7758730984988104057L;
|
||||
|
||||
@Schema(description = "分享UUID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String uuid;
|
||||
|
||||
@Schema(description = "密钥", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String ciphertext;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.xpack.share.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,14 +8,16 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享密码编辑器")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class XpackSharePwdRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -4399320897911936623L;
|
||||
|
||||
@Schema(description = "资源ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long resourceId;
|
||||
|
||||
@Schema(description = "密码")
|
||||
private String pwd;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.xpack.share.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享验证器")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -15,5 +17,6 @@ public class XpackSharePwdValidator implements Serializable {
|
||||
private static final long serialVersionUID = 5723073697210793005L;
|
||||
|
||||
|
||||
@Schema(description = "密钥")
|
||||
private String ciphertext;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.dataease.api.xpack.share.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -9,6 +10,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享列表VO")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -16,20 +18,22 @@ public class XpackShareGridVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -1633588323141385486L;
|
||||
|
||||
@Schema(description = "分享ID")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long shareId;
|
||||
|
||||
@Schema(description = "资源ID")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long resourceId;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "创建人")
|
||||
private String creator;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private Long time;
|
||||
|
||||
@Schema(description = "有效期")
|
||||
private Long exp;
|
||||
|
||||
@Schema(description = "权重")
|
||||
private Integer weight;
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.dataease.api.xpack.share.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -9,6 +10,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享代理信息VO")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -16,15 +18,17 @@ public class XpackShareProxyVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 6520351268758198483L;
|
||||
|
||||
@Schema(description = "资源ID")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long resourceId;
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long uid;
|
||||
|
||||
@Schema(description = "有效期")
|
||||
private boolean exp;
|
||||
|
||||
@Schema(description = "密码验证生效")
|
||||
private boolean pwdValid;
|
||||
|
||||
@Schema(description = "类型")
|
||||
private String type;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.dataease.api.xpack.share.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -9,6 +10,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "分享详情VO")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -17,8 +19,12 @@ public class XpackShareVO implements Serializable {
|
||||
private static final long serialVersionUID = 7364165756855382682L;
|
||||
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
@Schema(description = "分享ID")
|
||||
private Long id;
|
||||
@Schema(description = "分享有效期")
|
||||
private Long exp;
|
||||
@Schema(description = "分享UUID")
|
||||
private String uuid;
|
||||
@Schema(description = "分享密码")
|
||||
private String pwd;
|
||||
}
|
||||
|
@ -1,7 +1,13 @@
|
||||
package io.dataease.api.permissions.apikey.api;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.apikey.dto.ApikeyEnableEditor;
|
||||
import io.dataease.api.permissions.apikey.vo.ApiKeyVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -9,17 +15,28 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "API Key")
|
||||
@ApiSupport(order = 7, author = "fit2cloud-someone")
|
||||
public interface ApiKeyApi {
|
||||
|
||||
@Operation(summary = "生成")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@PostMapping("/generate")
|
||||
void generate();
|
||||
|
||||
@Operation(summary = "查询")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/query")
|
||||
List<ApiKeyVO> query();
|
||||
|
||||
@Operation(summary = "切换状态")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/switch")
|
||||
void switchEnable(@RequestBody ApikeyEnableEditor editor);
|
||||
|
||||
@Operation(summary = "删除")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@Parameter(name = "id", description = "ID", required = true, in = ParameterIn.PATH)
|
||||
@PostMapping("/delete/{id}")
|
||||
void delete(@PathVariable("id") Long id);
|
||||
}
|
||||
|
@ -1,13 +1,17 @@
|
||||
package io.dataease.api.permissions.apikey.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "状态切换器")
|
||||
@Data
|
||||
public class ApikeyEnableEditor implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "状态", defaultValue = "false")
|
||||
private Boolean enable = false;
|
||||
}
|
||||
|
@ -2,21 +2,28 @@ package io.dataease.api.permissions.apikey.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "API Key VO")
|
||||
@Data
|
||||
public class ApiKeyVO implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "accessKey")
|
||||
private String accessKey;
|
||||
|
||||
@Schema(description = "accessSecret")
|
||||
private String accessSecret;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private Boolean enable;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private Long createTime;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "权限管理")
|
||||
@ApiSupport(order = 999)
|
||||
@ApiSupport(order = 5, author = "fit2cloud-someone")
|
||||
public interface AuthApi {
|
||||
|
||||
@Operation(summary = "查询资源树")
|
||||
|
@ -9,6 +9,7 @@ import io.dataease.api.permissions.auth.dto.BusiResourceEditor;
|
||||
import io.dataease.api.permissions.auth.dto.BusiResourceMover;
|
||||
import io.dataease.model.BusiNodeRequest;
|
||||
import io.dataease.model.BusiNodeVO;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -20,7 +21,7 @@ import java.util.List;
|
||||
|
||||
@Tag(name = "内部资源交互")
|
||||
@ApiSupport(order = 998)
|
||||
// @Hidden
|
||||
@Hidden
|
||||
public interface InteractiveAuthApi {
|
||||
|
||||
@Operation(summary = "查询菜单ID")
|
||||
|
@ -1,16 +1,17 @@
|
||||
package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import io.dataease.api.permissions.auth.vo.PermissionItem;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "业务权限编辑器")
|
||||
@Data
|
||||
public class BusiPerEditor extends BusiPermissionRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3067994331757489447L;
|
||||
|
||||
@Schema(description = "编辑权限节点集合")
|
||||
private List<PermissionItem> permissions;
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "资源权限构造器")
|
||||
@Data
|
||||
public class BusiTargetPerCreator extends MenuTargetPerCreator{
|
||||
|
||||
@Schema(description = "类型")
|
||||
private Integer type;
|
||||
@Schema(description = "标记")
|
||||
private String flag;
|
||||
}
|
||||
|
@ -1,16 +1,18 @@
|
||||
package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import io.dataease.api.permissions.auth.vo.PermissionItem;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "菜单权限编辑器")
|
||||
@Data
|
||||
public class MenuPerEditor extends MenuPermissionRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3410520935167596750L;
|
||||
|
||||
@Schema(description = "菜单权限集合")
|
||||
private List<PermissionItem> permissions;
|
||||
}
|
||||
|
@ -1,16 +1,17 @@
|
||||
package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "菜单权限查询条件")
|
||||
@Data
|
||||
public class MenuPermissionRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -7609671259840867561L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import io.dataease.api.permissions.auth.vo.PermissionItem;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "菜单权限构造器")
|
||||
@Data
|
||||
public class MenuTargetPerCreator extends TargetPerCreator{
|
||||
|
||||
@Schema(description = "权限集合")
|
||||
private List<PermissionItem> permissions;
|
||||
}
|
||||
|
@ -2,17 +2,19 @@ package io.dataease.api.permissions.auth.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "权限构造器")
|
||||
@Data
|
||||
public class TargetPerCreator implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 6469957337188015981L;
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
@Schema(description = "权限ID集合")
|
||||
private List<Long> ids;
|
||||
}
|
||||
|
@ -1,9 +1,15 @@
|
||||
package io.dataease.api.permissions.embedded.api;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.embedded.dto.EmbeddedCreator;
|
||||
import io.dataease.api.permissions.embedded.dto.EmbeddedEditor;
|
||||
import io.dataease.api.permissions.embedded.dto.EmbeddedResetRequest;
|
||||
import io.dataease.api.permissions.embedded.vo.EmbeddedGridVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -11,23 +17,38 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "嵌入式")
|
||||
@ApiSupport(order = 6, author = "fit2cloud-someone")
|
||||
public interface EmbeddedApi {
|
||||
|
||||
@Operation(summary = "查询")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/queryGrid")
|
||||
List<EmbeddedGridVO> queryGrid();
|
||||
|
||||
@Operation(summary = "创建")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@PostMapping("/create")
|
||||
void create(@RequestBody EmbeddedCreator creator);
|
||||
|
||||
@Operation(summary = "编辑")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/edit")
|
||||
void edit(@RequestBody EmbeddedEditor editor);
|
||||
|
||||
@Operation(summary = "删除")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@Parameter(name = "id", description = "ID", required = true, in = ParameterIn.PATH)
|
||||
@PostMapping("/delete/{id}")
|
||||
void delete(@PathVariable("id") Long id);
|
||||
|
||||
@ApiOperationSupport(order = 5)
|
||||
@Operation(summary = "重置密钥")
|
||||
@PostMapping("/reset")
|
||||
void reset(@RequestBody EmbeddedResetRequest request);
|
||||
|
||||
@ApiOperationSupport(order = 6)
|
||||
@Operation(summary = "嵌入式应用域名集合", hidden = true)
|
||||
@GetMapping("/domainList")
|
||||
List<String> domainList();
|
||||
}
|
||||
|
@ -1,13 +1,15 @@
|
||||
package io.dataease.api.permissions.embedded.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "嵌入式应用构造器")
|
||||
@Data
|
||||
public class EmbeddedCreator implements Serializable {
|
||||
|
||||
@Schema(description = "应用名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "应用域名")
|
||||
private String domain;
|
||||
}
|
||||
|
@ -1,15 +1,17 @@
|
||||
package io.dataease.api.permissions.embedded.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "嵌入式应用编辑器")
|
||||
@Data
|
||||
public class EmbeddedEditor implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "应用名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "应用域名")
|
||||
private String domain;
|
||||
}
|
||||
|
@ -1,13 +1,16 @@
|
||||
package io.dataease.api.permissions.embedded.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "嵌入式密钥重置器")
|
||||
@Data
|
||||
public class EmbeddedResetRequest implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "新密钥")
|
||||
private String appSecret;
|
||||
}
|
||||
|
@ -2,21 +2,24 @@ package io.dataease.api.permissions.embedded.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "嵌入式列表VO")
|
||||
@Data
|
||||
public class EmbeddedGridVO implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "应用名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "应用ID")
|
||||
private String appId;
|
||||
|
||||
@Schema(description = "应用密钥")
|
||||
private String appSecret;
|
||||
|
||||
@Schema(description = "应用域名")
|
||||
private String domain;
|
||||
}
|
||||
|
@ -1,8 +1,12 @@
|
||||
package io.dataease.api.permissions.login.api;
|
||||
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.login.dto.PwdLoginDTO;
|
||||
import io.dataease.auth.vo.TokenVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@ -14,21 +18,30 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
* 本地登录:账号密码获取用户获取token
|
||||
* oidc登录:回调请求头部X-Userinfo中获取用户 根据用户信息(没有就新建用户)再换取token
|
||||
*/
|
||||
@Tag(name = "登录")
|
||||
@ApiSupport(order = 1, author = "fit2cloud-someone")
|
||||
public interface LoginApi {
|
||||
/**
|
||||
* 本地登录
|
||||
*
|
||||
* @param dto
|
||||
*/
|
||||
@Operation(summary = "本地登录")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@PostMapping("/login/localLogin")
|
||||
TokenVO localLogin(@Valid @RequestBody PwdLoginDTO dto);
|
||||
|
||||
@Operation(summary = "token续命", hidden = true)
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/login/refresh")
|
||||
TokenVO refresh();
|
||||
|
||||
@Operation(summary = "第三方登录", hidden = true)
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/login/platformLogin/{origin}")
|
||||
TokenVO platformLogin(@PathVariable("origin") Integer origin);
|
||||
|
||||
@Operation(summary = "登出")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/logout")
|
||||
void logout();
|
||||
|
||||
|
@ -1,15 +1,18 @@
|
||||
package io.dataease.api.permissions.login.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Schema(description = "登录DTO")
|
||||
@Data
|
||||
public class PwdLoginDTO {
|
||||
|
||||
@Schema(description = "账号(需加密)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "login.validator.name")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "密码(需加密)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "login.validator.pwd")
|
||||
private String pwd;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.permissions.org.api;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.org.dto.OrgCreator;
|
||||
import io.dataease.api.permissions.org.dto.OrgEditor;
|
||||
import io.dataease.api.permissions.org.dto.OrgRequest;
|
||||
@ -8,6 +9,10 @@ import io.dataease.api.permissions.org.vo.OrgPageVO;
|
||||
import io.dataease.auth.DeApiPath;
|
||||
import io.dataease.auth.DePermit;
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -18,28 +23,37 @@ import java.util.List;
|
||||
import static io.dataease.constant.AuthResourceEnum.ORG;
|
||||
import static io.dataease.constant.AuthResourceEnum.ROLE;
|
||||
|
||||
@Tag(name = "组织")
|
||||
@ApiSupport(order = 4, author = "fit2cloud-someone")
|
||||
@DeApiPath(value = "/org", rt = ORG)
|
||||
public interface OrgApi {
|
||||
|
||||
@Operation(summary = "查询组织树")
|
||||
@PostMapping("/page/tree")
|
||||
@DePermit("m:read")
|
||||
List<OrgPageVO> pageTree(@RequestBody OrgRequest request);
|
||||
|
||||
@Operation(summary = "创建")
|
||||
@DePermit({"m:read"})
|
||||
@PostMapping("/page/create")
|
||||
void create(@RequestBody OrgCreator creator);
|
||||
|
||||
@Operation(summary = "编辑")
|
||||
@DePermit({"m:read", "#p0.id+':manage'"})
|
||||
@PostMapping("/page/edit")
|
||||
void edit(@RequestBody OrgEditor editor);
|
||||
|
||||
@Operation(summary = "删除")
|
||||
@Parameter(name = "id", description = "ID", required = true, in = ParameterIn.PATH)
|
||||
@PostMapping("/page/delete/{id}")
|
||||
@DePermit({"m:read", "#p0+':manage'"})
|
||||
void delete(@PathVariable("id") Long id);
|
||||
|
||||
@Operation(summary = "查询权限内组织树")
|
||||
@PostMapping("/mounted")
|
||||
List<MountedVO> mounted(@RequestBody KeywordRequest request);
|
||||
|
||||
@Operation(summary = "", hidden = true)
|
||||
@GetMapping("/resourceExist/{oid}")
|
||||
boolean resourceExist(@PathVariable("oid") Long oid);
|
||||
}
|
||||
|
@ -1,16 +1,19 @@
|
||||
package io.dataease.api.permissions.org.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "组织构造器")
|
||||
@Data
|
||||
public class OrgCreator implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -4246980891732805368L;
|
||||
|
||||
@Schema(description = "组织名称")
|
||||
private String name;
|
||||
@Schema(description = "上级ID")
|
||||
private Long pid;
|
||||
}
|
||||
|
@ -1,17 +1,19 @@
|
||||
package io.dataease.api.permissions.org.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "组织编辑器")
|
||||
@Data
|
||||
public class OrgEditor implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -5571486179570725994L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "组织名称")
|
||||
private String name;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package io.dataease.api.permissions.org.dto;
|
||||
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@ -8,12 +9,13 @@ import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@Schema(description = "组织列表过滤器")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class OrgRequest extends KeywordRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1697526057837588192L;
|
||||
|
||||
@Schema(description = "是否降序", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Boolean desc = true;
|
||||
}
|
||||
|
@ -2,21 +2,27 @@ package io.dataease.api.permissions.org.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "组织VO")
|
||||
@Data
|
||||
public class MountedVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -7642741925705465785L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
@Schema(description = "只读")
|
||||
private boolean readOnly = true;
|
||||
@Schema(description = "子集")
|
||||
private List<MountedVO> children;
|
||||
}
|
||||
|
@ -2,26 +2,28 @@ package io.dataease.api.permissions.org.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "组织列表VO")
|
||||
@Data
|
||||
public class OrgPageVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -7788232223396601785L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private Long createTime;
|
||||
|
||||
@Schema(description = "只读")
|
||||
private boolean readOnly = true;
|
||||
|
||||
@Schema(description = "子集")
|
||||
private List<OrgPageVO> children;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.permissions.role.api;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.role.dto.*;
|
||||
import io.dataease.api.permissions.role.vo.ExternalUserVO;
|
||||
import io.dataease.api.permissions.role.vo.RoleDetailVO;
|
||||
@ -7,6 +8,10 @@ import io.dataease.api.permissions.role.vo.RoleVO;
|
||||
import io.dataease.auth.DeApiPath;
|
||||
import io.dataease.auth.DePermit;
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -16,55 +21,73 @@ import java.util.List;
|
||||
|
||||
import static io.dataease.constant.AuthResourceEnum.ROLE;
|
||||
|
||||
@Tag(name = "角色")
|
||||
@ApiSupport(order = 3, author = "fit2cloud-someone")
|
||||
@DeApiPath(value = "/role", rt = ROLE)
|
||||
public interface RoleApi {
|
||||
|
||||
@Operation(summary = "查询")
|
||||
@DePermit("m:read")
|
||||
@PostMapping("/query")
|
||||
List<RoleVO> query(@RequestBody KeywordRequest request);
|
||||
|
||||
@Operation(summary = "创建")
|
||||
@DePermit("m:read")
|
||||
@PostMapping("/create")
|
||||
void create(@RequestBody RoleCreator creator);
|
||||
|
||||
@Operation(summary = "编辑")
|
||||
@DePermit({"m:read", "#p0.id + ':manage'"})
|
||||
@PostMapping("/edit")
|
||||
void edit(@RequestBody RoleEditor editor);
|
||||
|
||||
@Operation(summary = "绑定用户")
|
||||
@DePermit({"m:read", "#p0.rid + ':manage'"})
|
||||
@PostMapping("/mountUser")
|
||||
void mountUser(@RequestBody MountUserRequest request);
|
||||
|
||||
@Operation(summary = "绑定组织外用户")
|
||||
@DePermit({"m:read", "#p0.rid + ':manage'"})
|
||||
@PostMapping("/mountExternalUser")
|
||||
void mountExternalUser(@RequestBody MountExternalUserRequest request);
|
||||
|
||||
@Operation(summary = "查询组织外用户")
|
||||
@GetMapping("/searchExternalUser/{keyword}")
|
||||
ExternalUserVO searchExternalUser(@PathVariable("keyword") String keyword);
|
||||
|
||||
@Operation(summary = "解绑用户")
|
||||
@DePermit({"m:read", "#p0.rid + ':manage'"})
|
||||
@PostMapping("/unMountUser")
|
||||
void unMountUser(@RequestBody UnmountUserRequest request);
|
||||
|
||||
@Operation(summary = "用户可选角色")
|
||||
@PostMapping("/user/option")
|
||||
List<RoleVO> optionForUser(@RequestBody RoleRequest request);
|
||||
|
||||
@Operation(summary = "用户已选角色")
|
||||
@PostMapping("/user/selected")
|
||||
List<RoleVO> selectedForUser(@RequestBody RoleRequest request);
|
||||
|
||||
@Operation(summary = "角色详情")
|
||||
@Parameter(name = "rid", description = "角色ID", required = true, in = ParameterIn.PATH)
|
||||
@GetMapping("/detail/{rid}")
|
||||
RoleDetailVO detail(@PathVariable("rid") Long rid);
|
||||
|
||||
@Operation(summary = "删除角色")
|
||||
@Parameter(name = "rid", description = "角色ID", required = true, in = ParameterIn.PATH)
|
||||
@DePermit({"m:manage", "#p0 + ':manage'"})
|
||||
@PostMapping("/delete/{rid}")
|
||||
void delete(@PathVariable("rid") Long rid);
|
||||
|
||||
@Operation(summary = "解绑用户询问")
|
||||
@PostMapping("/beforeUnmountInfo")
|
||||
Integer beforeUnmountInfo(@RequestBody UnmountUserRequest request);
|
||||
|
||||
@Operation(summary = "复制", hidden = true)
|
||||
@PostMapping("/copy")
|
||||
void copy(@RequestBody RoleCopyRequest request);
|
||||
|
||||
@Operation(summary = "查询组织内角色")
|
||||
@PostMapping("/byCurOrg")
|
||||
List<RoleVO> byCurOrg(@RequestBody KeywordRequest request);
|
||||
}
|
||||
|
@ -1,16 +1,18 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "组外用户绑定器")
|
||||
@Data
|
||||
public class MountExternalUserRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -1682136323964916544L;
|
||||
|
||||
@Schema(description = "角色ID")
|
||||
private Long rid;
|
||||
|
||||
@Schema(description = "组外用户ID")
|
||||
private Long uid;
|
||||
}
|
||||
|
@ -1,13 +1,17 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "用户绑定器")
|
||||
@Data
|
||||
public class MountUserRequest implements Serializable {
|
||||
|
||||
@Schema(description = "组织ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long rid;
|
||||
@Schema(description = "用户ID集合", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<Long> uids;
|
||||
}
|
||||
|
@ -1,17 +1,21 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "角色构造器")
|
||||
@Data
|
||||
public class RoleCreator implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -5311145649863484035L;
|
||||
|
||||
@Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String name;
|
||||
@Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer typeCode;
|
||||
@Schema(description = "描述", hidden = true)
|
||||
private String desc;
|
||||
|
||||
|
||||
|
@ -1,17 +1,21 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "角色编辑器")
|
||||
@Data
|
||||
public class RoleEditor implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -4071819873019095722L;
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long id;
|
||||
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String name;
|
||||
@Schema(description = "名称", hidden = true)
|
||||
private String desc;
|
||||
|
||||
}
|
||||
|
@ -1,16 +1,20 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
@Schema(description = "角色过滤器")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class RoleRequest extends KeywordRequest {
|
||||
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 7354856549096378406L;
|
||||
@Schema(description = "用户ID")
|
||||
private Long uid;
|
||||
}
|
||||
|
@ -1,15 +1,19 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "用户解绑器")
|
||||
@Data
|
||||
public class UnmountUserRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1361046648092771178L;
|
||||
@Schema(description = "角色ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long rid;
|
||||
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long uid;
|
||||
}
|
||||
|
@ -1,20 +1,23 @@
|
||||
package io.dataease.api.permissions.role.dto;
|
||||
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
|
||||
@Schema(description = "用户过滤器")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class UserRequest extends KeywordRequest {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -2740015284392981297L;
|
||||
@Schema(description = "角色ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long rid;
|
||||
|
||||
@Schema(description = "排序规则")
|
||||
private String order;
|
||||
|
||||
}
|
||||
|
@ -2,24 +2,27 @@ package io.dataease.api.permissions.role.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "组织外用户VO")
|
||||
@Data
|
||||
public class ExternalUserVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -5244308239452360019L;
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long uid;
|
||||
|
||||
@Schema(description = "用户账号")
|
||||
private String account;
|
||||
|
||||
@Schema(description = "用户名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "用户邮箱")
|
||||
private String email;
|
||||
|
||||
@Schema(description = "用户电话")
|
||||
private String phone;
|
||||
}
|
||||
|
@ -3,11 +3,14 @@ package io.dataease.api.permissions.role.vo;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.dataease.api.permissions.role.dto.RoleCreator;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "角色详情VO")
|
||||
@Data
|
||||
public class RoleDetailVO extends RoleCreator {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
}
|
||||
|
@ -2,19 +2,25 @@ package io.dataease.api.permissions.role.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "角色VO")
|
||||
@Data
|
||||
public class RoleVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3488550489306534641L;
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
@Schema(description = "角色名称")
|
||||
private String name;
|
||||
@Schema(description = "只读")
|
||||
private boolean readonly;
|
||||
@Schema(description = "根结点")
|
||||
private boolean root;
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
package io.dataease.api.permissions.setting.api;
|
||||
|
||||
import io.dataease.api.permissions.setting.vo.PerSettingItemVO;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Hidden
|
||||
public interface PerSettingApi {
|
||||
|
||||
@GetMapping("/basic/query")
|
||||
|
@ -1,6 +1,7 @@
|
||||
package io.dataease.api.permissions.user.api;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.api.permissions.role.dto.UserRequest;
|
||||
import io.dataease.api.permissions.user.dto.*;
|
||||
import io.dataease.api.permissions.user.vo.*;
|
||||
@ -10,6 +11,11 @@ import io.dataease.auth.vo.TokenVO;
|
||||
import io.dataease.model.KeywordRequest;
|
||||
import io.dataease.request.BaseGridRequest;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@ -18,87 +24,128 @@ import java.util.List;
|
||||
import static io.dataease.constant.AuthResourceEnum.USER;
|
||||
|
||||
|
||||
@Tag(name = "用户")
|
||||
@ApiSupport(order = 2, author = "fit2cloud-someone")
|
||||
@DeApiPath(value = "/user", rt = USER)
|
||||
public interface UserApi {
|
||||
|
||||
@Operation(summary = "查询用户列表")
|
||||
@Parameters({
|
||||
@Parameter(name = "goPage", description = "目标页码", required = true, in = ParameterIn.PATH),
|
||||
@Parameter(name = "pageSize", description = "每页容量", required = true, in = ParameterIn.PATH),
|
||||
@Parameter(name = "request", description = "过滤条件", required = true)
|
||||
})
|
||||
@DePermit("m:read")
|
||||
@PostMapping("/pager/{goPage}/{pageSize}")
|
||||
IPage<UserGridVO> pager(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize, @RequestBody BaseGridRequest request);
|
||||
|
||||
@Operation(summary = "查询用户详情")
|
||||
@Parameter(name = "id", description = "ID", required = true, in = ParameterIn.PATH)
|
||||
@DePermit({"m:read", "#p0 + ':read'"})
|
||||
@GetMapping("/queryById/{id}")
|
||||
UserFormVO queryById(@PathVariable("id") Long id);
|
||||
|
||||
|
||||
@Operation(summary = "查询个人信息")
|
||||
@GetMapping("/personInfo")
|
||||
UserFormVO personInfo();
|
||||
|
||||
@Operation(summary = "创建")
|
||||
@DePermit("m:read")
|
||||
@PostMapping("/create")
|
||||
void create(@RequestBody UserCreator creator);
|
||||
|
||||
@Operation(summary = "编辑")
|
||||
@DePermit({"m:read", "#p0.id + ':manage'"})
|
||||
@PostMapping("/edit")
|
||||
void edit(@RequestBody UserEditor editor);
|
||||
|
||||
@Operation(summary = "变更个人信息")
|
||||
@PostMapping("/personEdit")
|
||||
void personEdit(@RequestBody UserEditor editor);
|
||||
|
||||
@Operation(summary = "删除")
|
||||
@Parameter(name = "id", description = "ID", required = true, in = ParameterIn.PATH)
|
||||
@DePermit({"m:read", "#p0 + ':manage'"})
|
||||
@PostMapping("/delete/{id}")
|
||||
void delete(@PathVariable("id") Long id);
|
||||
|
||||
@Operation(summary = "批量删除")
|
||||
@DePermit({"m:read", "#p0 + ':manage'"})
|
||||
@PostMapping("/batchDel")
|
||||
void batchDel(@RequestBody List<Long> ids);
|
||||
|
||||
@Operation(summary = "角色可绑用户")
|
||||
@PostMapping("/role/option")
|
||||
List<UserItemVO> optionForRole(@RequestBody UserRequest request);
|
||||
|
||||
@Operation(summary = "角色已绑用户")
|
||||
@Parameters({
|
||||
@Parameter(name = "goPage", description = "目标页码", required = true, in = ParameterIn.PATH),
|
||||
@Parameter(name = "pageSize", description = "每页容量", required = true, in = ParameterIn.PATH),
|
||||
@Parameter(name = "request", description = "过滤条件", required = true)
|
||||
})
|
||||
@PostMapping("/role/selected/{goPage}/{pageSize}")
|
||||
IPage<UserItemVO> selectedForRole(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize, @RequestBody UserRequest request);
|
||||
|
||||
@Operation(summary = "切换组织")
|
||||
@Parameter(name = "oId", description = "目标组织ID", required = true, in = ParameterIn.PATH)
|
||||
@PostMapping("/switch/{oId}")
|
||||
TokenVO switchOrg(@PathVariable("oId") Long oId);
|
||||
|
||||
@Operation(summary = "获取当前登录人信息")
|
||||
@GetMapping("/info")
|
||||
CurUserVO info();
|
||||
|
||||
@Operation(summary = "查询当前组织内用户")
|
||||
@PostMapping("/byCurOrg")
|
||||
List<UserItem> byCurOrg(@RequestBody KeywordRequest request);
|
||||
|
||||
@Operation(summary = "用户数量", hidden = true)
|
||||
@Hidden
|
||||
@GetMapping("/userCount")
|
||||
int userCount();
|
||||
|
||||
@Operation(summary = "切换语言")
|
||||
@PostMapping("/switchLanguage")
|
||||
void switchLanguage(@RequestBody LangSwitchRequest request);
|
||||
|
||||
@Operation(summary = "下载批量导入模版")
|
||||
@PostMapping("/excelTemplate")
|
||||
void excelTemplate();
|
||||
|
||||
@Operation(summary = "批量导入")
|
||||
@PostMapping("/batchImport")
|
||||
UserImportVO batchImport(@RequestPart(value = "file") MultipartFile file);
|
||||
|
||||
|
||||
@Operation(summary = "下载批量导入失败记录")
|
||||
@Parameter(name = "key", description = "导入结果key", required = true, in = ParameterIn.PATH)
|
||||
@GetMapping("/errorRecord/{key}")
|
||||
void errorRecord(@PathVariable("key") String key);
|
||||
|
||||
@Operation(summary = "清理批量导入失败记录")
|
||||
@Parameter(name = "key", description = "导入结果key", required = true, in = ParameterIn.PATH)
|
||||
@GetMapping("/clearErrorRecord/{key}")
|
||||
void clearErrorRecord(@PathVariable("key") String key);
|
||||
|
||||
@Operation(summary = "查询默认密码")
|
||||
@DePermit({"m:read"})
|
||||
@GetMapping("/defaultPwd")
|
||||
String defaultPwd();
|
||||
|
||||
@Operation(summary = "重置为默认密码")
|
||||
@Parameter(name = "id", description = "用户ID", required = true, in = ParameterIn.PATH)
|
||||
@DePermit({"m:read", "#p0 + ':manage'"})
|
||||
@PostMapping("/resetPwd/{id}")
|
||||
void resetPwd(@PathVariable("id") Long id);
|
||||
|
||||
@Operation(summary = "切换用户状态")
|
||||
@DePermit({"m:read", "#p0.id + ':manage'"})
|
||||
@PostMapping("/enable")
|
||||
void enable(@RequestBody EnableSwitchRequest request);
|
||||
|
||||
@Operation(summary = "修改个人密码")
|
||||
@PostMapping("/modifyPwd")
|
||||
void modifyPwd(@RequestBody ModifyPwdRequest request);
|
||||
|
||||
|
@ -1,16 +1,19 @@
|
||||
package io.dataease.api.permissions.user.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "用户状态重置器")
|
||||
@Data
|
||||
public class EnableSwitchRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 8477475476294666602L;
|
||||
|
||||
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "用户状态", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Boolean enable;
|
||||
}
|
||||
|
@ -1,15 +1,17 @@
|
||||
package io.dataease.api.permissions.user.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "语言切换器")
|
||||
@Data
|
||||
public class LangSwitchRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -6779697711311519431L;
|
||||
|
||||
|
||||
@Schema(description = "目标语言", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String lang;
|
||||
}
|
||||
|
@ -1,16 +1,19 @@
|
||||
package io.dataease.api.permissions.user.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "密码修改器")
|
||||
@Data
|
||||
public class ModifyPwdRequest implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -6583458043271002864L;
|
||||
|
||||
@Schema(description = "原始密码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String pwd;
|
||||
|
||||
@Schema(description = "新密码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String newPwd;
|
||||
}
|
||||
|
@ -1,22 +1,30 @@
|
||||
package io.dataease.api.permissions.user.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "用户构造器")
|
||||
@Data
|
||||
public class UserCreator implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 5231186463604221044L;
|
||||
|
||||
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String name;
|
||||
@Schema(description = "账号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String account;
|
||||
@Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String email;
|
||||
@Schema(description = "电话前缀")
|
||||
private String phonePrefix;
|
||||
@Schema(description = "电话")
|
||||
private String phone;
|
||||
@Schema(description = "角色ID集合", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<Long> roleIds;
|
||||
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Boolean enable;
|
||||
}
|
||||
|
@ -1,14 +1,17 @@
|
||||
package io.dataease.api.permissions.user.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
@Schema(description = "用户编辑器")
|
||||
@Data
|
||||
public class UserEditor extends UserCreator{
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1580870660998152922L;
|
||||
|
||||
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long id;
|
||||
}
|
||||
|
@ -2,19 +2,25 @@ package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "当前登录人信息VO")
|
||||
@Data
|
||||
public class CurUserVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1190164294672439979L;
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
@Schema(description = "ID")
|
||||
private Long id;
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
@Schema(description = "组织ID")
|
||||
private Long oid;
|
||||
@Schema(description = "语言")
|
||||
private String language;
|
||||
}
|
||||
|
@ -2,28 +2,38 @@ package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "用户详情VO")
|
||||
@Data
|
||||
public class UserFormVO implements Serializable {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "账号")
|
||||
private String account;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "角色ID集合")
|
||||
private List<String> roleIds;
|
||||
|
||||
@Schema(description = "邮箱")
|
||||
private String email;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private Boolean enable;
|
||||
|
||||
@Schema(description = "电话前缀")
|
||||
private String phonePrefix;
|
||||
|
||||
@Schema(description = "电话")
|
||||
private String phone;
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "角色项")
|
||||
@Data
|
||||
public class UserGridRoleItem {
|
||||
|
||||
@Schema(description = "角色ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "角色名称")
|
||||
private String name;
|
||||
}
|
||||
|
@ -2,25 +2,28 @@ package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "用户列表VO")
|
||||
@Data
|
||||
public class UserGridVO {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "账号")
|
||||
private String account;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "角色")
|
||||
private List<UserGridRoleItem> roleItems;
|
||||
|
||||
@Schema(description = "邮箱")
|
||||
private String email;
|
||||
|
||||
@Schema(description = "电话")
|
||||
private Boolean enable;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private Long createTime;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "批量导入结果")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -14,10 +16,11 @@ public class UserImportVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3371025717928287780L;
|
||||
|
||||
@Schema(description = "数据标志")
|
||||
private String dataKey;
|
||||
|
||||
@Schema(description = "成功数量")
|
||||
private int successCount;
|
||||
|
||||
@Schema(description = "失败数量")
|
||||
private int errorCount;
|
||||
|
||||
public UserImportVO(String dataKey) {
|
||||
|
@ -2,17 +2,21 @@ package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "用户概要")
|
||||
@Data
|
||||
public class UserItem implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3423336650739339624L;
|
||||
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
@Schema(description = "用户ID")
|
||||
private Long id;
|
||||
@Schema(description = "用户名称")
|
||||
private String name;
|
||||
}
|
||||
|
@ -2,22 +2,25 @@ package io.dataease.api.permissions.user.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "用户项VO")
|
||||
@Data
|
||||
public class UserItemVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -311077645822242697L;
|
||||
|
||||
@Schema(description = "ID")
|
||||
@JsonSerialize(using= ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "账号")
|
||||
private String account;
|
||||
|
||||
@Schema(description = "名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "邮箱")
|
||||
private String email;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.auth.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "Token VO")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -14,7 +16,9 @@ public class TokenVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 564596240616527258L;
|
||||
|
||||
@Schema(description = "token")
|
||||
private String token;
|
||||
|
||||
@Schema(description = "有效期")
|
||||
private Long exp;
|
||||
}
|
||||
|
@ -54,7 +54,11 @@ public class SwaggerConfig {
|
||||
|
||||
@Bean
|
||||
public GroupedOpenApi systemApi() {
|
||||
return GroupedOpenApi.builder().group("系统管理").packagesToScan("io.dataease.xpack.permissions.auth").build();
|
||||
return GroupedOpenApi.builder().group("权限相关xpack").packagesToScan("io.dataease.xpack.permissions").build();
|
||||
}
|
||||
@Bean
|
||||
public GroupedOpenApi baseXpackApi() {
|
||||
return GroupedOpenApi.builder().group("基础xpack").packagesToScan("io.dataease.xpack.base").build();
|
||||
}
|
||||
@Bean
|
||||
public GroupedOpenApi visualizationApi() {
|
||||
|
@ -1,14 +1,17 @@
|
||||
package io.dataease.model;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Schema(description = "关键紫过滤器")
|
||||
@Data
|
||||
public class KeywordRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3038086304525253475L;
|
||||
@Schema(description = "关键字")
|
||||
private String keyword;
|
||||
}
|
||||
|
@ -14,8 +14,6 @@ public class WhitelistUtils {
|
||||
"/dekey",
|
||||
"/index.html",
|
||||
"/model",
|
||||
"/deApi",
|
||||
"/demo.html",
|
||||
"/swagger-resources",
|
||||
"/doc.html",
|
||||
"/panel.html",
|
||||
@ -31,7 +29,6 @@ public class WhitelistUtils {
|
||||
return WHITE_PATH.contains(requestURI)
|
||||
|| StringUtils.endsWithAny(requestURI, ".ico", "js", ".css", "svg", "png", "jpg", "js.map")
|
||||
|| StringUtils.startsWithAny(requestURI, "data:image")
|
||||
|| StringUtils.startsWithAny(requestURI, "/v3/")
|
||||
|| StringUtils.startsWithAny(requestURI, "/login/platformLogin/")
|
||||
|| StringUtils.startsWithAny(requestURI, "/static-resource/")
|
||||
|| StringUtils.startsWithAny(requestURI, "/share/proxyInfo")
|
||||
|
Loading…
Reference in New Issue
Block a user