package com.yeqifu.sys.controller; 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.yeqifu.sys.common.*; import com.yeqifu.sys.entity.Dept; import com.yeqifu.sys.entity.Permission; import com.yeqifu.sys.entity.User; import com.yeqifu.sys.service.IDeptService; import com.yeqifu.sys.service.IPermissionService; import com.yeqifu.sys.service.IRoleService; import com.yeqifu.sys.service.IUserService; import com.yeqifu.sys.vo.DeptVo; import com.yeqifu.sys.vo.PermissionVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.*; /** * @Author: 落亦- * @Date: 2019/11/22 15:35 */ @RestController @RequestMapping("/menu") public class MenuController { @Autowired private IPermissionService permissionService; @Autowired private IUserService userService; @Autowired private IRoleService roleService; @RequestMapping("loadIndexLeftMenuJson") public DataGridView loadIndexLeftMenuJson(PermissionVo permissionVo){ //查询所有菜单 QueryWrapper queryWrapper = new QueryWrapper(); //设置查询条件 //查询的必须是菜单,不能是crud的权限 queryWrapper.eq("type",Constast.TYPE_MENU); //菜单必须可用 queryWrapper.eq("available", Constast.AVAILABLE_TRUE); //获得用户 判断用户的类型 User user = (User) WebUtils.getSession().getAttribute("user"); List list = null; if (user.getType().equals(Constast.USER_TYPE_SUPER)){ //用户类型为超级管理员 list = permissionService.list(queryWrapper); }else { //用户类型为 普通用户 //根据用户ID+角色+权限去查询 Integer userId = user.getId(); //1.根据用户ID查询角色 List currentUserRoleIds = roleService.queryUserRoleIdsByUid(userId); //2.根据角色ID查询菜单ID和权限ID //使用set去重 Set pids = new HashSet<>(); for (Integer rid : currentUserRoleIds) { //根据角色ID查询菜单ID和权限ID List permissionIds = roleService.queryRolePermissionIdsByRid(rid); //将菜单ID和权限ID放入Set中去重 pids.addAll(permissionIds); } //3.根据角色ID查询权限 if (pids.size()>0){ queryWrapper.in("id",pids); list = permissionService.list(queryWrapper); }else { list=new ArrayList<>(); } } List treeNodes = new ArrayList(); for (Permission p : list) { Integer id =p.getId(); Integer pid = p.getPid(); String title = p.getTitle(); String icon = p.getIcon(); String href = p.getHref(); Boolean spread = p.getOpen().equals(Constast.OPEN_TRUE)?true:false; treeNodes.add(new TreeNode(id,pid,title,icon,href,spread)); } //构造层级关系 List list2 = TreeNodeBuilder.build(treeNodes,1); return new DataGridView(list2); } /************************菜单管理*********************************/ /** * 加载菜单左边的菜单树 * @param permissionVo * @return */ @RequestMapping("loadMenuManagerLeftTreeJson") public DataGridView loadMenuManagerLeftTreeJson(PermissionVo permissionVo){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("type",Constast.TYPE_MENU); //查询出所有的菜单,存放进list中 List list = permissionService.list(queryWrapper); List treeNodes = new ArrayList<>(); //将菜单放入treeNodes中,组装成json for (Permission menu : list) { Boolean open = menu.getOpen()==1?true:false; treeNodes.add(new TreeNode(menu.getId(),menu.getPid(),menu.getTitle(),open)); } return new DataGridView(treeNodes); } /** * 查询所有菜单数据 * @param permissionVo * @return */ @RequestMapping("loadAllMenu") public DataGridView loadAllMenu(PermissionVo permissionVo){ IPage page = new Page<>(permissionVo.getPage(),permissionVo.getLimit()); //进行模糊查询 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(permissionVo.getId()!=null,"id",permissionVo.getId()).or().eq(permissionVo.getId()!=null,"pid",permissionVo.getId()); //只能查询菜单 queryWrapper.eq("type",Constast.TYPE_MENU); queryWrapper.like(StringUtils.isNotBlank(permissionVo.getTitle()),"title",permissionVo.getTitle()); queryWrapper.orderByAsc("ordernum"); //进行查询 permissionService.page(page,queryWrapper); //返回DataGridView return new DataGridView(page.getTotal(),page.getRecords()); } /** * 添加菜单 * @param permissionVo * @return */ @RequestMapping("addMenu") public ResultObj addMenu(PermissionVo permissionVo){ try { //设置添加类型为 menu permissionVo.setType(Constast.TYPE_MENU); permissionService.save(permissionVo); return ResultObj.ADD_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.ADD_ERROR; } } /** * 加载排序码 * @return */ @RequestMapping("loadMenuMaxOrderNum") public Map loadMenuMaxOrderNum(){ Map map = new HashMap(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("ordernum"); IPage page = new Page<>(1,1); List list = permissionService.page(page,queryWrapper).getRecords(); if (list.size()>0){ map.put("value",list.get(0).getOrdernum()+1); }else { map.put("value",1); } return map; } /** * 更新菜单 * @param permissionVo * @return */ @RequestMapping("updateMenu") public ResultObj updateMenu(PermissionVo permissionVo){ try { permissionService.updateById(permissionVo); return ResultObj.UPDATE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.UPDATE_ERROR; } } /** * 检查当前菜单是否有子菜单 * @param permissionVo * @return */ @RequestMapping("checkMenuHasChildrenNode") public Map checkMenuHasChildrenNode(PermissionVo permissionVo){ Map map = new HashMap(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("pid",permissionVo.getId()); List list = permissionService.list(queryWrapper); if (list.size()>0){ map.put("value",true); }else { map.put("value",false); } return map; } /** * 删除菜单 * @param permissionVo * @return */ @RequestMapping("deleteMenu") public ResultObj deleteMenu(PermissionVo permissionVo){ try { permissionService.removeById(permissionVo.getId()); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } }