用户权限展示.

This commit is contained in:
许晓东
2023-04-17 22:24:51 +08:00
parent fce1154c36
commit af52e6bc61
8 changed files with 232 additions and 16 deletions

View File

@@ -0,0 +1,40 @@
package com.xuxd.kafka.console.beans.vo;
import com.xuxd.kafka.console.beans.dos.SysPermissionDO;
import lombok.Data;
import java.util.List;
/**
* @author: xuxd
* @date: 2023/4/17 21:18
**/
@Data
public class SysPermissionVO {
private String name;
/**
* 权限类型: 0菜单1按钮
*/
private Integer type;
private Long parentId;
private String permission;
private Long key;
private List<SysPermissionVO> children;
public static SysPermissionVO from(SysPermissionDO permissionDO) {
SysPermissionVO permissionVO = new SysPermissionVO();
permissionVO.setPermission(permissionDO.getPermission());
permissionVO.setType(permissionDO.getType());
permissionVO.setName(permissionDO.getName());
permissionVO.setParentId(permissionDO.getParentId());
permissionVO.setKey(permissionDO.getId());
return permissionVO;
}
}

View File

@@ -5,10 +5,7 @@ import com.xuxd.kafka.console.beans.dto.SysPermissionDTO;
import com.xuxd.kafka.console.beans.dto.SysRoleDTO;
import com.xuxd.kafka.console.beans.dto.SysUserDTO;
import com.xuxd.kafka.console.service.UserManageService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* @author: xuxd
@@ -41,4 +38,9 @@ public class UserManageController {
public Object addPermission(@RequestBody SysPermissionDTO permissionDTO) {
return userManageService.addPermission(permissionDTO);
}
@GetMapping("/permission")
public Object selectPermission() {
return userManageService.selectPermission();
}
}

View File

@@ -21,4 +21,6 @@ public interface UserManageService {
ResponseData addRole(SysRoleDTO roleDTO);
ResponseData addUser(SysUserDTO userDTO);
ResponseData selectPermission();
}

View File

@@ -1,9 +1,12 @@
package com.xuxd.kafka.console.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xuxd.kafka.console.beans.ResponseData;
import com.xuxd.kafka.console.beans.dos.SysPermissionDO;
import com.xuxd.kafka.console.beans.dto.SysPermissionDTO;
import com.xuxd.kafka.console.beans.dto.SysRoleDTO;
import com.xuxd.kafka.console.beans.dto.SysUserDTO;
import com.xuxd.kafka.console.beans.vo.SysPermissionVO;
import com.xuxd.kafka.console.dao.SysPermissionMapper;
import com.xuxd.kafka.console.dao.SysRoleMapper;
import com.xuxd.kafka.console.dao.SysUserMapper;
@@ -12,6 +15,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: xuxd
* @date: 2023/4/11 21:24
@@ -51,4 +57,59 @@ public class UserManageServiceImpl implements UserManageService {
userMapper.insert(userDTO.toDO());
return ResponseData.create().success();
}
@Override
public ResponseData selectPermission() {
QueryWrapper<SysPermissionDO> queryWrapper = new QueryWrapper<>();
List<SysPermissionDO> permissionDOS = permissionMapper.selectList(queryWrapper);
List<SysPermissionVO> vos = new ArrayList<>();
Map<Long, Integer> posMap = new HashMap<>();
Map<Long, SysPermissionVO> voMap = new HashMap<>();
Iterator<SysPermissionDO> iterator = permissionDOS.iterator();
while (iterator.hasNext()) {
SysPermissionDO permissionDO = iterator.next();
if (permissionDO.getParentId() == null) {
// 菜单
SysPermissionVO vo = SysPermissionVO.from(permissionDO);
vos.add(vo);
int index = vos.size() - 1;
// 记录位置
posMap.put(permissionDO.getId(), index);
iterator.remove();
}
}
// 上面把菜单都处理过了
while (!permissionDOS.isEmpty()) {
iterator = permissionDOS.iterator();
while (iterator.hasNext()) {
SysPermissionDO permissionDO = iterator.next();
Long parentId = permissionDO.getParentId();
if (posMap.containsKey(parentId)) {
// 菜单下的按扭
SysPermissionVO vo = SysPermissionVO.from(permissionDO);
Integer index = posMap.get(parentId);
SysPermissionVO menuVO = vos.get(index);
if (menuVO.getChildren() == null) {
menuVO.setChildren(new ArrayList<>());
}
menuVO.getChildren().add(vo);
voMap.put(permissionDO.getId(), vo);
iterator.remove();
} else if (voMap.containsKey(parentId)) {
// 按钮下的按扭
SysPermissionVO vo = SysPermissionVO.from(permissionDO);
SysPermissionVO buttonVO = voMap.get(parentId);
if (buttonVO.getChildren() == null) {
buttonVO.setChildren(new ArrayList<>());
}
buttonVO.getChildren().add(vo);
voMap.put(permissionDO.getId(), vo);
iterator.remove();
}
}
}
return ResponseData.create().data(vos).success();
}
}

View File

@@ -3,9 +3,9 @@
<springProperty scope="context" name="LOGGING_HOME" source="logging.home"/>
<!-- 日志目录 -->
<property name="LOG_HOME" value="${LOGGING_HOME}/logs"/>
<property name="LOG_HOME" value="${LOGGING_HOME:-${user.dir}}/logs"/>
<!-- 日志文件名-->
<property name="APP_NAME" value="${APPLICATION_NAME:-.}"/>
<property name="APP_NAME" value="${APPLICATION_NAME:-kafka-console-ui}"/>
<!-- 使用默认的输出格式-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>

View File

@@ -307,4 +307,15 @@ export const KafkaClientQuotaApi = {
url: "/client/quota",
method: "delete",
},
};
export const UserManageApi = {
getPermissions: {
url: "/sys/user/manage/permission",
method: "get",
},
addPermission: {
url: "/sys/user/manage/permission",
method: "post",
},
};

View File

@@ -0,0 +1,103 @@
<template>
<div class="content">
<a-spin :spinning="loading">
<a-table
:columns="columns"
:data-source="data"
:row-selection="rowSelection"
:expanded-row-keys.sync="expandedRowKeys"
>
<div slot="type" slot-scope="text">
<span v-if="text == 0" style="color: darkgreen">菜单</span
><span v-else>按钮</span>
</div>
</a-table>
</a-spin>
</div>
</template>
<script>
import request from "@/utils/request";
const columns = [
{
title: "权限名称",
dataIndex: "name",
key: "name",
},
{
title: "类型",
dataIndex: "type",
key: "type",
width: "12%",
slots: { title: "type" },
scopedSlots: { customRender: "type" },
},
{
title: "权限标记",
dataIndex: "permission",
width: "30%",
key: "permission",
},
];
const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => {
console.log(
`selectedRowKeys: ${selectedRowKeys}`,
"selectedRows: ",
selectedRows
);
},
onSelect: (record, selected, selectedRows) => {
console.log(record, selected, selectedRows);
},
onSelectAll: (selected, selectedRows, changeRows) => {
console.log(selected, selectedRows, changeRows);
},
};
import { UserManageApi } from "@/utils/api";
import notification from "ant-design-vue/lib/notification";
export default {
name: "Permission",
components: {},
data() {
return {
loading: false,
data: [],
columns,
rowSelection,
expandedRowKeys: [],
};
},
methods: {
getPermissions() {
this.loading = true;
request({
url: UserManageApi.getPermissions.url,
method: UserManageApi.getPermissions.method,
}).then((res) => {
this.loading = false;
if (res.code == 0) {
this.data = res.data;
} else {
notification.error({
message: "error",
description: res.msg,
});
}
});
},
},
created() {
this.getPermissions();
},
};
</script>
<style scoped>
.editable-row-operations a {
margin-right: 8px;
}
</style>

View File

@@ -2,24 +2,22 @@
<div class="content">
<a-spin :spinning="loading">
<a-tabs default-active-key="1" size="large" tabPosition="top">
<a-tab-pane key="1" tab="用户列表">
</a-tab-pane>
<a-tab-pane key="2" tab="角色列表">
</a-tab-pane>
<a-tab-pane key="1" tab="用户列表"> </a-tab-pane>
<a-tab-pane key="2" tab="角色列表"> </a-tab-pane>
<a-tab-pane key="3" tab="权限列表">
<Permission></Permission>
</a-tab-pane>
<a-tab-pane key="4" tab="个人设置">
</a-tab-pane>
<a-tab-pane key="4" tab="个人设置"> </a-tab-pane>
</a-tabs>
</a-spin>
</div>
</template>
<script>
import Permission from "@/views/user/Permission.vue";
export default {
name: "UserManage",
components: {},
components: { Permission },
data() {
return {
loading: false,
@@ -27,8 +25,7 @@ export default {
};
},
methods: {},
created() {
},
created() {},
};
</script>