新增 加载全部菜单接口

This commit is contained in:
萌狼蓝天 2024-09-23 21:27:52 +08:00
parent 12887cc169
commit 0e7f9a7d2c
11 changed files with 378 additions and 142 deletions

View File

@ -0,0 +1,198 @@
/*
Navicat Premium Data Transfer
Source Server :
Source Server Type : MySQL
Source Server Version : 50743 (5.7.43-log)
Source Host : localhost:3306
Source Schema : harmonylife
Target Server Type : MySQL
Target Server Version : 50743 (5.7.43-log)
File Encoding : 65001
Date: 23/09/2024 17:23:08
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for system_action
-- ----------------------------
DROP TABLE IF EXISTS `system_action`;
CREATE TABLE `system_action` (
`id` bigint(11) NOT NULL COMMENT '动作id',
`tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '动作标签 例如 add',
`describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '动作标题 例如 增加',
`default_check` tinyint(4) NULL DEFAULT NULL COMMENT '0 false 1 true',
`status` tinyint(4) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '动作表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_action
-- ----------------------------
INSERT INTO `system_action` VALUES (1, 'add', '新增', 0, 1);
INSERT INTO `system_action` VALUES (2, 'import', '导入', 0, 1);
INSERT INTO `system_action` VALUES (3, 'get', '详情', 0, 1);
INSERT INTO `system_action` VALUES (4, 'update', '更新', 0, 1);
INSERT INTO `system_action` VALUES (5, 'delete', '删除', 0, 1);
INSERT INTO `system_action` VALUES (6, 'export', '导出', 0, 1);
-- ----------------------------
-- Table structure for system_menu
-- ----------------------------
DROP TABLE IF EXISTS `system_menu`;
CREATE TABLE `system_menu` (
`id` bigint(11) NOT NULL COMMENT 'id',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '显示的中文名称',
`key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'key',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称',
`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名称',
`redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '重定向',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标名称',
`status` tinyint(4) NULL DEFAULT NULL COMMENT '状态 0 未启用 -1 删除 1正常使用',
`parent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级',
`order` int(11) NULL DEFAULT NULL COMMENT '排序,数字越小,越靠前',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_menu
-- ----------------------------
INSERT INTO `system_menu` VALUES (1, '首页', NULL, 'index', 'BasicLayout', '/dashboard/workplace', '', 1, NULL, 1);
INSERT INTO `system_menu` VALUES (2, '仪表盘', 'dashboard', 'dashboard', 'RouteView', NULL, 'dashboard', 1, 'index', 1);
INSERT INTO `system_menu` VALUES (3, '分析页', 'analysis', NULL, NULL, NULL, NULL, NULL, NULL, 1);
INSERT INTO `system_menu` VALUES (4, '系统管理', 'system', 'system', 'PageView', NULL, 'setting', NULL, 'index', 1);
INSERT INTO `system_menu` VALUES (5, '用户管理', 'userList', 'userList', NULL, NULL, NULL, NULL, 'system', 1);
INSERT INTO `system_menu` VALUES (6, '菜单管理', 'menuList', 'menuList', NULL, NULL, NULL, NULL, 'system', 1);
-- ----------------------------
-- Table structure for system_permission
-- ----------------------------
DROP TABLE IF EXISTS `system_permission`;
CREATE TABLE `system_permission` (
`id` bigint(11) NOT NULL COMMENT '权限id',
`permission_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限id文本型',
`permission_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称(菜单名称)',
`status` tinyint(4) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_permission
-- ----------------------------
INSERT INTO `system_permission` VALUES (1, 'dashboard', '数据中心', 1);
INSERT INTO `system_permission` VALUES (2, 'exception', '异常管理', 1);
INSERT INTO `system_permission` VALUES (3, 'result', '结果管理', 1);
INSERT INTO `system_permission` VALUES (4, 'profile', '个人信息管理', 1);
INSERT INTO `system_permission` VALUES (5, 'table', '表格管理', 1);
INSERT INTO `system_permission` VALUES (6, 'form', '表单管理', 1);
INSERT INTO `system_permission` VALUES (7, 'order', '订单管理', 1);
INSERT INTO `system_permission` VALUES (8, 'permission', '权限管理', 1);
INSERT INTO `system_permission` VALUES (9, 'role', '角色管理', 1);
INSERT INTO `system_permission` VALUES (10, 'user', '用户管理', 1);
-- ----------------------------
-- Table structure for system_permission_action
-- ----------------------------
DROP TABLE IF EXISTS `system_permission_action`;
CREATE TABLE `system_permission_action` (
`id` bigint(11) NOT NULL COMMENT 'id',
`action_tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '动作id 文本型',
`permission_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限id 文本型',
`status` tinyint(4) NULL DEFAULT NULL COMMENT '状态',
`uid` bigint(20) NULL DEFAULT NULL COMMENT '用户id Long',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_permission_action
-- ----------------------------
INSERT INTO `system_permission_action` VALUES (1, 'add', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (2, 'import', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (3, 'get', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (4, 'update', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (5, 'delete', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (6, 'export', 'role', 1, 1);
INSERT INTO `system_permission_action` VALUES (7, 'add', 'permission', 1, 1);
INSERT INTO `system_permission_action` VALUES (8, 'import', 'permission', 1, 1);
INSERT INTO `system_permission_action` VALUES (9, 'get', 'permission', 1, 1);
INSERT INTO `system_permission_action` VALUES (10, 'update', 'permission', 1, 1);
INSERT INTO `system_permission_action` VALUES (11, 'delete', 'permission', 1, 1);
INSERT INTO `system_permission_action` VALUES (12, 'export', 'permission', 1, 1);
-- ----------------------------
-- Table structure for system_role
-- ----------------------------
DROP TABLE IF EXISTS `system_role`;
CREATE TABLE `system_role` (
`id` bigint(11) NOT NULL COMMENT '角色id role_id',
`role_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称',
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id文本型',
`status` tinyint(4) NULL DEFAULT NULL,
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_role
-- ----------------------------
INSERT INTO `system_role` VALUES (1, '超级管理员', 'root', 1, '最高权限');
INSERT INTO `system_role` VALUES (2, '管理员', 'admin', 1, '管理权限');
INSERT INTO `system_role` VALUES (3, '机构', 'agent', 1, '使用权限');
-- ----------------------------
-- Table structure for system_role_permission
-- ----------------------------
DROP TABLE IF EXISTS `system_role_permission`;
CREATE TABLE `system_role_permission` (
`id` bigint(11) NOT NULL,
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '注意是文本型',
`permission_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '注意是文本型',
`status` tinyint(4) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_role_permission
-- ----------------------------
INSERT INTO `system_role_permission` VALUES (1, 'root', 'dashboard', 1);
INSERT INTO `system_role_permission` VALUES (2, 'root', 'exception', 1);
INSERT INTO `system_role_permission` VALUES (3, 'root', 'result', 1);
INSERT INTO `system_role_permission` VALUES (4, 'root', 'profile', 1);
INSERT INTO `system_role_permission` VALUES (5, 'root', 'table', 1);
INSERT INTO `system_role_permission` VALUES (6, 'root', 'form', 1);
INSERT INTO `system_role_permission` VALUES (7, 'root', 'order', 1);
INSERT INTO `system_role_permission` VALUES (8, 'root', 'permission', 1);
INSERT INTO `system_role_permission` VALUES (9, 'root', 'role', 1);
INSERT INTO `system_role_permission` VALUES (10, 'root', 'user', 1);
-- ----------------------------
-- Table structure for user_info
-- ----------------------------
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`id` bigint(11) NOT NULL COMMENT '用户uid',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称(用于显示,可以随意更改)',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名(登录使用的账号)',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像图片地址',
`status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态',
`telephone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`create_time` datetime NULL DEFAULT NULL COMMENT '注册时间',
`merchant_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户编号',
`deleted` tinyint(4) NULL DEFAULT NULL COMMENT '1 已删除 0未删除',
`role_id` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限id 文本类型',
`creator_id` int(11) NULL DEFAULT NULL COMMENT '创建者id 0 或者空为自己注册',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_info
-- ----------------------------
INSERT INTO `user_info` VALUES (1, '萌狼蓝天', 'xrilang', 'VomAhgnr1XAkMKzicqYxdCFBx0ooiXBN66Xq9XCWGJTsJgH3uLJVAVGkoZi2n1Ml', 'https://q1.qlogo.cn/g?b=qq&nk=3447902411&s=640', '1', NULL, NULL, '2024-09-21 22:31:02', NULL, 0, 'root', NULL);
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -122,6 +122,12 @@
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>1.5.8</version> <version>1.5.8</version>
</dependency> </dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,35 @@
package com.guaiguailang.harmony.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.guaiguailang.harmony.service.SystemService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Tag(name="系统相关接口")
@RequestMapping("/system")
public class SystemController {
@Autowired
private final SystemService systemService;
public SystemController(SystemService systemService) {
this.systemService = systemService;
}
@Operation(
summary = "菜单 加载",
description = "加载用户拥有的菜单",
tags = {"系统相关接口"}
)
@GetMapping("/menu")
public ResponseEntity getMenu() {
return ResponseEntity.ok(systemService.getMenu());
}
}

View File

@ -1,77 +1,18 @@
package com.guaiguailang.harmony.domain.entity; package com.guaiguailang.harmony.domain.entity;
import lombok.Data;
@Data
public class SystemMenu { public class SystemMenu {
private long id; private Long id;
private String title;
private String key; private String key;
private String name; private String name;
private String component; private String component;
private String redirect; private String redirect;
private String icon; private String icon;
private long status; private int status;
private String parent;
private int order;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComponent() {
return component;
}
public void setComponent(String component) {
this.component = component;
}
public String getRedirect() {
return redirect;
}
public void setRedirect(String redirect) {
this.redirect = redirect;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public long getStatus() {
return status;
}
public void setStatus(long status) {
this.status = status;
}
} }

View File

@ -1,47 +1,12 @@
package com.guaiguailang.harmony.domain.entity; package com.guaiguailang.harmony.domain.entity;
import lombok.Data;
@Data
public class SystemPermission { public class SystemPermission {
private long id; private Long id;
private String permissionId; private String permissionId;
private String permissionName; private String permissionName;
private long status; private int status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPermissionId() {
return permissionId;
}
public void setPermissionId(String permissionId) {
this.permissionId = permissionId;
}
public String getPermissionName() {
return permissionName;
}
public void setPermissionName(String permissionName) {
this.permissionName = permissionName;
}
public long getStatus() {
return status;
}
public void setStatus(long status) {
this.status = status;
}
} }

View File

@ -6,42 +6,6 @@ public class SystemRolePermission {
private long id; private long id;
private String roleId; private String roleId;
private String permissionId; private String permissionId;
private long status; private Long status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
public String getPermissionId() {
return permissionId;
}
public void setPermissionId(String permissionId) {
this.permissionId = permissionId;
}
public long getStatus() {
return status;
}
public void setStatus(long status) {
this.status = status;
}
} }

View File

@ -0,0 +1,21 @@
package com.guaiguailang.harmony.domain.vo;
import lombok.Data;
import java.util.List;
@Data
public class MenuVO {
private Long id;
private String title;
private String key;
private String name;
private String component;
private String redirect;
private String icon;
private int status;
private String parent;
private int order;
private List<MenuVO> children;
}

View File

@ -0,0 +1,11 @@
package com.guaiguailang.harmony.mapper;
import com.guaiguailang.harmony.domain.entity.SystemMenu;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SystemMapper {
List<SystemMenu> getAllMenus();
}

View File

@ -0,0 +1,7 @@
package com.guaiguailang.harmony.service;
import com.guaiguailang.harmony.domain.vo.ResponseResult;
public interface SystemService {
ResponseResult getMenu();
}

View File

@ -0,0 +1,66 @@
package com.guaiguailang.harmony.service.impl;
import com.guaiguailang.harmony.domain.entity.SystemMenu;
import com.guaiguailang.harmony.domain.vo.MenuVO;
import com.guaiguailang.harmony.domain.vo.ResponseResult;
import com.guaiguailang.harmony.mapper.SystemMapper;
import com.guaiguailang.harmony.service.SystemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class SystemServiceImpl implements SystemService {
private final SystemMapper systemMapper;
public SystemServiceImpl(SystemMapper systemMapper) {
this.systemMapper = systemMapper;
}
public ResponseResult getMenu() {
// 获取所有激活的状态菜单
List<SystemMenu> menus = systemMapper.getAllMenus();
Map<String, MenuVO> menuMap = new HashMap<>();
List<MenuVO> rootMenus = new ArrayList<>();
// 第一步将SystemMenu转换为MenuVO并存储在map中
for (SystemMenu menu : menus) {
MenuVO menuVO = new MenuVO();
menuVO.setId(menu.getId());
menuVO.setTitle(menu.getTitle());
menuVO.setKey(menu.getKey());
menuVO.setName(menu.getName());
menuVO.setComponent(menu.getComponent());
menuVO.setRedirect(menu.getRedirect());
menuVO.setIcon(menu.getIcon());
menuVO.setStatus(menu.getStatus());
menuVO.setOrder(menu.getOrder());
menuVO.setParent(menu.getParent());
menuMap.put(menu.getName(), menuVO);
}
// 第二步构建树形结构
for (MenuVO menuVO : menuMap.values()) {
String parentId = menuVO.getParent();
if (parentId == null) {
// 没有父菜单即为根菜单
rootMenus.add(menuVO);
} else {
// 查找父菜单并添加到其子菜单列表中
MenuVO parentMenuVO = menuMap.get(parentId);
if (parentMenuVO != null) {
if (parentMenuVO.getChildren() == null) {
parentMenuVO.setChildren(new ArrayList<>());
}
parentMenuVO.getChildren().add(menuVO);
}
}
}
return ResponseResult.success(rootMenus);
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.guaiguailang.harmony.mapper.SystemMapper">
<!-- 查询所有菜单 -->
<select id="getAllMenus" resultType="com.guaiguailang.harmony.domain.entity.SystemMenu">
SELECT id,
title,
`key`,
name,
component,
redirect,
icon,
status,
parent,
`order`
FROM system_menu
ORDER BY `order`
</select>
</mapper>