角色列表页面权限分配雏形.
This commit is contained in:
@@ -10,6 +10,8 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class SysRoleDTO {
|
public class SysRoleDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
@@ -18,6 +20,7 @@ public class SysRoleDTO {
|
|||||||
|
|
||||||
public SysRoleDO toDO() {
|
public SysRoleDO toDO() {
|
||||||
SysRoleDO roleDO = new SysRoleDO();
|
SysRoleDO roleDO = new SysRoleDO();
|
||||||
|
roleDO.setId(this.id);
|
||||||
roleDO.setRoleName(this.roleName);
|
roleDO.setRoleName(this.roleName);
|
||||||
roleDO.setDescription(this.description);
|
roleDO.setDescription(this.description);
|
||||||
roleDO.setPermissionIds(this.permissionIds);
|
roleDO.setPermissionIds(this.permissionIds);
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class SysUserDTO {
|
public class SysUserDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
private String password;
|
private String password;
|
||||||
@@ -20,6 +22,7 @@ public class SysUserDTO {
|
|||||||
|
|
||||||
public SysUserDO toDO() {
|
public SysUserDO toDO() {
|
||||||
SysUserDO userDO = new SysUserDO();
|
SysUserDO userDO = new SysUserDO();
|
||||||
|
userDO.setId(this.id);
|
||||||
userDO.setUsername(this.username);
|
userDO.setUsername(this.username);
|
||||||
userDO.setPassword(this.password);
|
userDO.setPassword(this.password);
|
||||||
userDO.setSalt(this.salt);
|
userDO.setSalt(this.salt);
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class SysPermissionVO {
|
public class SysPermissionVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,6 +37,7 @@ public class SysPermissionVO {
|
|||||||
permissionVO.setName(permissionDO.getName());
|
permissionVO.setName(permissionDO.getName());
|
||||||
permissionVO.setParentId(permissionDO.getParentId());
|
permissionVO.setParentId(permissionDO.getParentId());
|
||||||
permissionVO.setKey(permissionDO.getId());
|
permissionVO.setKey(permissionDO.getId());
|
||||||
|
permissionVO.setId(permissionDO.getId());
|
||||||
return permissionVO;
|
return permissionVO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ package com.xuxd.kafka.console.beans.vo;
|
|||||||
|
|
||||||
import com.xuxd.kafka.console.beans.dos.SysRoleDO;
|
import com.xuxd.kafka.console.beans.dos.SysRoleDO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: xuxd
|
* @author: xuxd
|
||||||
@@ -10,17 +15,24 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class SysRoleVO {
|
public class SysRoleVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
private String permissionIds;
|
private List<Long> permissionIds;
|
||||||
|
|
||||||
public static SysRoleVO from(SysRoleDO roleDO) {
|
public static SysRoleVO from(SysRoleDO roleDO) {
|
||||||
SysRoleVO roleVO = new SysRoleVO();
|
SysRoleVO roleVO = new SysRoleVO();
|
||||||
|
roleVO.setId(roleDO.getId());
|
||||||
roleVO.setRoleName(roleDO.getRoleName());
|
roleVO.setRoleName(roleDO.getRoleName());
|
||||||
roleVO.setDescription(roleDO.getDescription());
|
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;
|
return roleVO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,12 @@ public class UserManageController {
|
|||||||
return userManageService.addPermission(permissionDTO);
|
return userManageService.addPermission(permissionDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ControllerLog("更新角色")
|
||||||
|
@PutMapping("/role")
|
||||||
|
public Object updateRole(@RequestBody SysRoleDTO roleDTO) {
|
||||||
|
return userManageService.updateRole(roleDTO);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/role")
|
@GetMapping("/role")
|
||||||
public Object selectRole() {
|
public Object selectRole() {
|
||||||
return userManageService.selectRole();
|
return userManageService.selectRole();
|
||||||
|
|||||||
@@ -25,4 +25,8 @@ public interface UserManageService {
|
|||||||
ResponseData selectRole();
|
ResponseData selectRole();
|
||||||
|
|
||||||
ResponseData selectPermission();
|
ResponseData selectPermission();
|
||||||
|
|
||||||
|
ResponseData updateUser(SysUserDTO userDTO);
|
||||||
|
|
||||||
|
ResponseData updateRole(SysRoleDTO roleDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,4 +120,16 @@ public class UserManageServiceImpl implements UserManageService {
|
|||||||
}
|
}
|
||||||
return ResponseData.create().data(vos).success();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,45 @@
|
|||||||
/>
|
/>
|
||||||
</a-form-item>
|
</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-form-item>
|
||||||
<a-button type="primary" :loading="loading">保存</a-button>
|
<a-button type="primary" :loading="loading">保存</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -101,7 +139,55 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
selected(role) {
|
selected(role) {
|
||||||
this.selectedRole = Object.assign({}, 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() {
|
getRoles() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user