权限分配问题

1、权限数据库设计:

五张表实现权限分配
用户表、角色表、菜单表、用户角色关系表、菜单角色关系表
思路:给角色分配菜单、给用户分配角色
资源中会给到.sql脚本

2、难点设计:

因为菜单采用的树形表所以需要去递归遍历给出递归遍历过程,其余的CRUD就不写啦

    /**
     * 使用递归方法建菜单
     *
     * @param treeNodes
     * @return
     */
    public List<PermissionShow> build2(List<PermissionShow> treeNodes) {
        //创建list集合,用于数据最终封装
        List<PermissionShow> trees = new ArrayList<>();
        //把所有菜单list集合遍历,得到顶层菜单 pid=0菜单,设置level是1
        for (PermissionShow treeNode : treeNodes) {
            //得到顶层菜单 pid=0菜单
            if ("0".equals(treeNode.getParentId())) {
                //根据顶层菜单,向里面进行查询子菜单,封装到finalNode里面
                trees.add(findChildren2(treeNode, treeNodes));
            }
        }
        return trees;
    }
 /**
     * 递归查找子节点
     *
     * @param treeNodes
     * @return
     */
    private PermissionShow findChildren2(PermissionShow treeNode, List<PermissionShow> treeNodes) {
        //1 因为向一层菜单里面放二层菜单,二层里面还要放三层,把对象初始化
        treeNode.setChildren(new ArrayList<PermissionShow>());
        //2 遍历所有菜单list集合,进行判断比较,比较id和pid值是否相同
        for (PermissionShow node : treeNodes) {
            //判断 id和pid值是否相同
            if (treeNode.getPermissionId().equals(node.getParentId())) {

                //把查询出来的子菜单放到父菜单里面
                treeNode.getChildren().add(findChildren2(node, treeNodes));
            }
        }
        return treeNode;
    }

都有哪些接口可以给大家罗列

package com.museum.controller.api;

import com.alibaba.fastjson.JSONObject;
import com.museum.base.BaseResponse;
import com.museum.entity.DO.User;
import com.museum.entity.DTO.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;


@Api(tags = "用户服务(注册、登陆、CRUD)")
public interface UserAPI {
    /**
     * 注册
     * @return
     */
    @ApiOperation("用户注册")
    @PostMapping("register")
    BaseResponse<JSONObject> userRegister(@RequestBody @ApiParam(name = "用户注册",value = "每个字段都是必填!!",required = true)
                                                  UserRegister userRegister);
    /**
     * 注册
     * @return
     */
    @ApiOperation("用户登陆")
    @PostMapping("login")
    BaseResponse<JSONObject> userLogin(HttpServletRequest request, @RequestBody @ApiParam(name = "登陆",value = "每个字段都必填!!",required = true)
                                               UserLogin userLogin);

    /**
     * 根据token获取用户信息
     * @param request
     * @return
     */
    @ApiOperation("根据token获取用户信息")
    @GetMapping("getUserInfo")
    BaseResponse<JSONObject>getMessage(HttpServletRequest request);

    /**
     * 退出登陆
     * @return
     */
    @ApiOperation("退出登陆")
    @PostMapping("logout")
    BaseResponse<JSONObject>logout(HttpServletRequest request);

    /**
     * 根据token获取用户菜单
     * @return
     */
    @ApiOperation("获取用户菜单")
    @GetMapping("getMenu")
    BaseResponse<JSONObject>getMenu(HttpServletRequest request);

    /**
     * 根据token获取用户个人信息
     * @return
     */
//    @ApiOperation("获取用户菜单")
//    @Post
    /**
     * 注册 用户名和密码登陆
     * @return
     */
    @ApiOperation("用户登陆")
    @PostMapping("loginById")
    BaseResponse<JSONObject> userLoginByUserName(HttpServletRequest request, @RequestBody @ApiParam(name = "登陆",value = "每个字段都必填!!",required = true)
            UserLoginByName userLogin);
    /**
     * 添加用户
     * @return
     */
    @ApiOperation("添加用户")
    @PutMapping("addUser")
    BaseResponse<JSONObject> AddUser(@RequestBody @ApiParam(name = "添加用户") UserAdd userAdd);
    /**
     * 查询所有用户
     * @return
     */
    @ApiOperation("查询所有用户")
    @GetMapping("getAllUser")
    BaseResponse<JSONObject> getAllUser();
    /**
     * 根据用户的userId 删除用户 同时删除关联的user_role表
     * @return
     */
    @ApiOperation("根据用户ID删除用户")
    @DeleteMapping("deleteUser/{userId}")
    BaseResponse<JSONObject> deleteId(@PathVariable("userId") String userId);
    /**
     * 查询所有用户
     * @return
     */
    @ApiOperation("条件分页查询")
    @PostMapping("pageUserCondition/{current}/{limit}")
    BaseResponse<JSONObject> getAllUser(@PathVariable long current, @PathVariable long limit,
                                        @RequestBody(required = false )UserQuery userQuery);
    /**
     * 修改用户
     * @return
     */
    @ApiOperation("修改用户")
    @PutMapping("/updateUser")
    BaseResponse<JSONObject> updateUser(@RequestBody User user);
}

package com.museum.controller.api;

import com.alibaba.fastjson.JSONObject;
import com.museum.base.BaseResponse;
import com.museum.entity.DTO.role.RoleAdd;
import com.museum.entity.DTO.role.RoleUpdate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;


@Api(tags = "权限-角色管理")
public interface RoleApI {

    /**
     * 查询所有角色
     * @return
     */
    @ApiOperation("查询所有角色")
    @GetMapping("getAllRole/{current}/{limit}")
    BaseResponse<JSONObject> getAllRole(@PathVariable("current")Integer current, @PathVariable("limit")Integer limit);
    /**
     * 增加角色
     * @return
     */
    @ApiOperation("添加角色")
    @PutMapping("addRole")
    @Transactional
    BaseResponse<JSONObject>addRole(@RequestBody RoleAdd roleAdd);
    /**
     * 删除角色
     *  同时删除角色对应的表中 role_permission 相互对应的字段
     *  如果这个角色 分配在了用户上 就不允许删除对应的 查询user_role 表
     * @return
     */
    @Transactional
    @ApiOperation("删除角色")
    @DeleteMapping("deleteRole")
    BaseResponse<JSONObject>deleteRole(String roleId);

    /**
     * 修改角色权限
     * @param roleUpdate
     * @return
     */
    @ApiOperation(value = "修改角色")
    @PutMapping("/update")
    BaseResponse<JSONObject> doAssign(@RequestBody RoleUpdate roleUpdate);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值