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 com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.sys.model.SysMenu; import com.qxueyou.scc.user.dao.UserRoleDAO; import com.qxueyou.scc.user.model.UserRole; import com.qxueyou.scc.user.service.IUserRoleService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 角色 * * @author ody.yuan * */ @Service public class UserRoleService extends CommonAppService implements IUserRoleService { @Autowired UserRoleDAO dao; /** * 得到菜单 * * @return */ public Result queryMenus(String roleId) { return this.queryCommonMenus(roleId); } /** * 得到菜单 * * @return */ private Result queryCommonMenus(String roleId) { // 按角色过滤 Result result = new Result(true); List currMenus = new ArrayList(); if (StringUtils.isNotBlank(roleId)) { String hql0 = "select menuId from SysPrivilege s where s.deleteFlag is false and s.roleId = ? "; currMenus = this.find(hql0, CollectionUtils.newList(), String.class); } String hql = "select s from SysMenu s, SysPrivilege p where s.deleteFlag is false and p.deleteFlag is false " + " and s.menuId = p.menuId and p.roleId = ? "; List menus = this.find(hql, CollectionUtils.newList(""), SysMenu.class); List> lst = new ArrayList>(); Map map; for (SysMenu menu : menus) { map = new HashMap(); map.put("id", menu.getMenuId()); map.put("pId", menu.getParentMenuId()); map.put("name", menu.getName()); if (currMenus.contains(menu.getMenuId())) { map.put("check", menu.getName()); } lst.add(map); } result.addData("lstMenus", lst); result.addData("currMenus", currMenus); return result; } /** * 取得当前角色是否编辑过 按钮权限,有记录就是编辑过 * * @return */ public boolean getButtonPrivilegeFlag(String orgId, String topOrgId, String roleId) { return false; } @Override public UserRole queryRoleByCode(String roleCode) { return this.findUnique("from UserRole u where u.eName=?", CollectionUtils.newList(roleCode), UserRole.class); } @Override public List getUserRoleLst(String keyword) { String keyword_ = StringUtils.isBlank(keyword) ? "" : keyword; List userRoleLst = dao.getUserRoleLst(keyword_); return userRoleLst; } @Override public Result getUserLstByRoleId(String roleId, Integer pageSize, Integer pageNum, String keyword) { String keyword_ = StringUtils.isBlank(keyword) ? "" : keyword; List> userLst = dao.getUserLstByRoleId(roleId, pageSize, pageNum, keyword_); int userCount = dao.getUserCount(roleId, keyword_); return new Result(true, "success", CollectionUtils.newObjectMap("userLst", userLst, "userCount", userCount)); } @Override public Result delete(String userId) { boolean result = dao.delete(userId); String messge = "移除成功"; if (!result) { messge = "移除失败"; } return new Result(result, messge); } @Override public Result queryRoleDetail(String roleId) { List> 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 sysMenusAll = new ArrayList<>(); List> listWithMapByHql = findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap()); //将map转化成SysMenu实体类 for (Map 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 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(), "menuLstAll", firstMenuList,"roleMenuLstById",findRoleMenuLstById)); } public SysMenu getChildrenList(SysMenu sysMenu, List sysMenuList ) { for (SysMenu menu : sysMenuList) { if (menu.getParentMenuId().equals(sysMenu.getMenuId())) { sysMenu.getChildrenList().add(getChildrenList(menu, sysMenuList)); } } return sysMenu; } @Override public Result updateRole(String roleId, String menuIds, String name) { return dao.updateRole(roleId, menuIds, name); } @Override public Result deleteRole(String roleId) { return dao.deleteRole(roleId); } @Override public List> findMenuLst() { return dao.findMenuLst(); } @Override public Result addRole(String name,String roleType) { UserRole userRole = new UserRole(); userRole.setName(name); userRole.setTopOrgId(ClientUtils.getOrgId()); userRole.setType(roleType); TraceUtils.setCreateTrace(userRole); save(userRole); return new Result(true); } @Override public Result addTeachers(String teacherIds, String roleId) { return dao.addTeachers(teacherIds, roleId); } }