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<String> currMenus = new ArrayList<String>();
|
|
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<SysMenu> menus = this.find(hql, CollectionUtils.newList(""), SysMenu.class);
|
|
List<Map<String, Object>> lst = new ArrayList<Map<String, Object>>();
|
Map<String, Object> map;
|
|
for (SysMenu menu : menus) {
|
|
map = new HashMap<String, Object>();
|
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<UserRole> getUserRoleLst(String keyword) {
|
String keyword_ = StringUtils.isBlank(keyword) ? "" : keyword;
|
List<UserRole> 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<Map<String, Object>> 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<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(), "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
|
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<Map<String, Object>> 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);
|
}
|
|
|
}
|