栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot +mybatis plus 实现权限管理模块(RBAC)----仅后端

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot +mybatis plus 实现权限管理模块(RBAC)----仅后端

 首先创建项目,在pom文件中导入相关依赖,集成mybatis plus,刷新依赖,



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.3.RELEASE
         
    
    com.qcby.boot
    jiucai
    0.0.1-SNAPSHOT
    jiucai
    boot项目框架演示
    
        1.8
    
    

        
            org.springframework.boot
            spring-boot-starter
            
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        

        
        
        
            org.springframework.boot
            spring-boot-starter-web
        




        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        

        
            mysql
            mysql-connector-java
            runtime
        

        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.2
        

        
        
        
        
        
        

        
            org.projectlombok
            lombok
            true
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


创建yml文件或者编写properties文件

yml编写

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:/
@Service("sysUserService")
public class SysUserServiceImpl extends ServiceImpl implements SysUserService {
    @Resource
    private RefUserRoleDao refUserRoleDao;

    @Override
    public ResultJson listAll(PageWeb pageWeb) {
        Page page = new Page<>(pageWeb.getPageNum(), pageWeb.getPageSize());
        QueryWrapper queryWrapper = new QueryWrapper<>();
        IPage pageInfo = this.page(page, queryWrapper);
        return ResultJson.ok(PageWeb.build(pageInfo));
    }

    @Override
    public ResultJson login(SysUser sysUser) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_name", sysUser.getUserName());
        queryWrapper.eq("password", sysUser.getPassword());
        List userList = this.baseMapper.selectList(queryWrapper);

        if (userList.size() == 1) {
            return ResultJson.ok("登录成功", userList);
        }
        return ResultJson.error("登陆失败");
    }

    @Override
    public boolean register(SysUser sysUser) {
        if (sysUser.getAgainPassword().equals(sysUser.getPassword())) {
            return this.save(sysUser);
        }
        return false;
    }

    @Override
    public boolean setRole(Long userId, List roleIdList) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        this.refUserRoleDao.delete(queryWrapper);
        int flag = 0;
        for (Long roleId : roleIdList) {
            RefUserRole refUserRole = new RefUserRole();
            refUserRole.setRoleId(roleId);
            refUserRole.setUserId(userId);
            flag = this.refUserRoleDao.insert(refUserRole);
        }
        return flag == 1;
    }

    @Override
    public ResultJson selectByUserId(Long userId) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);

       List> roleNameList= this.refUserRoleDao.selectByUserId(userId);
       List list=new ArrayList<>();
        for (Map map : roleNameList) {
            Iterator it =map.entrySet().iterator();
            while (it.hasNext()){
                Map.Entry entry = (Map.Entry) it.next();
                list.add(entry.getValue().toString());
            }

        }
        return ResultJson.ok(list);
    }
}

SysRoleServiceimpl

package com.qcby.jiucai_rbac.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.jiucai_rbac.common.web.PageWeb;
import com.qcby.jiucai_rbac.common.web.ResultJson;
import com.qcby.jiucai_rbac.entity.RefRoleMenu;
import com.qcby.jiucai_rbac.entity.SysRole;
import com.qcby.jiucai_rbac.mapper.RefRoleMenuDao;
import com.qcby.jiucai_rbac.mapper.SysRoleDao;
import com.qcby.jiucai_rbac.service.SysRoleService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


@Service("sysRoleService")
public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService {

    @Resource
    private RefRoleMenuDao refRoleMenuDao;

    @Override
    public ResultJson listAll(PageWeb pageWeb) {
        Page page = new Page<>(pageWeb.getPageNum(), pageWeb.getPageSize());
        QueryWrapper queryWrapper = new QueryWrapper<>();
        IPage pageInfo = this.page(page, queryWrapper);
        return ResultJson.ok(PageWeb.build(pageInfo));

    }

    @Override
    public boolean setMenu(Long roleId, List menuIdList) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("role_id", roleId);
        this.refRoleMenuDao.delete(queryWrapper);
        int flag = 0;
        for (Long menuId : menuIdList) {
            RefRoleMenu refRloeMenu = new RefRoleMenu();
            refRloeMenu.setRoleId(roleId);
            refRloeMenu.setMenuId(menuId);
            flag = this.refRoleMenuDao.insert(refRloeMenu);
        }
        return flag == 1;
    }

    @Override
    public ResultJson selectByRoleId(Long roleId) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("role_id", roleId);

        List> menuNameList = this.refRoleMenuDao.selectByRoleId(roleId);
        List list = new ArrayList<>();
        for (Map map : menuNameList) {
            Iterator it = map.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry entry = (Map.Entry) it.next();
                list.add(entry.getValue().toString());
            }

        }
        return ResultJson.ok(list);
    }
}

SysMenuServiceimpl

package com.qcby.jiucai_rbac.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.jiucai_rbac.common.web.PageWeb;
import com.qcby.jiucai_rbac.common.web.ResultJson;
import com.qcby.jiucai_rbac.entity.SysMenu;
import com.qcby.jiucai_rbac.mapper.SysMenuDao;
import com.qcby.jiucai_rbac.service.SysMenuService;
import org.springframework.stereotype.Service;

import java.util.List;


@Service("sysMenuService")
public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService {
     @Override
    public ResultJson listAll(PageWeb pageWeb) {
        Page page = new Page<>(pageWeb.getPageNum(), pageWeb.getPageSize());
        QueryWrapper queryWrapper = new QueryWrapper<>();
        IPage pageInfo = this.page(page, queryWrapper);
        return ResultJson.ok(PageWeb.build(pageInfo));
    }

    @Override
    public ResultJson menuTree() {
         List menuList=this.list();
         QueryWrapper queryWrapper=new QueryWrapper<>();
         queryWrapper.eq("menu_parent_id",0);
         List firstLevelMenuList=this.baseMapper.selectList(queryWrapper);
        for (SysMenu sysMenu : firstLevelMenuList) {
            getChildList(sysMenu,menuList);
        }
        return ResultJson.ok(firstLevelMenuList);
    }

    private SysMenu getChildList(SysMenu sysMenu, List menuList) {
        for (SysMenu menu : menuList) {
            if (menu.getMenuParentId().equals(sysMenu.getId())) {
                sysMenu.getChildList().add(getChildList(menu, menuList));
            }
        }
        return sysMenu;
    }
}

利用递归实现菜单树

  public ResultJson menuTree() {
         List menuList=this.list();
         QueryWrapper queryWrapper=new QueryWrapper<>();
         queryWrapper.eq("menu_parent_id",0);
         List firstLevelMenuList=this.baseMapper.selectList(queryWrapper);
        for (SysMenu sysMenu : firstLevelMenuList) {
            getChildList(sysMenu,menuList);
        }
        return ResultJson.ok(firstLevelMenuList);
    }

    private SysMenu getChildList(SysMenu sysMenu, List menuList) {
        for (SysMenu menu : menuList) {
            if (menu.getMenuParentId().equals(sysMenu.getId())) {
                sysMenu.getChildList().add(getChildList(menu, menuList));
            }
        }
        return sysMenu;
    }
}

忘记讲了项目中用到的的统一返回结构封装---ResultJson的编写,以及项目中的权限验证和登录拦截器的介绍,下期文章讲解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号