mirror of https://gitee.com/maxjhandsome/pig
♻️ 重构代码 -> MenuController
This commit is contained in:
parent
5942d990ba
commit
ee3b2dce1a
|
@ -52,7 +52,6 @@ public class XssSecurityFilter extends OncePerRequestFilter {
|
|||
*/
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
||||
log.error("执行XSS过滤");
|
||||
XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper(request);
|
||||
filterChain.doFilter(xssRequest, response);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,9 @@
|
|||
package com.github.pig.admin.common.util;
|
||||
|
||||
|
||||
import com.github.pig.admin.model.dto.MenuTree;
|
||||
import com.github.pig.admin.model.dto.TreeNode;
|
||||
import com.github.pig.admin.model.entity.SysMenu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -90,4 +92,29 @@ public class TreeUtil {
|
|||
return treeNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过sysMenu创建树形节点
|
||||
*
|
||||
* @param menus
|
||||
* @param root
|
||||
* @return
|
||||
*/
|
||||
public static List<MenuTree> bulidTree(List<SysMenu> menus, int root) {
|
||||
List<MenuTree> trees = new ArrayList<MenuTree>();
|
||||
MenuTree node;
|
||||
for (SysMenu menu : menus) {
|
||||
node = new MenuTree();
|
||||
node.setId(menu.getMenuId());
|
||||
node.setParentId(menu.getParentId());
|
||||
node.setName(menu.getName());
|
||||
node.setUrl(menu.getUrl());
|
||||
node.setPath(menu.getPath());
|
||||
node.setCode(menu.getPermission());
|
||||
node.setLabel(menu.getName());
|
||||
node.setComponent(menu.getComponent());
|
||||
node.setIcon(menu.getIcon());
|
||||
trees.add(node);
|
||||
}
|
||||
return TreeUtil.bulid(trees, root);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,11 +26,11 @@ import com.github.pig.common.constant.CommonConstant;
|
|||
import com.github.pig.common.util.R;
|
||||
import com.github.pig.common.vo.MenuVO;
|
||||
import com.github.pig.common.web.BaseController;
|
||||
import com.xiaoleilu.hutool.collection.CollUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
|
@ -55,11 +55,22 @@ public class MenuController extends BaseController {
|
|||
|
||||
/**
|
||||
* 返回当前用户的树形菜单集合
|
||||
*
|
||||
* @return 当前用户的树形菜单
|
||||
*/
|
||||
@GetMapping(value = "/userMenu")
|
||||
public List<MenuTree> userMenu(){
|
||||
return sysMenuService.findUserMenuTree(getRole());
|
||||
public List<MenuTree> userMenu() {
|
||||
// 获取符合条件得菜单
|
||||
Set<MenuVO> all = new HashSet<>();
|
||||
getRole().forEach(roleName -> all.addAll(sysMenuService.findMenuByRoleName(roleName)));
|
||||
List<MenuTree> menuTreeList = new ArrayList<>();
|
||||
all.forEach(menuVo -> {
|
||||
if (CommonConstant.MENU.equals(menuVo.getType())) {
|
||||
menuTreeList.add(new MenuTree(menuVo));
|
||||
}
|
||||
});
|
||||
CollUtil.sort(menuTreeList, Comparator.comparingInt(MenuTree::getSort));
|
||||
return TreeUtil.bulid(menuTreeList, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,24 +82,9 @@ public class MenuController extends BaseController {
|
|||
public List<MenuTree> getTree() {
|
||||
SysMenu condition = new SysMenu();
|
||||
condition.setDelFlag(CommonConstant.STATUS_NORMAL);
|
||||
return getMenuTree(sysMenuService.selectList(new EntityWrapper<>(condition)), -1);
|
||||
return TreeUtil.bulidTree(sysMenuService.selectList(new EntityWrapper<>(condition)), -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回当前用户树形菜单集合
|
||||
*
|
||||
* @return 树形菜单
|
||||
*/
|
||||
@GetMapping("/userTree")
|
||||
public List<Integer> userTree() {
|
||||
List<MenuVO> menus = sysMenuService.findMenuByRoles(getRole());
|
||||
List<Integer> menuList = new ArrayList<>();
|
||||
for (MenuVO menuVo : menus) {
|
||||
menuList.add(menuVo.getMenuId());
|
||||
}
|
||||
return menuList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 返回角色的菜单集合
|
||||
*
|
||||
|
@ -144,22 +140,4 @@ public class MenuController extends BaseController {
|
|||
return new R<>(sysMenuService.updateMenuById(sysMenu));
|
||||
}
|
||||
|
||||
private List<MenuTree> getMenuTree(List<SysMenu> menus, int root) {
|
||||
List<MenuTree> trees = new ArrayList<MenuTree>();
|
||||
MenuTree node;
|
||||
for (SysMenu menu : menus) {
|
||||
node = new MenuTree();
|
||||
node.setId(menu.getMenuId());
|
||||
node.setParentId(menu.getParentId());
|
||||
node.setName(menu.getName());
|
||||
node.setUrl(menu.getUrl());
|
||||
node.setPath(menu.getPath());
|
||||
node.setCode(menu.getPermission());
|
||||
node.setLabel(menu.getName());
|
||||
node.setComponent(menu.getComponent());
|
||||
node.setIcon(menu.getIcon());
|
||||
trees.add(node);
|
||||
}
|
||||
return TreeUtil.bulid(trees, root);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper;
|
|||
import com.github.pig.admin.model.entity.SysMenu;
|
||||
import com.github.pig.common.vo.MenuVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -41,5 +42,6 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
|||
* @param role 角色名称
|
||||
* @return 菜单列表
|
||||
*/
|
||||
@Cacheable(value = "menu_details", key = "#role + '_menu'")
|
||||
List<MenuVO> findMenuByRoleName(@Param("role") String role);
|
||||
}
|
|
@ -42,14 +42,6 @@ public interface SysMenuService extends IService<SysMenu> {
|
|||
*/
|
||||
List<MenuVO> findMenuByRoleName(String role);
|
||||
|
||||
/**
|
||||
* 通过角色获取菜单权限列表
|
||||
*
|
||||
* @param roles 角色
|
||||
* @return 权限列表
|
||||
*/
|
||||
String[] findPermission(String[] roles);
|
||||
|
||||
/**
|
||||
* 级联删除菜单
|
||||
*
|
||||
|
@ -65,18 +57,4 @@ public interface SysMenuService extends IService<SysMenu> {
|
|||
* @return 成功、失败
|
||||
*/
|
||||
Boolean updateMenuById(SysMenu sysMenu);
|
||||
|
||||
/**
|
||||
* 返回角色的菜单
|
||||
* @param roleNames 角色
|
||||
* @return 菜单列表
|
||||
*/
|
||||
List<MenuTree> findUserMenuTree(List<String> roleNames);
|
||||
|
||||
/**
|
||||
* 返回多个角色的菜单
|
||||
* @param roleList 角色列表
|
||||
* @return 菜单列表
|
||||
*/
|
||||
List<MenuVO> findMenuByRoles(List<String> roleList);
|
||||
}
|
||||
|
|
|
@ -55,25 +55,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
return sysMenuMapper.findMenuByRoleName(role);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] findPermission(String[] roles) {
|
||||
Set<MenuVO> menuVoSet = new HashSet<>();
|
||||
for (String role : roles) {
|
||||
List<MenuVO> menuVos = findMenuByRoleName(role);
|
||||
menuVoSet.addAll(menuVos);
|
||||
}
|
||||
|
||||
Set<String> permissions = new HashSet<>();
|
||||
for (MenuVO menuVo : menuVoSet) {
|
||||
if (StringUtils.isNotEmpty(menuVo.getPermission())) {
|
||||
String permission = menuVo.getPermission();
|
||||
permissions.add(permission);
|
||||
}
|
||||
}
|
||||
|
||||
return permissions.toArray(new String[permissions.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(value = "menu_details", allEntries = true)
|
||||
public Boolean deleteMenu(Integer id) {
|
||||
|
@ -97,38 +78,4 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
public Boolean updateMenuById(SysMenu sysMenu) {
|
||||
return this.updateById(sysMenu);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回角色的菜单
|
||||
*
|
||||
* @param roleNames 角色
|
||||
* @return 菜单列表
|
||||
*/
|
||||
@Override
|
||||
public List<MenuTree> findUserMenuTree(List<String> roleNames) {
|
||||
// 获取符合条件得菜单
|
||||
Set<MenuVO> all = new HashSet<>();
|
||||
roleNames.forEach(roleName -> all.addAll(findMenuByRoleName(roleName)));
|
||||
List<MenuTree> menuTreeList = new ArrayList<>();
|
||||
all.forEach(menuVo -> {
|
||||
if (CommonConstant.MENU.equals(menuVo.getType())) {
|
||||
menuTreeList.add(new MenuTree(menuVo));
|
||||
}
|
||||
});
|
||||
CollUtil.sort(menuTreeList, Comparator.comparingInt(MenuTree::getSort));
|
||||
return TreeUtil.bulid(menuTreeList, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回多个角色的菜单
|
||||
*
|
||||
* @param roleNames 角色列表
|
||||
* @return 菜单列表
|
||||
*/
|
||||
@Override
|
||||
public List<MenuVO> findMenuByRoles(List<String> roleNames) {
|
||||
List<MenuVO> all = new ArrayList<>();
|
||||
roleNames.forEach(roleName -> all.addAll(findMenuByRoleName(roleName)));
|
||||
return all;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,12 +41,14 @@ import com.github.pig.common.util.Query;
|
|||
import com.github.pig.common.util.R;
|
||||
import com.github.pig.common.util.UserUtils;
|
||||
import com.github.pig.common.util.template.MobileMsgTemplate;
|
||||
import com.github.pig.common.vo.MenuVO;
|
||||
import com.github.pig.common.vo.SysRole;
|
||||
import com.github.pig.common.vo.UserVO;
|
||||
import com.xiaoleilu.hutool.collection.CollectionUtil;
|
||||
import com.xiaoleilu.hutool.util.RandomUtil;
|
||||
import com.xiaoleilu.hutool.util.StrUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -57,9 +59,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
|
@ -103,9 +103,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
}
|
||||
String[] roles = roleNames.toArray(new String[roleNames.size()]);
|
||||
userInfo.setRoles(roles);
|
||||
|
||||
//设置权限列表(menu.permission)
|
||||
String[] permissions = sysMenuService.findPermission(roles);
|
||||
userInfo.setPermissions(permissions);
|
||||
Set<MenuVO> menuVoSet = new HashSet<>();
|
||||
for (String role : roles) {
|
||||
List<MenuVO> menuVos = sysMenuService.findMenuByRoleName(role);
|
||||
menuVoSet.addAll(menuVos);
|
||||
}
|
||||
Set<String> permissions = new HashSet<>();
|
||||
for (MenuVO menuVo : menuVoSet) {
|
||||
if (StringUtils.isNotEmpty(menuVo.getPermission())) {
|
||||
String permission = menuVo.getPermission();
|
||||
permissions.add(permission);
|
||||
}
|
||||
}
|
||||
userInfo.setPermissions(permissions.toArray(new String[permissions.size()]));
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
|
@ -146,7 +158,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
dataScope.setIsOnly(true);
|
||||
dataScope.setDeptIds(getChildDepts(userVO));
|
||||
Object username = query.getCondition().get("username");
|
||||
query.setRecords(sysUserMapper.selectUserVoPageDataScope(query,username, dataScope));
|
||||
query.setRecords(sysUserMapper.selectUserVoPageDataScope(query, username, dataScope));
|
||||
return query;
|
||||
}
|
||||
|
||||
|
@ -268,8 +280,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
/**
|
||||
* 获取当前用户的子部门信息
|
||||
*
|
||||
* @return 子部门列表
|
||||
* @param userVO 用户信息
|
||||
* @return 子部门列表
|
||||
*/
|
||||
private List<Integer> getChildDepts(UserVO userVO) {
|
||||
UserVO userVo = findUserByUsername(userVO.getUsername());
|
||||
|
|
Loading…
Reference in New Issue