package org.ruoyi.system.domain;
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
import lombok.Data;
|
import lombok.EqualsAndHashCode;
|
import org.ruoyi.common.core.constant.Constants;
|
import org.ruoyi.common.core.constant.UserConstants;
|
import org.ruoyi.common.core.utils.StringUtils;
|
import org.ruoyi.core.domain.BaseEntity;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 菜单权限表 sys_menu
|
*
|
* @author Lion Li
|
*/
|
|
@Data
|
@EqualsAndHashCode(callSuper = true)
|
@TableName("SYS_MENU")
|
public class SysMenu extends BaseEntity {
|
|
@TableId(value = "MENU_ID")
|
private Long menuId;
|
|
@TableField("PARENT_ID")
|
private Long parentId;
|
|
@TableField("MENU_NAME")
|
private String menuName;
|
|
@TableField("ORDER_NUM")
|
private Integer orderNum;
|
|
@TableField("PATH")
|
private String path;
|
|
@TableField("COMPONENT")
|
private String component;
|
|
@TableField("QUERY_PARAM")
|
private String queryParam;
|
|
@TableField("IS_FRAME")
|
private String isFrame;
|
|
@TableField("IS_CACHE")
|
private String isCache;
|
|
@TableField("MENU_TYPE")
|
private String menuType;
|
|
@TableField("VISIBLE")
|
private String visible;
|
|
@TableField("STATUS")
|
private String status;
|
|
@TableField("PERMS")
|
private String perms;
|
|
@TableField("ICON")
|
private String icon;
|
|
@TableField("REMARK")
|
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);
|
}
|
|
/**
|
* 是否为parent_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[]{"", "", "", "/"});
|
}
|
}
|