Springboot 技术整合--笔记11--集成Guns--6分析数据

登录

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {

        //获取当前用户角色列表
        ShiroUser user = ShiroKit.getUserNotNull();
        List roleList = user.getRoleList();

        if (roleList == null || roleList.size() == 0) {
            ShiroKit.getSubject().logout();
            model.addAttribute("tips", "该用户没有角色,无法登陆");
            return "/login.html";
        }

        List menus = userService.getUserMenuNodes(roleList);
        model.addAttribute("menus", menus);

        return "/index.html";
    }

登录后会菜单权限列表添加到seseion中


用户菜单权限--添加到session

获取菜单列表

    @RequestMapping(value = "/selectMenuTreeList")
    @ResponseBody
    public List selectMenuTreeList() {
        List roleTreeList = this.menuService.menuTreeList();
        roleTreeList.add(ZTreeNode.createParent());
        return roleTreeList;
    }

menu.js处理菜单


menu.js处理菜单
image.png
image.png

默认加载主页
${ctxPath}/system/console

菜单管理数据交互

菜单按树结构返回1
菜单按树结构返回2

分页

guns分页没有使用com.github.pagehelper,而是使用mybatisplus.extension.plugins.pagination结构与pagehelper类似,如


    /**
     * 查询操作日志列表
     *
     * @author fengshuonan
     * @Date 2018/12/23 5:34 PM
     */
    @RequestMapping("/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object list(@RequestParam(required = false) String beginTime,
                       @RequestParam(required = false) String endTime,
                       @RequestParam(required = false) String logName,
                       @RequestParam(required = false) Integer logType) {

        //获取分页参数
        Page page = LayuiPageFactory.defaultPage();

        //根据条件查询操作日志
        List> result = operationLogService.getOperationLogs(page, beginTime, endTime, logName, BizLogType.valueOf(logType));

        page.setRecords(new LogWrapper(result).wrap());

        return LayuiPageFactory.createPageInfo(page);
    }
image.png
image.png

数据包装类返回前端(前端展示通过后端统一控制逻辑)

以LogWrapper为例,继承自BaseControllerWrapper

/**
 * 日志列表的包装类
 *
 * @author fengshuonan
 * @date 2017年4月5日22:56:24
 */
public class LogWrapper extends BaseControllerWrapper {

    public LogWrapper(Map single) {
        super(single);
    }

    public LogWrapper(List> multi) {
        super(multi);
    }

    @Override
    protected void wrapTheMap(Map map) {
        String message = (String) map.get("message");

        Long userid = DecimalUtil.getLong(map.get("userId"));
        map.put("userName", ConstantFactory.me().getUserNameById(userid));

        //如果信息过长,则只截取前100位字符串
        if (ToolUtil.isNotEmpty(message) && message.length() >= 100) {
            String subMessage = message.substring(0, 100) + "...";
            map.put("message", subMessage);
        }

        //如果信息中包含分割符号;;;   则分割字符串返给前台
        if (ToolUtil.isNotEmpty(message) && message.contains(Contrast.separator)) {
            String[] msgs = message.split(Contrast.separator);
            map.put("regularMessage", msgs);
        } else {
            map.put("regularMessage", message);
        }
    }
}

日志列表包装类

权限控制

权限控制到按钮级别


页面&按钮权限控制

web api 放开权限设置位置

image.png

guns与Layui的分页处理

关键使用LayuiPageFactory


image.png

session超时重定位

common.js通过jQuery.ajaxSetup([options])设置全局 AJAX 默认选项

//注册session超时的操作
    $.ajaxSetup({
        contentType: "application/x-www-form-urlencoded;charset=utf-8",
        complete: function (XMLHttpRequest, textStatus) {

            //如果超时就处理 ,指定要跳转的页面
            if (XMLHttpRequest.getResponseHeader("Guns-Session-Timeout") === "true") {
                window.location = Feng.ctxPath + "/global/sessionError";
            }

        }
    });

你可能感兴趣的:(Springboot 技术整合--笔记11--集成Guns--6分析数据)