用户权限管理系统动态展示菜单列表

用户权限管理系统动态展示菜单列表

一、需求分析

功能需求分析

  • 此次我们要实现用户权限管理系统动态展示菜单列表

    • 动态展示:根据用户登录的角色身份的不同,进行动态的展示列表菜单

    根据上述简单流程图,我们可以看出,用户在登陆时会进行一个权限校验,判断你的身份唯一标识(Admin/User),根据身份标识的不同,动态的展示菜单列表(用户管理、角色管理、菜单管理)

    代码需求分析

  • 要用代码实现上述功能需求分析

    首先需要一个UserDTO这样的实体类

    实体类需求:

    • User基本登录的信息(用户名,密码)
    • User角色的身份表示
    • User的菜单列表
/**
 * UserDTO用来接受前端登录时传递的用户名和密码
 * @author 永不遗憾&象牙塔
 */
@Data
public class UserDTO {
   
    private String username;
    private String password;
    /**昵称*/
    private String nickname;
    private String avatar;
    private String token;
    /**把当前登录用户的角色以及他的菜单项带出来*/
    private String role;
    private List<Menu> menus;
    private Boolean flag;
    private String msg;
}

二、代码实现

实体类

  • User
/**
 * @author 永不遗憾&象牙塔
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("sys_user")
/**@Alias("User")*/
public class User implements Serializable {
   
  @TableId(type = IdType.AUTO)
  private Integer id;
 private String username;
  private String password;
  private String nickname;
  private String gender;
  private String phone;
  private String email;
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 @TableField(fill = FieldFill.INSERT)
  private Date createTime;
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;
  /**
  * 1代表有效
  * 0代表无效
  * */
  private String state;
  private String  role;
}

  • Menu
/**
 * @author 永不遗憾&象牙塔
 */
@Data
@TableName(value = "sys_menu")
@ToString
public class Menu {
   
  @TableId(type = IdType.AUTO)
  private Integer id;
  private String name;
  /**访问路径*/
  private String path;
  /**图标*/
  private String icon;
  /** 描述*/
  private String description;

  /**在数据表中没有children这个字段,这个在做菜单的时候会用到,所以使用exist=false忽略*/
  @TableField(exist = false)
  private List<Menu> children;

  private Integer pid;
  /**这样处理的主要目的是java对带有下划线的字段不识别,所以改为驼峰形式*/
  @TableField(value = "page_path")
  private String pagePath;


}

  • Role
/**
 * @author 永不遗憾&象牙塔
 */
@Data
@TableName(value = "sys_role")
public class Role {
   
  @TableId(value = "id",type = IdType.AUTO)
  private Integer id;
  private String name;
  private String description;
  private String flag;

}
  • RoleMenu
/**
 * @author 永不遗憾&象牙塔
 */
@Data
@TableName(value = "sys_role_menu")
public class RoleMenu {
   
  private Integer roleId;
  private Integer menuId;
}

持久层

  • Mapper
    • MenuMapper
/**
 * @author 永不遗憾&象牙塔
 */
public interface MenuMapper extends BaseMapper<Menu> {
   
  /**根据角色唯一标识flag查找角色id*/
  @Select("select id from sys_role where flag=#{flag}")
  Integer selectByflag(@Param("flag") String role);
}
  • RoleMapper
/**
 * @author 永不遗憾&象牙塔
 */
public interface RoleMapper extends BaseMapper<Role> {
   
  /**根据角色唯一标识flag查找角色id*/
  @Select("select id from sys_role where flag=#{flag}")
  Integer selectByflag(@Param("flag") String role);
}
  • RoleMenuMapper
/**
 * @author 永不遗憾&象牙塔
 */
public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
   
  /**根据角色id删除角色菜单数据*/
  @Delete("delete from sys_role_menu where role_id=#{roleId}")
  int deleteByRoleId(@Param("roleId") Integer roleId);

  /**根据角色id查找菜单id*/
  @Select("select menu_Id from sys_role_menu where role_id=#{roleId}")
  List<Integer> selectByRoleId(@Param("roleId") Integer</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值