登录
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Model model) {
//获取当前用户角色列表
ShiroUser user = ShiroKit.getUserNotNull();
List<Long> roleList = user.getRoleList();
if (roleList == null || roleList.size() == 0) {
ShiroKit.getSubject().logout();
model.addAttribute("tips", "该用户没有角色,无法登陆");
return "/login.html";
}
List<MenuNode> menus = userService.getUserMenuNodes(roleList);
model.addAttribute("menus", menus);
return "/index.html";
}
登录后会菜单权限列表添加到seseion中

获取菜单列表
@RequestMapping(value = "/selectMenuTreeList")
@ResponseBody
public List<ZTreeNode> selectMenuTreeList() {
List<ZTreeNode> roleTreeList = this.menuService.menuTreeList();
roleTreeList.add(ZTreeNode.createParent());
return roleTreeList;
}
menu.js处理菜单



默认加载主页
${ctxPath}/system/console
菜单管理数据交互


分页
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<Map<String, Object>> result = operationLogService.getOperationLogs(page, beginTime, endTime, logName, BizLogType.valueOf(logType));
page.setRecords(new LogWrapper(result).wrap());
return LayuiPageFactory.createPageInfo(page);
}


数据包装类返回前端(前端展示通过后端统一控制逻辑)
以LogWrapper为例,继承自BaseControllerWrapper
/**
* 日志列表的包装类
*
* @author fengshuonan
* @date 2017年4月5日22:56:24
*/
public class LogWrapper extends BaseControllerWrapper {
public LogWrapper(Map<String, Object> single) {
super(single);
}
public LogWrapper(List<Map<String, Object>> multi) {
super(multi);
}
@Override
protected void wrapTheMap(Map<String, Object> 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);
}
}
}

权限控制
权限控制到按钮级别

网友评论