mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	refactor: 重构系统路由设计
This commit is contained in:
		@@ -1,74 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package top.charles7c.continew.admin.auth.model.resp;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 元数据信息
 | 
			
		||||
 *
 | 
			
		||||
 * @author Charles7c
 | 
			
		||||
 * @since 2023/2/26 22:51
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@Schema(description = "元数据信息")
 | 
			
		||||
public class MetaResp implements Serializable {
 | 
			
		||||
 | 
			
		||||
    @Serial
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 菜单标题
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "菜单标题", example = "用户管理")
 | 
			
		||||
    private String locale;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 菜单图标
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "菜单图标", example = "user")
 | 
			
		||||
    private String icon;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "排序", example = "1")
 | 
			
		||||
    private Integer order;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否隐藏
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否隐藏", example = "false")
 | 
			
		||||
    private Boolean hideInMenu;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否缓存
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否缓存", example = "false")
 | 
			
		||||
    private Boolean ignoreCache;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否需要登录才能访问
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否需要登录才能访问", example = "false")
 | 
			
		||||
    private Boolean requiresAuth = true;
 | 
			
		||||
}
 | 
			
		||||
@@ -16,16 +16,14 @@
 | 
			
		||||
 | 
			
		||||
package top.charles7c.continew.admin.auth.model.resp;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonInclude;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonInclude;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 路由信息
 | 
			
		||||
 *
 | 
			
		||||
@@ -40,6 +38,18 @@ public class RouteResp implements Serializable {
 | 
			
		||||
    @Serial
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 标题
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "标题", example = "用户管理")
 | 
			
		||||
    private String title;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 类型
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "类型", example = "2")
 | 
			
		||||
    private Integer type;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 路由地址
 | 
			
		||||
     */
 | 
			
		||||
@@ -59,10 +69,46 @@ public class RouteResp implements Serializable {
 | 
			
		||||
    private String component;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 元数据
 | 
			
		||||
     * 重定向地址
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "元数据")
 | 
			
		||||
    private MetaResp meta;
 | 
			
		||||
    @Schema(description = "重定向地址")
 | 
			
		||||
    private String redirect;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 图标
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "图标", example = "user")
 | 
			
		||||
    private String icon;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否外链
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否外链", example = "false")
 | 
			
		||||
    private Boolean isExternal;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否缓存
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否缓存", example = "false")
 | 
			
		||||
    private Boolean isCache;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否隐藏
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "是否隐藏", example = "false")
 | 
			
		||||
    private Boolean isHidden;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 权限标识
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "权限标识", example = "system:user:list")
 | 
			
		||||
    private String permission;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "排序", example = "1")
 | 
			
		||||
    private Integer sort;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 子路由列表
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,6 @@ import lombok.RequiredArgsConstructor;
 | 
			
		||||
import me.zhyd.oauth.model.AuthUser;
 | 
			
		||||
import org.springframework.security.crypto.password.PasswordEncoder;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import top.charles7c.continew.admin.auth.model.resp.MetaResp;
 | 
			
		||||
import top.charles7c.continew.admin.auth.model.resp.RouteResp;
 | 
			
		||||
import top.charles7c.continew.admin.auth.service.LoginService;
 | 
			
		||||
import top.charles7c.continew.admin.auth.service.PermissionService;
 | 
			
		||||
@@ -166,16 +165,16 @@ public class LoginServiceImpl implements LoginService {
 | 
			
		||||
            tree.setParentId(m.getParentId());
 | 
			
		||||
            tree.setName(m.getTitle());
 | 
			
		||||
            tree.setWeight(m.getSort());
 | 
			
		||||
            tree.putExtra("type", m.getType().getValue());
 | 
			
		||||
            tree.putExtra("path", m.getPath());
 | 
			
		||||
            tree.putExtra("name", m.getName());
 | 
			
		||||
            tree.putExtra("component", m.getComponent());
 | 
			
		||||
            MetaResp metaResp = new MetaResp();
 | 
			
		||||
            metaResp.setLocale(m.getTitle());
 | 
			
		||||
            metaResp.setIcon(m.getIcon());
 | 
			
		||||
            metaResp.setIgnoreCache(Boolean.FALSE.equals(m.getIsCache()));
 | 
			
		||||
            metaResp.setHideInMenu(m.getIsHidden());
 | 
			
		||||
            metaResp.setOrder(m.getSort());
 | 
			
		||||
            tree.putExtra("meta", metaResp);
 | 
			
		||||
            tree.putExtra("redirect", m.getRedirect());
 | 
			
		||||
            tree.putExtra("icon", m.getIcon());
 | 
			
		||||
            tree.putExtra("isExternal", m.getIsExternal());
 | 
			
		||||
            tree.putExtra("isCache", m.getIsCache());
 | 
			
		||||
            tree.putExtra("isHidden", m.getIsHidden());
 | 
			
		||||
            tree.putExtra("permission", m.getPermission());
 | 
			
		||||
        });
 | 
			
		||||
        return BeanUtil.copyToList(treeList, RouteResp.class);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -16,16 +16,14 @@
 | 
			
		||||
 | 
			
		||||
package top.charles7c.continew.admin.system.model.entity;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
 | 
			
		||||
import top.charles7c.continew.admin.common.enums.MenuTypeEnum;
 | 
			
		||||
import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 菜单实体
 | 
			
		||||
 *
 | 
			
		||||
@@ -69,6 +67,11 @@ public class MenuDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private String component;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 重定向地址
 | 
			
		||||
     */
 | 
			
		||||
    private String redirect;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 图标
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -16,21 +16,18 @@
 | 
			
		||||
 | 
			
		||||
package top.charles7c.continew.admin.system.model.resp;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
 | 
			
		||||
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
 | 
			
		||||
import top.charles7c.continew.admin.common.enums.MenuTypeEnum;
 | 
			
		||||
import top.charles7c.continew.starter.extension.crud.annotation.TreeField;
 | 
			
		||||
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
 | 
			
		||||
import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 菜单信息
 | 
			
		||||
 *
 | 
			
		||||
@@ -54,25 +51,31 @@ public class MenuResp extends BaseResp {
 | 
			
		||||
    private String title;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 图标
 | 
			
		||||
     * 上级菜单 ID
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "图标", example = "user")
 | 
			
		||||
    @ExcelProperty(value = "图标")
 | 
			
		||||
    private String icon;
 | 
			
		||||
    @Schema(description = "上级菜单 ID", example = "1000")
 | 
			
		||||
    private Long parentId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序
 | 
			
		||||
     * 类型
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "排序", example = "1")
 | 
			
		||||
    @ExcelProperty(value = "排序")
 | 
			
		||||
    private Integer sort;
 | 
			
		||||
    @Schema(description = "类型(1:目录;2:菜单;3:按钮)", type = "Integer", allowableValues = {"1", "2", "3"}, example = "2")
 | 
			
		||||
    @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class)
 | 
			
		||||
    private MenuTypeEnum type;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 权限标识
 | 
			
		||||
     * 路由地址
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "权限标识", example = "system:user:list")
 | 
			
		||||
    @ExcelProperty(value = "权限标识")
 | 
			
		||||
    private String permission;
 | 
			
		||||
    @Schema(description = "路由地址", example = "/system/user")
 | 
			
		||||
    @ExcelProperty(value = "路由地址")
 | 
			
		||||
    private String path;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 组件名称
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "组件名称", example = "User")
 | 
			
		||||
    @ExcelProperty(value = "组件名称")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 组件路径
 | 
			
		||||
@@ -82,11 +85,18 @@ public class MenuResp extends BaseResp {
 | 
			
		||||
    private String component;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 状态
 | 
			
		||||
     * 重定向地址
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1")
 | 
			
		||||
    @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class)
 | 
			
		||||
    private DisEnableStatusEnum status;
 | 
			
		||||
    @Schema(description = "重定向地址")
 | 
			
		||||
    @ExcelProperty(value = "重定向地址")
 | 
			
		||||
    private String redirect;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 图标
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "图标", example = "user")
 | 
			
		||||
    @ExcelProperty(value = "图标")
 | 
			
		||||
    private String icon;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否外链
 | 
			
		||||
@@ -110,29 +120,23 @@ public class MenuResp extends BaseResp {
 | 
			
		||||
    private Boolean isHidden;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 路由地址
 | 
			
		||||
     * 权限标识
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "路由地址", example = "/system/user")
 | 
			
		||||
    @ExcelProperty(value = "路由地址")
 | 
			
		||||
    private String path;
 | 
			
		||||
    @Schema(description = "权限标识", example = "system:user:list")
 | 
			
		||||
    @ExcelProperty(value = "权限标识")
 | 
			
		||||
    private String permission;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 组件名称
 | 
			
		||||
     * 排序
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "组件名称", example = "User")
 | 
			
		||||
    @ExcelProperty(value = "组件名称")
 | 
			
		||||
    private String name;
 | 
			
		||||
    @Schema(description = "排序", example = "1")
 | 
			
		||||
    @ExcelProperty(value = "排序")
 | 
			
		||||
    private Integer sort;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 类型
 | 
			
		||||
     * 状态
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "类型(1:目录;2:菜单;3:按钮)", type = "Integer", allowableValues = {"1", "2", "3"}, example = "2")
 | 
			
		||||
    @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class)
 | 
			
		||||
    private MenuTypeEnum type;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 上级菜单 ID
 | 
			
		||||
     */
 | 
			
		||||
    @Schema(description = "上级菜单 ID", example = "1000")
 | 
			
		||||
    private Long parentId;
 | 
			
		||||
    @Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1")
 | 
			
		||||
    @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class)
 | 
			
		||||
    private DisEnableStatusEnum status;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user