diff --git a/src/main/java/com/xuxd/kafka/console/beans/vo/SysPermissionVO.java b/src/main/java/com/xuxd/kafka/console/beans/vo/SysPermissionVO.java new file mode 100644 index 0000000..1c7eb92 --- /dev/null +++ b/src/main/java/com/xuxd/kafka/console/beans/vo/SysPermissionVO.java @@ -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 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; + } +} diff --git a/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java b/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java index f10074d..a9c5639 100644 --- a/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java +++ b/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java @@ -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(); + } } diff --git a/src/main/java/com/xuxd/kafka/console/service/UserManageService.java b/src/main/java/com/xuxd/kafka/console/service/UserManageService.java index a6677e5..2b7aafc 100644 --- a/src/main/java/com/xuxd/kafka/console/service/UserManageService.java +++ b/src/main/java/com/xuxd/kafka/console/service/UserManageService.java @@ -21,4 +21,6 @@ public interface UserManageService { ResponseData addRole(SysRoleDTO roleDTO); ResponseData addUser(SysUserDTO userDTO); + + ResponseData selectPermission(); } diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java index dc85b96..793f19a 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java @@ -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 queryWrapper = new QueryWrapper<>(); + + List permissionDOS = permissionMapper.selectList(queryWrapper); + List vos = new ArrayList<>(); + Map posMap = new HashMap<>(); + Map voMap = new HashMap<>(); + + Iterator 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(); + } } diff --git a/src/main/resources/logback-test.xml b/src/main/resources/logback-test.xml index cf8f74a..7783f53 100644 --- a/src/main/resources/logback-test.xml +++ b/src/main/resources/logback-test.xml @@ -3,9 +3,9 @@ - + - + diff --git a/ui/src/utils/api.js b/ui/src/utils/api.js index 31b747f..09d5b09 100644 --- a/ui/src/utils/api.js +++ b/ui/src/utils/api.js @@ -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", + }, }; \ No newline at end of file diff --git a/ui/src/views/user/Permission.vue b/ui/src/views/user/Permission.vue new file mode 100644 index 0000000..a18f84e --- /dev/null +++ b/ui/src/views/user/Permission.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/ui/src/views/user/UserManage.vue b/ui/src/views/user/UserManage.vue index 3cd1f78..9720a9d 100644 --- a/ui/src/views/user/UserManage.vue +++ b/ui/src/views/user/UserManage.vue @@ -2,24 +2,22 @@
- - - - + + + - - +