diff --git a/framework/src/main/java/cn/lili/cache/CachePrefix.java b/framework/src/main/java/cn/lili/cache/CachePrefix.java index 24b5daeb..8b3bab3f 100644 --- a/framework/src/main/java/cn/lili/cache/CachePrefix.java +++ b/framework/src/main/java/cn/lili/cache/CachePrefix.java @@ -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, /** * 订单暂时缓存 */ diff --git a/framework/src/main/java/cn/lili/common/security/sensitive/SensitiveJsonSerializer.java b/framework/src/main/java/cn/lili/common/security/sensitive/SensitiveJsonSerializer.java index 7fba151f..506e8c41 100644 --- a/framework/src/main/java/cn/lili/common/security/sensitive/SensitiveJsonSerializer.java +++ b/framework/src/main/java/cn/lili/common/security/sensitive/SensitiveJsonSerializer.java @@ -78,22 +78,14 @@ public class SensitiveJsonSerializer extends JsonSerializer //如果是店铺 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; diff --git a/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java b/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java index ede5b5d0..1d91e510 100644 --- a/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java +++ b/framework/src/main/java/cn/lili/modules/permission/service/MenuService.java @@ -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 { */ void deleteIds(List ids); + /** + * 添加更新菜单 + * + * @param menu 菜单数据 + * @return 是否成功 + */ + boolean saveOrUpdateMenu(Menu menu); + } diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java index 007913a9..ed1fdf59 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/MenuServiceImpl.java @@ -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 implements Me @Autowired private RoleMenuService roleMenuService; + @Autowired + private Cache> cache; + @Override public void deleteIds(List ids) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -53,8 +56,8 @@ public class MenuServiceImpl extends ServiceImpl implements Me @Override public List findUserTree() { - AuthUser authUser = UserContext.getCurrentUser(); - if (authUser.getIsSuper()) { + AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); + if (Boolean.TRUE.equals(authUser.getIsSuper())) { return this.tree(); } List userMenus = this.baseMapper.findByUserId(authUser.getId()); @@ -63,7 +66,28 @@ public class MenuServiceImpl extends ServiceImpl implements Me @Override public List findUserList(String userId) { - return this.baseMapper.findByUserId(userId); + String cacheKey = CachePrefix.MENU_USER_ID.getPrefix() + userId; + List 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 implements Me public List 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 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 implements Me } catch (Exception e) { log.error("菜单树错误", e); } - return null; + return Collections.emptyList(); } /** * 传入自定义菜单集合 * - * @param menus - * @return + * @param menus 自定义菜单集合 + * @return 修改后的自定义菜单集合 */ private List tree(List menus) { List tree = new ArrayList<>(); @@ -117,12 +141,7 @@ public class MenuServiceImpl extends ServiceImpl implements Me } }); //对一级菜单排序 - tree.sort(new Comparator() { - @Override - public int compare(MenuVO o1, MenuVO o2) { - return o1.getSortOrder().compareTo(o2.getSortOrder()); - } - }); + tree.sort(Comparator.comparing(Menu::getSortOrder)); return tree; } diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java index b5d0acaa..5a72298a 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/RoleMenuServiceImpl.java @@ -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 i @Resource private MenuMapper menuMapper; + + @Autowired + private Cache cache; + @Override public List findByRoleId(String roleId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("role_id", roleId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RoleMenu::getRoleId, roleId); return this.baseMapper.selectList(queryWrapper); } @Override public List findAllMenu(String userId) { - return menuMapper.getUserRoleMenu(userId); + String cacheKey = CachePrefix.USER_MENU.getPrefix() + userId; + List menuList = (List) 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 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 i QueryWrapper 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 roleId) { //删除 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("role_id", roleId); this.remove(queryWrapper); + cache.vagueDel(CachePrefix.MENU_USER_ID.getPrefix()); + cache.vagueDel(CachePrefix.USER_MENU.getPrefix()); } } \ No newline at end of file diff --git a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java index 82f6806e..5169eb44 100644 --- a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java @@ -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 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 edit(@PathVariable String id, Menu menu) { menu.setId(id); - menuService.updateById(menu); + menuService.saveOrUpdateMenu(menu); return ResultUtil.data(menu); }