From 9ed5b521d613edb51b160cca931ee680019e2896 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 07 三月 2023 22:26:13 +0800 Subject: [PATCH] fix 修复 用户密码暴露问题 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 101 insertions(+), 14 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java index d8bb1a7..b02d74f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java @@ -1,15 +1,17 @@ package com.ruoyi.system.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.ruoyi.common.mybatis.core.domain.TreeEntity; +import com.ruoyi.common.core.constant.Constants; +import com.ruoyi.common.core.constant.UserConstants; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.mybatis.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; +import java.util.ArrayList; +import java.util.List; /** * 鑿滃崟鏉冮檺琛� sys_menu @@ -20,7 +22,7 @@ @Data @EqualsAndHashCode(callSuper = true) @TableName("sys_menu") -public class SysMenu extends TreeEntity<SysMenu> { +public class SysMenu extends BaseEntity { /** * 鑿滃崟ID @@ -29,28 +31,28 @@ private Long menuId; /** + * 鐖惰彍鍗旾D + */ + private Long parentId; + + /** * 鑿滃崟鍚嶇О */ - @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 50, message = "鑿滃崟鍚嶇О闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") private String menuName; /** * 鏄剧ず椤哄簭 */ - @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") private Integer orderNum; /** * 璺敱鍦板潃 */ - @Size(min = 0, max = 200, message = "璺敱鍦板潃涓嶈兘瓒呰繃{max}涓瓧绗�") private String path; /** * 缁勪欢璺緞 */ - @Size(min = 0, max = 200, message = "缁勪欢璺緞涓嶈兘瓒呰繃{max}涓瓧绗�") private String component; /** @@ -71,7 +73,6 @@ /** * 绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛� */ - @NotBlank(message = "鑿滃崟绫诲瀷涓嶈兘涓虹┖") private String menuType; /** @@ -87,8 +88,6 @@ /** * 鏉冮檺瀛楃涓� */ - @JsonInclude(JsonInclude.Include.NON_NULL) - @Size(min = 0, max = 100, message = "鏉冮檺鏍囪瘑闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") private String perms; /** @@ -101,4 +100,92 @@ */ private String remark; + /** + * 鐖惰彍鍗曞悕绉� + */ + @TableField(exist = false) + private String parentName; + + /** + * 瀛愯彍鍗� + */ + @TableField(exist = false) + private List<SysMenu> children = new ArrayList<>(); + + /** + * 鑾峰彇璺敱鍚嶇О + */ + public String getRouteName() { + String routerName = StringUtils.capitalize(path); + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 + if (isMenuFrame()) { + routerName = StringUtils.EMPTY; + } + return routerName; + } + + /** + * 鑾峰彇璺敱鍦板潃 + */ + public String getRouterPath() { + String routerPath = this.path; + // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡 + if (getParentId() != 0L && isInnerLink()) { + routerPath = innerLinkReplaceEach(routerPath); + } + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 + if (0L == getParentId() && UserConstants.TYPE_DIR.equals(getMenuType()) + && UserConstants.NO_FRAME.equals(getIsFrame())) { + routerPath = "/" + this.path; + } + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級 + else if (isMenuFrame()) { + routerPath = "/"; + } + return routerPath; + } + + /** + * 鑾峰彇缁勪欢淇℃伅 + */ + public String getComponentInfo() { + String component = UserConstants.LAYOUT; + if (StringUtils.isNotEmpty(this.component) && !isMenuFrame()) { + component = this.component; + } else if (StringUtils.isEmpty(this.component) && getParentId() != 0L && isInnerLink()) { + component = UserConstants.INNER_LINK; + } else if (StringUtils.isEmpty(this.component) && isParentView()) { + component = UserConstants.PARENT_VIEW; + } + return component; + } + + /** + * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞� + */ + public boolean isMenuFrame() { + return getParentId() == 0L && UserConstants.TYPE_MENU.equals(menuType) && isFrame.equals(UserConstants.NO_FRAME); + } + + /** + * 鏄惁涓哄唴閾剧粍浠� + */ + public boolean isInnerLink() { + return isFrame.equals(UserConstants.NO_FRAME) && StringUtils.ishttp(path); + } + + /** + * 鏄惁涓簆arent_view缁勪欢 + */ + public boolean isParentView() { + return getParentId() != 0L && UserConstants.TYPE_DIR.equals(menuType); + } + + /** + * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲 + */ + public static String innerLinkReplaceEach(String path) { + return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, "."}, + new String[]{"", "", "", "/"}); + } } -- Gitblit v1.9.3