| | |
| | | package com.qxueyou.scc.sys.model; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | import javax.persistence.*; |
| | | import javax.persistence.CascadeType; |
| | | import javax.persistence.Column; |
| | | import javax.persistence.Entity; |
| | | import javax.persistence.FetchType; |
| | | import javax.persistence.GeneratedValue; |
| | | import javax.persistence.Id; |
| | | import javax.persistence.JoinColumn; |
| | | import javax.persistence.JoinTable; |
| | | import javax.persistence.ManyToMany; |
| | | import javax.persistence.ManyToOne; |
| | | import javax.persistence.NamedQuery; |
| | | import javax.persistence.OneToMany; |
| | | import javax.persistence.Table; |
| | | import javax.persistence.Temporal; |
| | | import javax.persistence.TemporalType; |
| | | |
| | | import org.hibernate.annotations.*; |
| | | import org.hibernate.annotations.Cache; |
| | | import org.hibernate.annotations.CacheConcurrencyStrategy; |
| | | import org.hibernate.annotations.CollectionId; |
| | | import org.hibernate.annotations.GenericGenerator; |
| | | import org.hibernate.annotations.Type; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonIgnore; |
| | |
| | | |
| | | @OneToMany(mappedBy = "parent") |
| | | @JsonIgnore |
| | | private List<SysMenu> children; |
| | | private List<SysMenu> children=new ArrayList<>(); |
| | | |
| | | public int getOpenType() { |
| | | return openType; |
| | | @Transient |
| | | private Set<SysMenu> childrenList = new HashSet<>(); |
| | | |
| | | public Set<SysMenu> getChildrenList() { |
| | | return childrenList; |
| | | } |
| | | |
| | | public void setChildrenList(Set<SysMenu> childrenList) { |
| | | this.childrenList = childrenList; |
| | | } |
| | | |
| | | public void setOpenType(int openType) { |
| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.qxueyou.scc.user.model.UserReRoleUser; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | @Override |
| | | public Result getMenus(User user) { |
| | | |
| | | String hql = "select DISTINCT m.menuId as index ,m.name as title ,m.url as router , m.hover as hover , " |
| | | String hql = "select DISTINCT m.menuId as index ,m.parentMenuId as parentMenuId ,m.level as level ,m.name as title ,m.url as router , m.hover as hover , " |
| | | + " m.icon as icon ,m.parentMenuId as parentMenuId ,m.menuOrder as menuOrder from SysMenu m , UserReRoleUser u ," |
| | | + "SysPrivilege s where m.deleteFlag is false and u.deleteFlag is false and s.deleteFlag is false and " |
| | | + "u.userId =:userId and u.roleId = s.roleId and s.menuId = m.menuId order by m.menuOrder "; |
| | | + "u.userId =:userId and u.roleId = s.roleId and s.menuId = m.menuId order by m.menuOrder "; |
| | | |
| | | List<Map<String, Object>> menuLst = findListWithMapByHql(hql, |
| | | CollectionUtils.newObjectMap("userId", user.getUserId())); |
| | | System.out.println(menuLst); |
| | | for (Map<String, Object> map : menuLst) { |
| | | map.put("children", CollectionUtils.newList()); |
| | | //初始化一级菜单 |
| | | List<Map<String, Object>> firstLevelMenu =new ArrayList<>(); |
| | | for (Map<String, Object> stringObjectMap : menuLst) { |
| | | Integer level = Integer.parseInt(stringObjectMap.get("level").toString()); |
| | | if (level==0) { |
| | | //获取一级菜单 |
| | | firstLevelMenu.add(stringObjectMap); |
| | | } |
| | | } |
| | | // 临时列表,用于保存需要移除的元素的索引 |
| | | List<Map<String, Object>> elementsToRemove = new ArrayList<>(); |
| | | //遍历子集 |
| | | for (Map<String, Object> map : firstLevelMenu) { |
| | | getChildrenList(map,menuLst,elementsToRemove); |
| | | } |
| | | // 移除临时列表中的元素 |
| | | menuLst.removeAll(elementsToRemove); |
| | | |
| | | String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId"; |
| | | |
| | | String maxRoleTypeStr = findUniqueByHql(hqlRole, CollectionUtils.newObjectMap("userId", user.getUserId())); |
| | | if (StringUtils.isBlank(maxRoleTypeStr)) { |
| | | return new Result(false, "该用户没有权限,登录失败"); |
| | | } |
| | | Integer maxRoleType = Integer.valueOf(maxRoleTypeStr); |
| | | return new Result(true, "success", CollectionUtils.newObjectMap("menuLst", menuLst, "userName", user.getName(), |
| | | "userId", user.getUserId(), "imgPath", user.getImgPath(), "roleType", maxRoleType)); |
| | | } |
| | | |
| | | String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId"; |
| | | /** |
| | | * 用递归获取子菜单 |
| | | * @param sysMenu//一级菜单 |
| | | * @param menuLst //所有菜单 |
| | | * @param elementsToRemove //临时列表,用于保存需要移除的元素的索引 |
| | | * @return |
| | | */ |
| | | public Map<String, Object> getChildrenList(Map<String, Object> sysMenu, List<Map<String, Object>> menuLst ,List<Map<String, Object>> elementsToRemove) { |
| | | for (Map<String, Object> sysMenuMap : menuLst) { |
| | | String menuId = sysMenuMap.get("parentMenuId").toString(); |
| | | String parentMenuId = sysMenu.get("index").toString(); |
| | | if (parentMenuId.equals(menuId)) { |
| | | sysMenu.put("children",getChildrenList(sysMenuMap, menuLst, elementsToRemove)); |
| | | elementsToRemove.add(sysMenuMap); |
| | | |
| | | String maxRoleTypeStr = findUniqueByHql(hqlRole, CollectionUtils.newObjectMap("userId", user.getUserId())); |
| | | if (StringUtils.isBlank(maxRoleTypeStr)) { |
| | | return new Result(false, "该用户没有权限,登录失败"); |
| | | } |
| | | Integer maxRoleType = Integer.valueOf(maxRoleTypeStr); |
| | | return new Result(true, "success", CollectionUtils.newObjectMap("menuLst", menuLst, "userName", user.getName(), |
| | | "userId", user.getUserId(), "imgPath", user.getImgPath(), "roleType", maxRoleType)); |
| | | } |
| | | } |
| | | return sysMenu; |
| | | } |
| | | } |
| | |
| | | package com.qxueyou.scc.user.service.impl; |
| | | |
| | | import com.qxueyou.scc.admin.classes.model.ClsClass; |
| | | import com.qxueyou.scc.base.model.Result; |
| | | import com.qxueyou.scc.base.service.impl.CommonAppService; |
| | | import com.qxueyou.scc.base.util.ClientUtils; |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 角色 |
| | |
| | | public class UserRoleService extends CommonAppService implements IUserRoleService { |
| | | @Autowired |
| | | UserRoleDAO dao; |
| | | |
| | | |
| | | /** |
| | | * 得到菜单 |
| | |
| | | |
| | | @Override |
| | | public Result queryRoleDetail(String roleId) { |
| | | List<Map<String, Object>> findMenuLstById = dao.findMenuLstById(roleId); |
| | | List<Map<String, Object>> findRoleMenuLstById = dao.findMenuLstById(roleId); |
| | | UserRole userRole = read(UserRole.class, roleId); |
| | | ///////////////////////////////////////////////////新增方法 |
| | | |
| | | |
| | | StringBuffer hql=new StringBuffer( "select m.name as name ,m.menuId as menuId ,m.parentMenuId as parentMenuId ,m.level as level from SysMenu m where deleteFlag is false "); |
| | | //获取所有菜单 |
| | | List<SysMenu> sysMenusAll = new ArrayList<>(); |
| | | List<Map<String, Object>> listWithMapByHql = findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap()); |
| | | //将map转化成SysMenu实体类 |
| | | for (Map<String, Object> stringObjectMap : listWithMapByHql) { |
| | | SysMenu sysMenu = new SysMenu(); |
| | | sysMenu.setMenuId(stringObjectMap.get("menuId").toString()); |
| | | sysMenu.setName(stringObjectMap.get("name").toString()); |
| | | sysMenu.setParentMenuId(stringObjectMap.get("parentMenuId").toString()); |
| | | sysMenu.setLevel(Integer.parseInt(stringObjectMap.get("level").toString())); |
| | | sysMenusAll.add(sysMenu); |
| | | } |
| | | //获取一级菜单 |
| | | List<SysMenu> firstMenuList = sysMenusAll.stream().filter |
| | | //过滤出一级菜单 |
| | | (s -> s.getLevel()==0) |
| | | // 返回list集合形式 |
| | | .collect(Collectors.toList()); |
| | | // 遍历一级菜单,构造菜单树 |
| | | for (SysMenu menu : firstMenuList) { |
| | | getChildrenList(menu, sysMenusAll); |
| | | } |
| | | ///////////////////////////////////////////////////新增方法 |
| | | return new Result(true, "success", |
| | | CollectionUtils.newObjectMap("roleName", userRole.getName(), "menuLst", findMenuLstById)); |
| | | CollectionUtils.newObjectMap("roleName", userRole.getName(), "menuLstAll", firstMenuList,"roleMenuLstById",findRoleMenuLstById)); |
| | | } |
| | | |
| | | public SysMenu getChildrenList(SysMenu sysMenu, List<SysMenu> sysMenuList ) { |
| | | for (SysMenu menu : sysMenuList) { |
| | | if (menu.getParentMenuId().equals(sysMenu.getMenuId())) { |
| | | |
| | | sysMenu.getChildrenList().add(getChildrenList(menu, sysMenuList)); |
| | | } |
| | | } |
| | | return sysMenu; |
| | | } |
| | | |
| | | @Override |