whycxzp
2021-09-24 b7226efbe9f5fdcfe33b152baf91eac6ab44b30a
更新角色,菜单接口
10个文件已修改
1个文件已添加
253 ■■■■ 已修改文件
src/main/java/com/whyc/controller/PermissionController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/RoleController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/RoleMenuController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/RoleMenuMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/Menu.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/RoleMenu.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/User.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/UserRole.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/RoleMenuService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/config/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/RoleMenuMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/PermissionController.java
@@ -16,6 +16,10 @@
@RequestMapping("permission")
@Api(tags = "权限")
@Slf4j
@Deprecated
/**
 * 不独立存在,依附于角色菜单
 */
public class PermissionController {
    @Resource
src/main/java/com/whyc/controller/RoleController.java
@@ -35,27 +35,7 @@
    @Autowired
    private RoleMenuService roleMenuService;
    /**=============用户与角色================**/
    @GetMapping("userWithNoRole")
    @ApiOperation(value = "查询未分配角色的用户")
    public List<User> getUserWithNoRole(){
        return userRoleService.getUserWithNoRole();
    }
    @GetMapping("userWithRole")
    @ApiOperation(value = "查询分配角色的用户")
    public List<UserRole> getUserWithRole(){
        return userRoleService.getUserWithRole();
    }
    @GetMapping("userWithRoleMap")
    @ApiOperation(value = "查询分配角色的用户Map")
    public Map<String,List<UserRole>> getUserWithRoleMap(){
        return userRoleService.getUserWithRoleMap();
    }
    @GetMapping("roleAll")
    @GetMapping("all")
    @ApiOperation(value = "查询所有角色")
    public List<Role> getRoleAll(){
        return roleService.getAll();
@@ -65,12 +45,6 @@
    @ApiOperation(value = "新增角色")
    public boolean add(@RequestBody Role role){
        return roleService.add(role);
    }
    @PostMapping("batch")
    @ApiOperation(value = "批量新增角色")
    public boolean addBatch(@RequestBody List<Role> roles){
        return roleService.addBatch(roles);
    }
    /**
src/main/java/com/whyc/controller/RoleMenuController.java
New file
@@ -0,0 +1,46 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.Menu;
import com.whyc.pojo.RoleMenu;
import com.whyc.service.RoleMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * 角色和菜单是一对一的
 * 用户和角色是一对一的
 * 每个用户登录后,会获得对应的菜单列表
 * 而管理员可以设置和获取所有用户的菜单列表
 * 而非管理员只能看到自己的
 */
@RequestMapping("roleMenu")
@RestController
@Api(tags = "角色菜单")
public class RoleMenuController {
    @Resource
    private RoleMenuService service;
    @GetMapping("menuByRoleId")
    @ApiOperation(value = "查询角色对应的菜单")
    public Response getMenuByRoleId(@RequestParam Integer roleId){
        List<Menu> roleMenus = service.getMenuByRoleId(roleId);
        return new Response().set(1,roleMenus);
    }
    public Response getMenu(@RequestParam Integer roleId){
        List<Menu> roleMenus = service.getMenuByRoleId(roleId);
        return new Response().set(1,roleMenus);
    }
}
src/main/java/com/whyc/mapper/RoleMenuMapper.java
@@ -11,4 +11,6 @@
public interface RoleMenuMapper extends CustomMapper<RoleMenu> {
    List<Menu> getUserMenu(Integer id);
    List<Menu> getMenuByRoleId(Integer roleId);
}
src/main/java/com/whyc/pojo/Menu.java
@@ -1,10 +1,14 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.ibatis.type.Alias;
import java.util.List;
/**
 * 用户菜单
 * 菜单和权限一一对应
 */
@Alias("Menu")
@TableName( schema = "`db_experiment`",value = "`tb_menu`")
@@ -14,9 +18,15 @@
    /**菜单的路径*/
    private String url;
    /**级别:1级,2级菜单...*/
    @Deprecated
    private String level;
    /**父id*/
    private Integer parentId;
    /**排序*/
    private Integer order;
    @TableField(exist = false)
    private List<Menu> menuList;
    public Integer getId() {
        return id;
@@ -50,6 +60,14 @@
        this.level = level;
    }
    public Integer getParentId() {
        return parentId;
    }
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }
    public Integer getOrder() {
        return order;
    }
@@ -57,4 +75,12 @@
    public void setOrder(Integer order) {
        this.order = order;
    }
    public List<Menu> getMenuList() {
        return menuList;
    }
    public void setMenuList(List<Menu> menuList) {
        this.menuList = menuList;
    }
}
src/main/java/com/whyc/pojo/RoleMenu.java
@@ -1,5 +1,6 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.ibatis.type.Alias;
@@ -10,8 +11,15 @@
@TableName( schema = "`db_experiment`",value = "tb_role_menu")
public class RoleMenu {
    private Integer id;
    private Integer roleId;
    private Integer menuId;
    //private Integer roleId;
    @TableField("roleId")
    private Role role;
    //private Integer menuId;
    @TableField("menuId")
    private Menu menu;
    private Integer status;
    public Integer getId() {
        return id;
@@ -21,19 +29,27 @@
        this.id = id;
    }
    public Integer getRoleId() {
        return roleId;
    public Integer getStatus() {
        return status;
    }
    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getMenuId() {
        return menuId;
    public Role getRole() {
        return role;
    }
    public void setMenuId(Integer menuId) {
        this.menuId = menuId;
    public void setRole(Role role) {
        this.role = role;
    }
    public Menu getMenu() {
        return menu;
    }
    public void setMenu(Menu menu) {
        this.menu = menu;
    }
}
src/main/java/com/whyc/pojo/User.java
@@ -14,8 +14,17 @@
    private String name;
    private String password;
    private String salt;
    /**真实名称*/
    private String formalName;
    /**所属站点/区域*/
    private Integer stationId;
    private String phone;
    /**角色*/
    private Integer roleId;
    private String comment;
    @JsonFormat(locale = "zh",timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    private Integer status;
    public User() {
    }
@@ -58,6 +67,46 @@
        this.salt = salt;
    }
    public String getFormalName() {
        return formalName;
    }
    public void setFormalName(String formalName) {
        this.formalName = formalName;
    }
    public Integer getStationId() {
        return stationId;
    }
    public void setStationId(Integer stationId) {
        this.stationId = stationId;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public Integer getRoleId() {
        return roleId;
    }
    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public Date getCreateTime() {
        return createTime;
    }
@@ -66,4 +115,11 @@
        this.createTime = createTime;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}
src/main/java/com/whyc/pojo/UserRole.java
@@ -9,6 +9,7 @@
 */
@Alias("UserRole")
@TableName( schema = "`db_experiment`",value = "tb_user_role")
@Deprecated
public class UserRole {
    private Integer id;
src/main/java/com/whyc/service/RoleMenuService.java
@@ -1,11 +1,16 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.dto.Response;
import com.whyc.mapper.RoleMenuMapper;
import com.whyc.pojo.Menu;
import com.whyc.pojo.RoleMenu;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 角色-菜单
@@ -19,4 +24,31 @@
    public List<Menu> getUserMenu(Integer id) {
        return mapper.getUserMenu(id);
    }
    public List<Menu> getMenuByRoleId(Integer roleId) {
        List<Menu> menuList = mapper.getMenuByRoleId(roleId);
        for (int i = 0; i < menuList.size(); i++) {
            Integer parentId = menuList.get(i).getParentId();
            if(parentId !=0){
                //将这个menu插入到parent中
                for (int j = 0; j < menuList.size(); j++) {
                    if(menuList.get(j).getId()==parentId){
                        List<Menu> menuListTemp = menuList.get(j).getMenuList();
                        if(menuListTemp==null) {
                            menuListTemp = new LinkedList<>();
                        }
                        menuListTemp.add(menuList.get(i));
                        menuList.get(j).setMenuList(menuListTemp);
                        menuList.remove(i);
                        i--;
                        break;
                    }
                }
            }
        }
        return menuList;
    }
}
src/main/resources/config/application.yml
@@ -37,7 +37,7 @@
      #数据库大写下划线转换
      capital-mode: true
      #mp2.3+ 全局表前缀 tb_
      table-prefix: tb_
      #table-prefix: tb_
      #刷新mapper 调试神器
#      refresh-mapper: true
  configuration:
src/main/resources/mapper/RoleMenuMapper.xml
@@ -2,8 +2,26 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whyc.mapper.RoleMenuMapper" >
    <resultMap id="Map_Menu" type="Menu" autoMapping="true">
            <id property="id" column="id"/>
            <result property="name" column="name"/>
            <result property="url" column="url"/>
            <result property="parentId" column="parent_id"/>
            <result property="order" column="order"/>
    </resultMap>
    <select id="getUserMenu" resultType="com.whyc.pojo.Menu">
    </select>
    <select id="getMenuByRoleId" resultMap="Map_Menu">
        SELECT
            m.*
        FROM
            db_experiment.tb_role_menu rm,
            db_experiment.tb_menu m
        WHERE
            rm.menu_id = m.id AND rm.role_id = #{roleId}
        AND
            rm.status=1
    </select>
</mapper>