统一身份认证系统之切面权限控制【13】

因为系统的菜单是固定的,所以没有必要每次查询数据库,新增全局静态类GlobalVar ,用于存储菜单信息

package com.dc.base.contants;

import com.dc.pojo.SysMenu;

import java.util.Map;

/**
 * @author Enzo
 * @Description 静态变量类
 * @date 2018-11-14 13:59
 */
public class GlobalVar {
    public static List<SysMenu>listMenu;
    public static Map<String, SysMenu> mapCodeMenu;//aop权限判断快速根据code获得对应的权限信息
}

在【SysMenuService.java】中添加从缓存中获得菜单信息方法,和查询菜单信息方法
若缓存中已存在菜单信息,则返回缓缓中的菜单信息,如不存在,则从数据库中查询菜单信息,并保存在内存中

    List<SysMenu> getCacheMenu() throws Exception;

    List<SysMenu> selectAllMenu() throws Exception;

在【SysMenuServiceImpl.java】添加查询缓存菜单信息方法和查询菜单信息方法实现
若缓存中已存在菜单信息,则返回缓缓中的菜单信息,如不存在,则从数据库中查询菜单信息,并保存在内存中

/**
     * @return java.util.List<com.dc.pojo.SysMenu>
     * @title:<h3>获得内存中的菜单信息 <h3>
     * @author: Enzo
     * @date: 2018-11-14 13:58
     * @params []
     **/
    public List<SysMenu> getCacheMenu() throws Exception {
        if (GlobalVar.mapCodeMenu == null) {
            selectAllMenu();
        }
        return GlobalVar.listMenu;
    }

    /**
     * @return void
     * @title:<h3> 查询全部菜单信息 <h3>
     * @author: Enzo
     * @date: 2018-11-14 14:22
     * @params [baseModel]
     **/
    public List<SysMenu> selectAllMenu() throws Exception {
        GlobalVar.listMenu = menuDao.selectAllMenu();
        GlobalVar.mapCodeMenu = new HashMap<String, SysMenu>();
        for (SysMenu menu : GlobalVar.listMenu) {
            GlobalVar.mapCodeMenu.put(menu.getCode(), menu);
        }
        return GlobalVar.listMenu;
    }

在【LoginController.java】中添加查询菜单信息控制层接口,以便于解决修改菜单后数据未同步问题(该问题也可通过重启服务器解决)

    /**
     * @return com.dc.base.pojo.BaseModel
     * @title:<h3> 刷新权限菜单 <h3>
     * @author: Enzo
     * @date: 2018-11-14 14:23
     * @params [baseModel]
     **/
    @ApiOperation(value = "刷新权限菜单", httpMethod = "GET")
    @RequestMapping("refreshSysMenu")
    public BaseModel refreshSysMenu(BaseModel baseModel) throws Exception {
        baseModel.setData(menuService.selectAllMenu());
        baseModel.setMessage("刷新权限菜单成功");
        return baseModel;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值