角色列表页面权限分配雏形.

This commit is contained in:
许晓东
2023-04-24 22:08:05 +08:00
parent a37664f6d5
commit e3b0dd5d2a
8 changed files with 133 additions and 4 deletions

View File

@@ -10,6 +10,8 @@ import lombok.Data;
@Data
public class SysRoleDTO {
private Long id;
private String roleName;
private String description;
@@ -18,6 +20,7 @@ public class SysRoleDTO {
public SysRoleDO toDO() {
SysRoleDO roleDO = new SysRoleDO();
roleDO.setId(this.id);
roleDO.setRoleName(this.roleName);
roleDO.setDescription(this.description);
roleDO.setPermissionIds(this.permissionIds);

View File

@@ -10,6 +10,8 @@ import lombok.Data;
@Data
public class SysUserDTO {
private Long id;
private String username;
private String password;
@@ -20,6 +22,7 @@ public class SysUserDTO {
public SysUserDO toDO() {
SysUserDO userDO = new SysUserDO();
userDO.setId(this.id);
userDO.setUsername(this.username);
userDO.setPassword(this.password);
userDO.setSalt(this.salt);

View File

@@ -12,6 +12,8 @@ import java.util.List;
@Data
public class SysPermissionVO {
private Long id;
private String name;
/**
@@ -35,6 +37,7 @@ public class SysPermissionVO {
permissionVO.setName(permissionDO.getName());
permissionVO.setParentId(permissionDO.getParentId());
permissionVO.setKey(permissionDO.getId());
permissionVO.setId(permissionDO.getId());
return permissionVO;
}
}

View File

@@ -2,6 +2,11 @@ package com.xuxd.kafka.console.beans.vo;
import com.xuxd.kafka.console.beans.dos.SysRoleDO;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: xuxd
@@ -10,17 +15,24 @@ import lombok.Data;
@Data
public class SysRoleVO {
private Long id;
private String roleName;
private String description;
private String permissionIds;
private List<Long> permissionIds;
public static SysRoleVO from(SysRoleDO roleDO) {
SysRoleVO roleVO = new SysRoleVO();
roleVO.setId(roleDO.getId());
roleVO.setRoleName(roleDO.getRoleName());
roleVO.setDescription(roleDO.getDescription());
roleVO.setPermissionIds(roleDO.getPermissionIds());
if (StringUtils.isNotEmpty(roleDO.getPermissionIds())) {
List<Long> list = Arrays.stream(roleDO.getPermissionIds().split(",")).
filter(StringUtils::isNotEmpty).map(e -> Long.valueOf(e.trim())).collect(Collectors.toList());
roleVO.setPermissionIds(list);
}
return roleVO;
}
}

View File

@@ -39,6 +39,12 @@ public class UserManageController {
return userManageService.addPermission(permissionDTO);
}
@ControllerLog("更新角色")
@PutMapping("/role")
public Object updateRole(@RequestBody SysRoleDTO roleDTO) {
return userManageService.updateRole(roleDTO);
}
@GetMapping("/role")
public Object selectRole() {
return userManageService.selectRole();

View File

@@ -25,4 +25,8 @@ public interface UserManageService {
ResponseData selectRole();
ResponseData selectPermission();
ResponseData updateUser(SysUserDTO userDTO);
ResponseData updateRole(SysRoleDTO roleDTO);
}

View File

@@ -120,4 +120,16 @@ public class UserManageServiceImpl implements UserManageService {
}
return ResponseData.create().data(vos).success();
}
@Override
public ResponseData updateUser(SysUserDTO userDTO) {
userMapper.updateById(userDTO.toDO());
return ResponseData.create().success();
}
@Override
public ResponseData updateRole(SysRoleDTO roleDTO) {
roleMapper.updateById(roleDTO.toDO());
return ResponseData.create().success();
}
}

View File

@@ -66,7 +66,45 @@
/>
</a-form-item>
<a-form-item label="拥有权限"> </a-form-item>
<a-form-item label="权限配置">
<div
v-for="(menuPermission, index) in selectedPermissions"
:key="index"
>
<a-row>
<a-col :span="18" :style="{ fontWeight: 'bold' }"
>{{ menuPermission.name }}
</a-col>
<a-col :span="6" :style="{ textAlign: 'right' }">
<!-- <a-checkbox :checked="menuPermission.checked">-->
<!-- 可见</a-checkbox-->
<!-- >-->
<a-switch v-model="menuPermission.checked" />
</a-col>
</a-row>
<a-divider type="horizontal" :style="{ margin: '0px' }" />
<a-row
:gutter="16"
v-for="(
checkboxPermission, index2
) in menuPermission.children"
:key="index2"
>
<a-col :xl="3" :lg="24">
{{ checkboxPermission.name }}
</a-col>
<a-col :xl="18" :lg="24">
<a-checkbox-group
:options="checkboxPermission.children"
v-model="checkboxPermission.selected"
/>
</a-col>
<a-col :span="3" :style="{ textAlign: 'right' }">
<a-checkbox> 全选</a-checkbox>
</a-col>
</a-row>
</div>
</a-form-item>
<a-form-item>
<a-button type="primary" :loading="loading">保存</a-button>
</a-form-item>
@@ -101,7 +139,55 @@ export default {
methods: {
selected(role) {
this.selectedRole = Object.assign({}, role);
const idSet = this.selectedRole.permissionIds
? new Set(this.selectedRole.permissionIds)
: new Set();
this.selectedPermissions = [];
let recursive = function (e, res) {
if (e.children) {
const children = e.children;
children.forEach((c) => {
const child = Object.assign({}, c);
child.name = e.name + "-" + c.name;
child.label = child.name;
child.value = child.id;
res.push(child);
if (child.children) {
recursive(child, res);
}
delete child.children;
});
}
};
// 1 级都是菜单其它的都分到2级按钮
this.permissions.forEach((e) => {
const menu = Object.assign({}, e);
if (menu.children) {
const arr = [];
menu.children.forEach((c) => {
// 菜单下的按扭,按扭下面还有按扭的话,都合并
const btn = Object.assign({}, c);
arr.push(btn);
if (btn.children) {
const self = Object.assign({}, btn);
self.name = btn.name;
self.label = btn.name;
self.value = btn.id;
delete self.children;
const btnArr = [self];
recursive(btn, btnArr);
btn.children = btnArr;
const selected = btn.children
.map((bc) => bc.id)
.filter((id) => idSet.has(id));
btn.selected = selected || [];
}
});
menu.children = arr;
menu.checked = idSet.has(menu.id);
}
this.selectedPermissions.push(menu);
});
},
getRoles() {
this.loading = true;