♻️ 重构代码 -> MenuController

This commit is contained in:
冷冷 2018-06-06 23:29:06 +08:00
parent 5942d990ba
commit ee3b2dce1a
7 changed files with 65 additions and 122 deletions

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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());