Java之后台权限表相关实现

本文介绍了一个具体的MySQL权限表的设计方案,包括表结构、字段含义及关联的POJO实体类和服务实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql之table表

DROP TABLE IF EXISTS `auth_priority`;
CREATE TABLE `auth_priority` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '权限ID',
  `priority_code` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '权限编号',
  `priority_name` varchar(10) COLLATE utf8_bin NOT NULL COMMENT '权限名称',
  `priority_type` varchar(1) COLLATE utf8_bin NOT NULL COMMENT '权限类型,根目录:G,模块:D,目录:M,菜单:C,按钮:F',
  `icon` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '菜单图标',
  `order_num` int(11) NOT NULL COMMENT '排序',
  `path` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '路由地址',
  `parent_id` int(10) DEFAULT NULL COMMENT '父权限ID',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态,1启用,0.禁用',
  `is_del` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除(0:否,1:是)',
  `creater` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '添加人',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  `modifier` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '修改人',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `component` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '组件路径',
  `hidden` tinyint(1) NOT NULL COMMENT '是否隐藏(0否1是)',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `parent_id_index` (`parent_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='权限表';

pojo实体类

@TableName("auth_priority")
@ApiModel(value="Priority对象", description="权限表")
public class Priority extends BaseEntity {

    private static final long serialVersionUID = -8116456288413154528L;

    @TableId(type = IdType.AUTO)
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @ApiModelProperty(value = "权限编号")
    private String priorityCode;

    @ApiModelProperty(value = "权限名称")
    private String priorityName;

    @ApiModelProperty(value = "权限类型,模块:module,目录:directory,菜单:menu,按钮:button")
    private String priorityType;

    @ApiModelProperty(value = "菜单图标")
    private String icon;

    @ApiModelProperty(value = "排序")
    private Integer orderNum;

    @ApiModelProperty(value = "路由地址")
    private String path;

    @ApiModelProperty(value = "父权限ID")
    private Integer parentId;

    @ApiModelProperty(value = "状态,1启用,0.禁用")
    private Integer status;

    @ApiModelProperty(value = "是否删除(0:否,1:是)")
    private Integer isDel;

    @ApiModelProperty(value = "添加人")
    private String creater;

    @ApiModelProperty(value = "添加时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "修改人")
    private String modifier;

    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;

    public String getPriorityCode() {
        return priorityCode;
    }

    public void setPriorityCode(String priorityCode) {
        this.priorityCode = priorityCode;
    }

    public String getPriorityName() {
        return priorityName;
    }

    public void setPriorityName(String priorityName) {
        this.priorityName = priorityName;
    }

    public String getPriorityType() {
        return priorityType;
    }

    public void setPriorityType(String priorityType) {
        this.priorityType = priorityType;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getIsDel() {
        return isDel;
    }

    public void setIsDel(Integer isDel) {
        this.isDel = isDel;
    }

    public String getCreater() {
        return creater;
    }

    public void setCreater(String creater) {
        this.creater = creater;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public String getModifier() {
        return modifier;
    }

    public void setModifier(String modifier) {
        this.modifier = modifier;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
}

ServiceImpl类

/**
 * 根据角色id获取权限
 * @param roleId
 */
public List<PriorityVO> selectPriorsByRoleId(Long roleId) {
    //先获取根目录
    List<Priority> list = baseMapper.selectList(
            Wrappers.<Priority>lambdaQuery()
                    .eq(Priority::getIsDel,StatusEnum.STATUS_NO.getCode())
                    .eq(Priority::getParentId, NumberConstant.NUMBER_ZERO));
    //获取子菜单
    List<PriorityVO> vos = list.stream().map(po -> {
        PriorityVO vo = po2Vo(po);
        getChildren(vo);
        return vo;
    }).collect(Collectors.toList());
    return vos;
}

/**
 * 根据父菜单获取子菜单
 * @param vo
 */
private void getChildren(PriorityVO vo){
    //获取当前的子菜单
    List<Priority> list = baseMapper.selectList(
            Wrappers.<Priority>lambdaQuery()
                    .eq(Priority::getParentId,vo.getId())
                    .eq(Priority::getStatus,StatusEnum.STATUS_YES.getCode()));
    List<PriorityVO> vos = list.stream().map(p->{
        PriorityVO vop = po2Vo(p);
        getChildren(vop);
        return vop;
    }).collect(Collectors.toList());
    vo.setChildren(vos);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值