优化管理端登录,权限菜单读取缓存
This commit is contained in:
parent
8ddd39d6e5
commit
a44f06b3e8
@ -1,7 +1,7 @@
|
||||
package cn.lili.cache;
|
||||
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
|
||||
/**
|
||||
* 缓存前缀
|
||||
@ -469,6 +469,14 @@ public enum CachePrefix {
|
||||
* 店铺分类
|
||||
*/
|
||||
STORE_CATEGORY,
|
||||
/**
|
||||
* 用户菜单
|
||||
*/
|
||||
MENU_USER_ID,
|
||||
/**
|
||||
* 用户菜单
|
||||
*/
|
||||
USER_MENU,
|
||||
/**
|
||||
* 订单暂时缓存
|
||||
*/
|
||||
|
@ -78,22 +78,14 @@ public class SensitiveJsonSerializer extends JsonSerializer<String>
|
||||
//如果是店铺
|
||||
if (authUser.getRole().equals(UserEnums.STORE)) {
|
||||
//店铺需要进行脱敏,则脱敏处理
|
||||
if (systemSettingProperties.getSensitiveLevel() == 2) {
|
||||
return true;
|
||||
}
|
||||
//默认不需要
|
||||
return false;
|
||||
return systemSettingProperties.getSensitiveLevel() == 2;
|
||||
}
|
||||
|
||||
|
||||
//如果是店铺
|
||||
if (authUser.getRole().equals(UserEnums.MANAGER)) {
|
||||
//店铺需要进行脱敏,则脱敏处理
|
||||
if (systemSettingProperties.getSensitiveLevel() >= 1) {
|
||||
return true;
|
||||
}
|
||||
//默认不需要
|
||||
return false;
|
||||
return systemSettingProperties.getSensitiveLevel() >= 1;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.modules.permission.service;
|
||||
|
||||
import cn.lili.modules.permission.entity.dto.MenuSearchParams;
|
||||
import cn.lili.modules.permission.entity.dos.Menu;
|
||||
import cn.lili.modules.permission.entity.dto.MenuSearchParams;
|
||||
import cn.lili.modules.permission.entity.vo.MenuVO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
@ -63,4 +63,12 @@ public interface MenuService extends IService<Menu> {
|
||||
*/
|
||||
void deleteIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 添加更新菜单
|
||||
*
|
||||
* @param menu 菜单数据
|
||||
* @return 是否成功
|
||||
*/
|
||||
boolean saveOrUpdateMenu(Menu menu);
|
||||
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
package cn.lili.modules.permission.serviceimpl;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.vo.SearchVO;
|
||||
import cn.lili.modules.permission.entity.dos.Menu;
|
||||
import cn.lili.modules.permission.entity.dos.RoleMenu;
|
||||
@ -14,15 +15,14 @@ import cn.lili.modules.permission.entity.vo.MenuVO;
|
||||
import cn.lili.modules.permission.mapper.MenuMapper;
|
||||
import cn.lili.modules.permission.service.MenuService;
|
||||
import cn.lili.modules.permission.service.RoleMenuService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限业务层实现
|
||||
@ -39,6 +39,9 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
@Autowired
|
||||
private RoleMenuService roleMenuService;
|
||||
|
||||
@Autowired
|
||||
private Cache<List<Menu>> cache;
|
||||
|
||||
@Override
|
||||
public void deleteIds(List<String> ids) {
|
||||
QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
|
||||
@ -53,8 +56,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
|
||||
@Override
|
||||
public List<MenuVO> findUserTree() {
|
||||
AuthUser authUser = UserContext.getCurrentUser();
|
||||
if (authUser.getIsSuper()) {
|
||||
AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
if (Boolean.TRUE.equals(authUser.getIsSuper())) {
|
||||
return this.tree();
|
||||
}
|
||||
List<Menu> userMenus = this.baseMapper.findByUserId(authUser.getId());
|
||||
@ -63,7 +66,28 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
|
||||
@Override
|
||||
public List<Menu> findUserList(String userId) {
|
||||
return this.baseMapper.findByUserId(userId);
|
||||
String cacheKey = CachePrefix.MENU_USER_ID.getPrefix() + userId;
|
||||
List<Menu> menuList = cache.get(cacheKey);
|
||||
if (menuList == null) {
|
||||
menuList = this.baseMapper.findByUserId(userId);
|
||||
cache.put(cacheKey, menuList);
|
||||
}
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加更新菜单
|
||||
*
|
||||
* @param menu 菜单数据
|
||||
* @return 是否成功
|
||||
*/
|
||||
@Override
|
||||
public boolean saveOrUpdateMenu(Menu menu) {
|
||||
if (CharSequenceUtil.isNotEmpty(menu.getId())) {
|
||||
cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix());
|
||||
cache.vagueDel(CachePrefix.USER_MENU.getPrefix());
|
||||
}
|
||||
return this.saveOrUpdate(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -77,12 +101,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
public List<Menu> searchList(MenuSearchParams menuSearchParams) {
|
||||
//title 需要特殊处理
|
||||
String title = null;
|
||||
if (StringUtils.isNotEmpty(menuSearchParams.getTitle())) {
|
||||
if (CharSequenceUtil.isNotEmpty(menuSearchParams.getTitle())) {
|
||||
title = menuSearchParams.getTitle();
|
||||
menuSearchParams.setTitle(null);
|
||||
}
|
||||
QueryWrapper queryWrapper = PageUtil.initWrapper(menuSearchParams, new SearchVO());
|
||||
if (StringUtils.isNotEmpty(title)) {
|
||||
QueryWrapper<Menu> queryWrapper = PageUtil.initWrapper(menuSearchParams, new SearchVO());
|
||||
if (CharSequenceUtil.isNotEmpty(title)) {
|
||||
queryWrapper.like("title", title);
|
||||
}
|
||||
queryWrapper.orderByDesc("sort_order");
|
||||
@ -98,14 +122,14 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
} catch (Exception e) {
|
||||
log.error("菜单树错误", e);
|
||||
}
|
||||
return null;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入自定义菜单集合
|
||||
*
|
||||
* @param menus
|
||||
* @return
|
||||
* @param menus 自定义菜单集合
|
||||
* @return 修改后的自定义菜单集合
|
||||
*/
|
||||
private List<MenuVO> tree(List<Menu> menus) {
|
||||
List<MenuVO> tree = new ArrayList<>();
|
||||
@ -117,12 +141,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
}
|
||||
});
|
||||
//对一级菜单排序
|
||||
tree.sort(new Comparator<MenuVO>() {
|
||||
@Override
|
||||
public int compare(MenuVO o1, MenuVO o2) {
|
||||
return o1.getSortOrder().compareTo(o2.getSortOrder());
|
||||
}
|
||||
});
|
||||
tree.sort(Comparator.comparing(Menu::getSortOrder));
|
||||
return tree;
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,17 @@
|
||||
package cn.lili.modules.permission.serviceimpl;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.modules.permission.entity.dos.RoleMenu;
|
||||
import cn.lili.modules.permission.entity.vo.UserMenuVO;
|
||||
import cn.lili.modules.permission.mapper.MenuMapper;
|
||||
import cn.lili.modules.permission.mapper.RoleMenuMapper;
|
||||
import cn.lili.modules.permission.service.RoleMenuService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import groovy.util.logging.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -31,16 +35,26 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
@Resource
|
||||
private MenuMapper menuMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private Cache<Object> cache;
|
||||
|
||||
@Override
|
||||
public List<RoleMenu> findByRoleId(String roleId) {
|
||||
QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("role_id", roleId);
|
||||
LambdaQueryWrapper<RoleMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RoleMenu::getRoleId, roleId);
|
||||
return this.baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserMenuVO> findAllMenu(String userId) {
|
||||
return menuMapper.getUserRoleMenu(userId);
|
||||
String cacheKey = CachePrefix.USER_MENU.getPrefix() + userId;
|
||||
List<UserMenuVO> menuList = (List<UserMenuVO>) cache.get(cacheKey);
|
||||
if (menuList == null) {
|
||||
menuList = menuMapper.getUserRoleMenu(userId);
|
||||
cache.put(cacheKey, menuList);
|
||||
}
|
||||
return menuList;
|
||||
}
|
||||
|
||||
|
||||
@ -51,8 +65,10 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
this.deleteRoleMenu(roleId);
|
||||
//重新保存角色菜单关系
|
||||
this.saveBatch(roleMenus);
|
||||
cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix());
|
||||
cache.vagueDel(CachePrefix.USER_MENU.getPrefix());
|
||||
} catch (Exception e) {
|
||||
log.error("修改用户权限错误",e);
|
||||
log.error("修改用户权限错误", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,12 +78,17 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("role_id", roleId);
|
||||
this.remove(queryWrapper);
|
||||
cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix());
|
||||
cache.vagueDel(CachePrefix.USER_MENU.getPrefix());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRoleMenu(List<String> roleId) {
|
||||
//删除
|
||||
QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("role_id", roleId);
|
||||
this.remove(queryWrapper);
|
||||
cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix());
|
||||
cache.vagueDel(CachePrefix.USER_MENU.getPrefix());
|
||||
}
|
||||
}
|
@ -2,7 +2,6 @@ package cn.lili.controller.permission;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.system.aspect.annotation.DemoSite;
|
||||
import cn.lili.modules.permission.entity.dos.Menu;
|
||||
import cn.lili.modules.permission.entity.dto.MenuSearchParams;
|
||||
import cn.lili.modules.permission.entity.vo.MenuVO;
|
||||
@ -29,6 +28,7 @@ import java.util.List;
|
||||
@Api(tags = "管理端,菜单管理接口")
|
||||
@RequestMapping("/manager/menu")
|
||||
public class MenuManagerController {
|
||||
|
||||
@Autowired
|
||||
private MenuService menuService;
|
||||
|
||||
@ -43,9 +43,9 @@ public class MenuManagerController {
|
||||
@DemoSite
|
||||
public ResultMessage<Menu> add(Menu menu) {
|
||||
try {
|
||||
menuService.save(menu);
|
||||
menuService.saveOrUpdateMenu(menu);
|
||||
} catch (Exception e) {
|
||||
log.error("添加菜单错误",e);
|
||||
log.error("添加菜单错误", e);
|
||||
}
|
||||
return ResultUtil.data(menu);
|
||||
}
|
||||
@ -57,7 +57,7 @@ public class MenuManagerController {
|
||||
@DemoSite
|
||||
public ResultMessage<Menu> edit(@PathVariable String id, Menu menu) {
|
||||
menu.setId(id);
|
||||
menuService.updateById(menu);
|
||||
menuService.saveOrUpdateMenu(menu);
|
||||
return ResultUtil.data(menu);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user