|
|
|
@ -21,6 +21,8 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 菜单管理控制器
|
|
|
|
|
*
|
|
|
|
|
* @Author: 落亦-
|
|
|
|
|
* @Date: 2019/11/22 15:35
|
|
|
|
|
*/
|
|
|
|
@ -37,119 +39,97 @@ public class MenuController {
|
|
|
|
|
@Autowired
|
|
|
|
|
private IRoleService roleService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加载首页左侧菜单数据
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return 返回树形结构的菜单数据
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadIndexLeftMenuJson")
|
|
|
|
|
public DataGridView loadIndexLeftMenuJson(PermissionVo permissionVo){
|
|
|
|
|
//查询所有菜单
|
|
|
|
|
QueryWrapper<Permission> queryWrapper = new QueryWrapper<Permission>();
|
|
|
|
|
//设置查询条件
|
|
|
|
|
//查询的必须是菜单,不能是crud的权限
|
|
|
|
|
queryWrapper.eq("type",Constast.TYPE_MENU);
|
|
|
|
|
//菜单必须可用
|
|
|
|
|
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
|
|
|
|
|
|
|
|
|
|
//获得用户 判断用户的类型
|
|
|
|
|
public DataGridView loadIndexLeftMenuJson(PermissionVo permissionVo) {
|
|
|
|
|
// 查询所有菜单
|
|
|
|
|
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq("type", Constast.TYPE_MENU); // 只查询菜单
|
|
|
|
|
queryWrapper.eq("available", Constast.AVAILABLE_TRUE); // 菜单必须可用
|
|
|
|
|
|
|
|
|
|
// 获取当前用户信息
|
|
|
|
|
User user = (User) WebUtils.getSession().getAttribute("user");
|
|
|
|
|
List<Permission> list = null;
|
|
|
|
|
if (user.getType().equals(Constast.USER_TYPE_SUPER)){
|
|
|
|
|
//用户类型为超级管理员
|
|
|
|
|
List<Permission> list;
|
|
|
|
|
|
|
|
|
|
if (user.getType().equals(Constast.USER_TYPE_SUPER)) {
|
|
|
|
|
// 超级管理员查询所有菜单
|
|
|
|
|
list = permissionService.list(queryWrapper);
|
|
|
|
|
}else {
|
|
|
|
|
//用户类型为 普通用户
|
|
|
|
|
//根据用户ID+角色+权限去查询
|
|
|
|
|
} else {
|
|
|
|
|
// 普通用户根据角色和权限查询菜单
|
|
|
|
|
Integer userId = user.getId();
|
|
|
|
|
//1.根据用户ID查询角色
|
|
|
|
|
List<Integer> currentUserRoleIds = roleService.queryUserRoleIdsByUid(userId);
|
|
|
|
|
//2.根据角色ID查询菜单ID和权限ID
|
|
|
|
|
//使用set去重
|
|
|
|
|
List<Integer> currentUserRoleIds = roleService.queryUserRoleIdsByUid(userId); // 获取用户角色ID
|
|
|
|
|
Set<Integer> pids = new HashSet<>();
|
|
|
|
|
for (Integer rid : currentUserRoleIds) {
|
|
|
|
|
//根据角色ID查询菜单ID和权限ID
|
|
|
|
|
List<Integer> permissionIds = roleService.queryRolePermissionIdsByRid(rid);
|
|
|
|
|
//将菜单ID和权限ID放入Set中去重
|
|
|
|
|
pids.addAll(permissionIds);
|
|
|
|
|
pids.addAll(roleService.queryRolePermissionIdsByRid(rid)); // 根据角色ID查询权限ID
|
|
|
|
|
}
|
|
|
|
|
//3.根据角色ID查询权限
|
|
|
|
|
if (pids.size()>0){
|
|
|
|
|
queryWrapper.in("id",pids);
|
|
|
|
|
if (!pids.isEmpty()) {
|
|
|
|
|
queryWrapper.in("id", pids); // 根据权限ID查询菜单
|
|
|
|
|
list = permissionService.list(queryWrapper);
|
|
|
|
|
}else {
|
|
|
|
|
list=new ArrayList<>();
|
|
|
|
|
} else {
|
|
|
|
|
list = new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
|
|
|
|
|
// 构造树节点列表
|
|
|
|
|
List<TreeNode> 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));
|
|
|
|
|
Boolean spread = p.getOpen().equals(Constast.OPEN_TRUE);
|
|
|
|
|
treeNodes.add(new TreeNode(p.getId(), p.getPid(), p.getTitle(), p.getIcon(), p.getHref(), spread));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//构造层级关系
|
|
|
|
|
List<TreeNode> list2 = TreeNodeBuilder.build(treeNodes,1);
|
|
|
|
|
return new DataGridView(list2);
|
|
|
|
|
|
|
|
|
|
// 构造层级菜单树
|
|
|
|
|
return new DataGridView(TreeNodeBuilder.build(treeNodes, 1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************菜单管理*********************************/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加载菜单左边的菜单树
|
|
|
|
|
* 加载菜单管理左侧菜单树
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 返回树形结构的菜单数据
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadMenuManagerLeftTreeJson")
|
|
|
|
|
public DataGridView loadMenuManagerLeftTreeJson(PermissionVo permissionVo){
|
|
|
|
|
|
|
|
|
|
public DataGridView loadMenuManagerLeftTreeJson(PermissionVo permissionVo) {
|
|
|
|
|
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq("type",Constast.TYPE_MENU);
|
|
|
|
|
//查询出所有的菜单,存放进list中
|
|
|
|
|
List<Permission> list = permissionService.list(queryWrapper);
|
|
|
|
|
queryWrapper.eq("type", Constast.TYPE_MENU); // 只查询菜单
|
|
|
|
|
List<Permission> list = permissionService.list(queryWrapper); // 查询所有菜单
|
|
|
|
|
List<TreeNode> 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));
|
|
|
|
|
Boolean open = menu.getOpen() == 1; // 判断是否展开
|
|
|
|
|
treeNodes.add(new TreeNode(menu.getId(), menu.getPid(), menu.getTitle(), open));
|
|
|
|
|
}
|
|
|
|
|
return new DataGridView(treeNodes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询所有菜单数据
|
|
|
|
|
* 查询所有菜单
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 返回分页后的菜单数据
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadAllMenu")
|
|
|
|
|
public DataGridView loadAllMenu(PermissionVo permissionVo){
|
|
|
|
|
IPage<Permission> page = new Page<>(permissionVo.getPage(),permissionVo.getLimit());
|
|
|
|
|
//进行模糊查询
|
|
|
|
|
public DataGridView loadAllMenu(PermissionVo permissionVo) {
|
|
|
|
|
IPage<Permission> page = new Page<>(permissionVo.getPage(), permissionVo.getLimit());
|
|
|
|
|
QueryWrapper<Permission> 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());
|
|
|
|
|
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); // 分页查询
|
|
|
|
|
return new DataGridView(page.getTotal(), page.getRecords());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 添加菜单
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("addMenu")
|
|
|
|
|
public ResultObj addMenu(PermissionVo permissionVo){
|
|
|
|
|
public ResultObj addMenu(PermissionVo permissionVo) {
|
|
|
|
|
try {
|
|
|
|
|
//设置添加类型为 menu
|
|
|
|
|
permissionVo.setType(Constast.TYPE_MENU);
|
|
|
|
|
permissionVo.setType(Constast.TYPE_MENU); // 设置类型为菜单
|
|
|
|
|
permissionService.save(permissionVo);
|
|
|
|
|
return ResultObj.ADD_SUCCESS;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
@ -159,31 +139,27 @@ public class MenuController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加载排序码
|
|
|
|
|
* @return
|
|
|
|
|
* 加载菜单的最大排序码
|
|
|
|
|
* @return 返回最大排序码
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadMenuMaxOrderNum")
|
|
|
|
|
public Map<String,Object> loadMenuMaxOrderNum(){
|
|
|
|
|
Map<String,Object> map = new HashMap<String,Object>();
|
|
|
|
|
public Map<String, Object> loadMenuMaxOrderNum() {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.orderByDesc("ordernum");
|
|
|
|
|
IPage<Permission> page = new Page<>(1,1);
|
|
|
|
|
List<Permission> list = permissionService.page(page,queryWrapper).getRecords();
|
|
|
|
|
if (list.size()>0){
|
|
|
|
|
map.put("value",list.get(0).getOrdernum()+1);
|
|
|
|
|
}else {
|
|
|
|
|
map.put("value",1);
|
|
|
|
|
}
|
|
|
|
|
IPage<Permission> page = new Page<>(1, 1);
|
|
|
|
|
List<Permission> list = permissionService.page(page, queryWrapper).getRecords();
|
|
|
|
|
map.put("value", list.isEmpty() ? 1 : list.get(0).getOrdernum() + 1);
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新菜单
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("updateMenu")
|
|
|
|
|
public ResultObj updateMenu(PermissionVo permissionVo){
|
|
|
|
|
public ResultObj updateMenu(PermissionVo permissionVo) {
|
|
|
|
|
try {
|
|
|
|
|
permissionService.updateById(permissionVo);
|
|
|
|
|
return ResultObj.UPDATE_SUCCESS;
|
|
|
|
@ -194,31 +170,26 @@ public class MenuController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查当前菜单是否有子菜单
|
|
|
|
|
* 检查菜单是否有子菜单
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 返回是否有子菜单
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("checkMenuHasChildrenNode")
|
|
|
|
|
public Map<String,Object> checkMenuHasChildrenNode(PermissionVo permissionVo){
|
|
|
|
|
Map<String,Object> map = new HashMap<String, Object>();
|
|
|
|
|
public Map<String, Object> checkMenuHasChildrenNode(PermissionVo permissionVo) {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq("pid",permissionVo.getId());
|
|
|
|
|
List<Permission> list = permissionService.list(queryWrapper);
|
|
|
|
|
if (list.size()>0){
|
|
|
|
|
map.put("value",true);
|
|
|
|
|
}else {
|
|
|
|
|
map.put("value",false);
|
|
|
|
|
}
|
|
|
|
|
queryWrapper.eq("pid", permissionVo.getId()); // 查询是否有子菜单
|
|
|
|
|
map.put("value", !permissionService.list(queryWrapper).isEmpty());
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除菜单
|
|
|
|
|
* @param permissionVo
|
|
|
|
|
* @return
|
|
|
|
|
* @return 操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("deleteMenu")
|
|
|
|
|
public ResultObj deleteMenu(PermissionVo permissionVo){
|
|
|
|
|
public ResultObj deleteMenu(PermissionVo permissionVo) {
|
|
|
|
|
try {
|
|
|
|
|
permissionService.removeById(permissionVo.getId());
|
|
|
|
|
return ResultObj.DELETE_SUCCESS;
|
|
|
|
@ -227,6 +198,4 @@ public class MenuController {
|
|
|
|
|
return ResultObj.DELETE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|