菜单优化

main
tamguo 7 years ago
parent f451875267
commit 4820a179aa

@ -1,9 +1,11 @@
package com.tamguo.modules.sys.service; package com.tamguo.modules.sys.service;
import java.util.List; import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService; import com.baomidou.mybatisplus.service.IService;
import com.tamguo.modules.sys.model.SysMenuEntity;
import com.tamguo.modules.sys.model.SysUserDataScopeEntity; import com.tamguo.modules.sys.model.SysUserDataScopeEntity;
import com.tamguo.modules.sys.model.SysUserEntity; import com.tamguo.modules.sys.model.SysUserEntity;
import com.tamguo.modules.sys.model.SysUserRoleEntity; import com.tamguo.modules.sys.model.SysUserRoleEntity;
@ -58,4 +60,7 @@ public interface ISysUserService extends IService<SysUserEntity>{
/** 修改管理员*/ /** 修改管理员*/
public void updateAdmin(SysUserEntity user); public void updateAdmin(SysUserEntity user);
/** 当前用户权限菜单*/
public Set<SysMenuEntity> findUserMenuList();
} }

@ -1,8 +1,10 @@
package com.tamguo.modules.sys.service.impl; package com.tamguo.modules.sys.service.impl;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -14,10 +16,14 @@ import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.tamguo.modules.sys.dao.SysMenuMapper;
import com.tamguo.modules.sys.dao.SysRoleMenuMapper;
import com.tamguo.modules.sys.dao.SysUserDataScopeMapper; import com.tamguo.modules.sys.dao.SysUserDataScopeMapper;
import com.tamguo.modules.sys.dao.SysUserMapper; import com.tamguo.modules.sys.dao.SysUserMapper;
import com.tamguo.modules.sys.dao.SysUserPostMapper; import com.tamguo.modules.sys.dao.SysUserPostMapper;
import com.tamguo.modules.sys.dao.SysUserRoleMapper; import com.tamguo.modules.sys.dao.SysUserRoleMapper;
import com.tamguo.modules.sys.model.SysMenuEntity;
import com.tamguo.modules.sys.model.SysRoleMenuEntity;
import com.tamguo.modules.sys.model.SysUserDataScopeEntity; import com.tamguo.modules.sys.model.SysUserDataScopeEntity;
import com.tamguo.modules.sys.model.SysUserEntity; import com.tamguo.modules.sys.model.SysUserEntity;
import com.tamguo.modules.sys.model.SysUserPostEntity; import com.tamguo.modules.sys.model.SysUserPostEntity;
@ -30,6 +36,7 @@ import com.tamguo.modules.sys.service.ISysRoleService;
import com.tamguo.modules.sys.service.ISysUserService; import com.tamguo.modules.sys.service.ISysUserService;
import com.tamguo.modules.sys.utils.Result; import com.tamguo.modules.sys.utils.Result;
import com.tamguo.modules.sys.utils.ShiroUtils; import com.tamguo.modules.sys.utils.ShiroUtils;
import com.tamguo.modules.sys.utils.SystemConstant;
import com.tamguo.modules.sys.utils.TamguoConstant; import com.tamguo.modules.sys.utils.TamguoConstant;
@Service @Service
@ -45,6 +52,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
public ISysRoleService iSysRoleService; public ISysRoleService iSysRoleService;
@Autowired @Autowired
public SysUserDataScopeMapper sysUserDataScopeMapper; public SysUserDataScopeMapper sysUserDataScopeMapper;
@Autowired
public SysRoleMenuMapper sysRoleMenuMapper;
@Autowired
public SysMenuMapper sysMenuMapper;
@Transactional(readOnly=false) @Transactional(readOnly=false)
@Override @Override
@ -275,4 +286,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
sysUserMapper.updateById(entity); sysUserMapper.updateById(entity);
} }
@SuppressWarnings("unchecked")
@Override
public Set<SysMenuEntity> findUserMenuList() {
String userCode = ShiroUtils.getUserCode();
if(SystemConstant.SYSTEM_USER_CODE.equals(userCode)) {
List<SysMenuEntity> menus = sysMenuMapper.selectList(Condition.create().orderAsc(java.util.Arrays.asList("tree_sort")));
return new HashSet<>(menus);
}
Set<SysMenuEntity> menus = new HashSet<>();
List<SysUserRoleEntity> userRoleList = sysUserRoleMapper.selectList(Condition.create().eq("user_code", userCode));
for(SysUserRoleEntity userRole : userRoleList) {
List<SysRoleMenuEntity> roleMenuList = sysRoleMenuMapper.selectList(Condition.create().eq("role_code", userRole.getRoleCode()));
for(SysRoleMenuEntity roleMenu : roleMenuList) {
SysMenuEntity menu = sysMenuMapper.selectById(roleMenu.getMenuCode());
menus.add(menu);
}
}
return menus;
}
} }

@ -7,4 +7,7 @@ public class SystemConstant {
/** 验证码常数*/ /** 验证码常数*/
public static final String KAPTCHA_SESSION_KEY = "KAPTCHA_SESSION_KEY"; public static final String KAPTCHA_SESSION_KEY = "KAPTCHA_SESSION_KEY";
/** 验证码常数*/
public static final String SYSTEM_USER_CODE = "system";
} }

@ -11,12 +11,14 @@ import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.crypto.hash.Sha256Hash; import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.tamguo.modules.sys.service.ISysUserService;
import com.tamguo.modules.sys.utils.ExceptionSupport; import com.tamguo.modules.sys.utils.ExceptionSupport;
import com.tamguo.modules.sys.utils.Result; import com.tamguo.modules.sys.utils.Result;
import com.tamguo.modules.sys.utils.ShiroUtils; import com.tamguo.modules.sys.utils.ShiroUtils;
@ -24,6 +26,9 @@ import com.tamguo.modules.sys.utils.TamguoConstant;
@Controller @Controller
public class LoginController { public class LoginController {
@Autowired
private ISysUserService iSysUserService;
@RequestMapping(path="login") @RequestMapping(path="login")
public String sysLogin(ModelAndView model) { public String sysLogin(ModelAndView model) {
@ -47,6 +52,9 @@ public class LoginController {
password = new Sha256Hash(password).toHex(); password = new Sha256Hash(password).toHex();
UsernamePasswordToken token = new UsernamePasswordToken(username, password); UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token); subject.login(token);
// 获取权限菜单
request.getSession().setAttribute("userMenuList", iSysUserService.findUserMenuList());
} catch (UnknownAccountException e) { } catch (UnknownAccountException e) {
return ExceptionSupport.resolverResult("找不到账户", this.getClass(), e); return ExceptionSupport.resolverResult("找不到账户", this.getClass(), e);
} catch (IncorrectCredentialsException e) { } catch (IncorrectCredentialsException e) {

@ -14,54 +14,24 @@
</div> </div>
</div> </div>
<ul class="sidebar-menu" data-widget="tree"> <ul class="sidebar-menu" data-widget="tree">
<li class="treeview"><a title="系统管理" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-settings"></i> <span>系统管理</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a> <li class="treeview" th:each="userMenu,index:${session.userMenuList}">
<ul class="treeview-menu"> <a th:if="${userMenu.treeLevel == 0}" th:title="${userMenu.menuName}" href="javascript:" data-href="blank" class="addTabPage">
<li class="treeview"> <i class="fa fa-fw icon-settings"></i>
<a title="组织管理" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-grid"></i> <span>组织管理</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a> <span th:text="${userMenu.menuName}">系统管理</span>
<ul class="treeview-menu"> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>
<li class="treeview"><a title="用户管理" href="javascript:" data-href="sys/user/index" class="addTabPage"><i class="fa fa-fw icon-user"></i> <span>用户管理</span></a></li> </a>
<li class="treeview"><a title="机构管理" href="javascript:" data-href="sys/office/index" class="addTabPage"><i class="fa fa-fw icon-grid"></i> <span>机构管理</span></a></li> <ul class="treeview-menu">
<li class="treeview"><a title="公司管理" href="javascript:" data-href="sys/company/index" class="addTabPage"><i class="fa fa-fw icon-fire"></i> <span>公司管理</span></a></li> <li class="treeview" th:if="${menu.parentCode == userMenu.menuCode}" th:each="menu,index:${session.userMenuList}">
<li class="treeview"><a title="岗位管理" href="javascript:" data-href="sys/post/index" class="addTabPage"><i class="fa fa-fw icon-trophy"></i> <span>岗位管理</span></a></li> <a th:title="${menu.menuName}" href="javascript:" data-href="blank" class="addTabPage">
</ul> <i th:class="${'fa fa-fw ' + menu.menuIcon}"></i>
</li> <span th:text="${menu.menuName}">组织管理</span>
<li class="treeview"><a title="权限管理" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-social-dropbox"></i> <span>权限管理</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>
<ul class="treeview-menu"> </a>
<li class="treeview"><a title="角色管理" href="javascript:" data-href="sys/role/index" class="addTabPage"><i class="fa fa-fw icon-people"></i> <span>角色管理</span></a></li> <ul class="treeview-menu">
<li class="treeview"><a title="二级管理员" href="javascript:" data-href="sys/secAdmin/index" class="addTabPage"><i class="fa fa-fw icon-user-female"></i> <span>二级管理员</span></a></li> <li th:if="${menu.menuCode == m.parentCode}" class="treeview" th:each="m,index:${session.userMenuList}"><a th:title="${m.menuName}" href="javascript:" th:attr="data-href=${m.menuHref}" class="addTabPage"><i th:class="${m.menuIcon == ''} ? 'fa fa-fw fa-circle-o' : ${'fa fa-fw ' + m.menuIcon}"></i> <span th:text="${m.menuName}">用户管理</span></a></li>
<li class="treeview"><a title="系统管理员" href="javascript:" data-href="sys/corpAdmin/index" class="addTabPage"><i class="fa fa-fw icon-badge"></i> <span>系统管理员</span></a></li> </ul>
</ul> </li>
</li> </ul>
<li class="treeview"><a title="系统设置" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-settings"></i> <span>系统设置</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a> </li>
<ul class="treeview-menu">
<li class="treeview"><a title="菜单管理" href="javascript:" data-href="sys/menu/index" class="addTabPage"><i class="fa fa-fw icon-book-open"></i> <span>菜单管理</span></a></li>
<li class="treeview"><a title="行政区划" href="javascript:" data-href="sys/area/index" class="addTabPage"><i class="fa fa-fw icon-map"></i> <span>行政区划</span></a></li>
</ul>
</li>
<li class="treeview"><a title="系统监控" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-ghost"></i> <span>系统监控</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>
<ul class="treeview-menu">
<li class="treeview"><a title="访问日志" href="javascript:" data-href="/js/a/sys/log/list" class="addTabPage"><i class="fa fa-fw fa fa-bug"></i> <span>访问日志</span></a></li>
<li class="treeview"><a title="数据监控" href="javascript:" data-href="/js/druid" class="addTabPage"><i class="fa fa-fw icon-disc"></i> <span>数据监控</span></a></li>
<li class="treeview"><a title="缓存监控" href="javascript:" data-href="/js/a/state/ehcache" class="addTabPage"><i class="fa fa-fw icon-social-dribbble"></i> <span>缓存监控</span></a></li>
<li class="treeview"><a title="服务器监控" href="javascript:" data-href="/js/a/state/server" class="addTabPage"><i class="fa fa-fw icon-speedometer"></i> <span>服务器监控</span></a></li>
<li class="treeview"><a title="作业监控" href="javascript:" data-href="/js/a/job/list" class="addTabPage"><i class="fa fa-fw icon-notebook"></i> <span>作业监控</span></a></li>
<li class="treeview"><a title="在线用户" href="javascript:" data-href="/js/a/sys/online/list" class="addTabPage"><i class="fa fa-fw icon-social-twitter"></i> <span>在线用户</span></a></li>
</ul>
</li>
<li class="treeview"><a title="消息推送" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw icon-envelope-letter"></i> <span>消息推送</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>
<ul class="treeview-menu">
<li class="treeview"><a title="未完成消息" href="javascript:" data-href="/js/a/msg/msgPush/list" class="addTabPage"><i class="fa fa-fw fa-circle-o"></i> <span>未完成消息</span></a></li>
<li class="treeview"><a title="已完成消息" href="javascript:" data-href="/js/a/msg/msgPush/list?pushed=true" class="addTabPage"><i class="fa fa-fw fa-circle-o"></i> <span>已完成消息</span></a></li>
<li class="treeview"><a title="消息模板管理" href="javascript:" data-href="/js/a/msg/msgTemplate/list" class="addTabPage"><i class="fa fa-fw fa-circle-o"></i> <span>消息模板管理</span></a></li>
</ul>
</li>
<li class="treeview"><a title="Repas" href="javascript:" data-href="blank" class="addTabPage"><i class="fa fa-fw fa fa-code"></i> <span>Reaps社区</span> <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span></a>
<ul class="treeview-menu">
<li class="treeview"><a title="官方网站" href="http://jeesite.com" target="_blank"><i class="fa fa-fw fa-circle-o"></i> <span>官方网站</span></a></li>
<li class="treeview"><a title="问题反馈" href="https://gitee.com/thinkgem/jeesite4/issues" target="_blank"><i class="fa fa-fw fa-circle-o"></i> <span>问题反馈</span></a></li>
<li class="treeview"><a title="作者博客" href="https://my.oschina.net/thinkgem" target="_blank"><i class="fa fa-fw fa-circle-o"></i> <span>作者博客</span></a></li>
<li class="treeview"><a title="开源社区" href="http://jeesite.net" target="_blank"><i class="fa fa-fw fa-circle-o"></i> <span>开源社区</span></a></li>
</ul></li>
</ul></li>
</ul> </ul>
</section> </section>
Loading…
Cancel
Save