Commit 83c9ffd0 by Suvalue

用户菜单修改

parent 9394d597
...@@ -17,7 +17,9 @@ public interface SysMenuMapper { ...@@ -17,7 +17,9 @@ public interface SysMenuMapper {
int updateByPrimaryKey(SysMenu record); int updateByPrimaryKey(SysMenu record);
List<SysMenuList> selectMenuByUser(Long userId); List<SysMenuList> selectMenuAllByUser(Long userId);
List<SysMenuList> selectMenuByRole(Long userId);
List<SysMenuList> selectParentAll(); List<SysMenuList> selectParentAll();
......
...@@ -5,7 +5,6 @@ import com.bsoft.admin.mapper.SysMenuMapper; ...@@ -5,7 +5,6 @@ import com.bsoft.admin.mapper.SysMenuMapper;
import com.bsoft.admin.mapper.SysRoleMenuRsMapper; import com.bsoft.admin.mapper.SysRoleMenuRsMapper;
import com.bsoft.admin.mapper.SysUserMenuRsMapper; import com.bsoft.admin.mapper.SysUserMenuRsMapper;
import com.bsoft.admin.model.SysMenu; import com.bsoft.admin.model.SysMenu;
import com.bsoft.admin.model.SysRole;
import com.bsoft.admin.model.SysRoleMenuRs; import com.bsoft.admin.model.SysRoleMenuRs;
import com.bsoft.admin.model.SysUserMenuRs; import com.bsoft.admin.model.SysUserMenuRs;
import com.bsoft.admin.model.reqmodel.MenuReq; import com.bsoft.admin.model.reqmodel.MenuReq;
...@@ -17,7 +16,6 @@ import org.springframework.stereotype.Service; ...@@ -17,7 +16,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.beans.Transient;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
...@@ -36,18 +34,40 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -36,18 +34,40 @@ public class SysMenuServiceImpl implements SysMenuService {
@Override @Override
public List<SysMenuList> getMenu(Long userId) throws Exception { public List<SysMenuList> getMenu(Long userId) throws Exception {
List<SysMenuList> list = sysMenuMapper.selectMenuByUser(userId); List<SysMenuList> userList = sysMenuMapper.selectMenuAllByUser(userId);
List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID)); List<SysMenuList> roleList = sysMenuMapper.selectMenuByRole(userId);
resultList=resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
List<SysMenuList> userRoleList = new ArrayList<>();
for (SysMenuList roleMenu : roleList) {
userRoleList.add(roleMenu);
for (SysMenuList userMenu : userList) {
int userMuenuState = userMenu.getState().intValue();
if (userMenu.getId().equals(roleMenu.getId()) && userMuenuState == StateType.OFF.getValue()) {
//角色表存在,用户表存在,但是已删除 = 不显示
userRoleList.remove(roleMenu);
} else if (userMenu.getId().equals(roleMenu.getId()) && userMuenuState == StateType.ON.getValue()) {
//角色表存在,用户表存在,未删除 = 显示
continue;
} else if (!userMenu.getId().equals(roleMenu.getId()) && userMuenuState == StateType.ON.getValue()) {
userRoleList.add(userMenu);
}
}
}
userRoleList = userRoleList.stream().distinct().collect(Collectors.toList());
List<SysMenuList> resultList = getLevelData(userRoleList, Long.valueOf(MENU_TOP_PARENT_ID));
resultList = resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
return resultList; return resultList;
} }
private List<SysMenuList> getLevelData(List<SysMenuList> list, Long parentcode) { private List<SysMenuList> getLevelData(List<SysMenuList> list, Long parentcode) {
List<SysMenuList> resultList = new ArrayList<>(); List<SysMenuList> resultList = new ArrayList<>();
for (SysMenuList data : list) { for (SysMenuList data : list) {
if (data.getParentId() == parentcode){ if (data.getParentId() == parentcode) {
List<SysMenuList> childList = getLevelData(list,data.getId()); List<SysMenuList> childList = getLevelData(list, data.getId());
childList=childList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList()); childList = childList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
data.setSysMenuList(childList); data.setSysMenuList(childList);
resultList.add(data); resultList.add(data);
} }
...@@ -56,33 +76,33 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -56,33 +76,33 @@ public class SysMenuServiceImpl implements SysMenuService {
} }
@Override @Override
public List<SysMenuList> getParentAll(MenuReq.GetMenuReq menu){ public List<SysMenuList> getParentAll(MenuReq.GetMenuReq menu) {
List<SysMenuList> list = sysMenuMapper.selectParentAll(); List<SysMenuList> list = sysMenuMapper.selectParentAll();
if(menu.getMenuName()!=null){ if (menu.getMenuName() != null) {
list = list.stream().filter( list = list.stream().filter(
o->(o.getMenuName()!=null && o.getMenuName().toLowerCase().contains(menu.getMenuName().toLowerCase()))) o -> (o.getMenuName() != null && o.getMenuName().toLowerCase().contains(menu.getMenuName().toLowerCase())))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID)); List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID));
resultList=resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList()); resultList = resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
return resultList; return resultList;
} }
public List<SysMenu> getAll(){ public List<SysMenu> getAll() {
List<SysMenu> list = sysMenuMapper.selectAll(); List<SysMenu> list = sysMenuMapper.selectAll();
return list; return list;
} }
@Override @Override
public SysMenu info(MenuReq.InfoMenuReq menu){ public SysMenu info(MenuReq.InfoMenuReq menu) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId()); SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
return sysMenu; return sysMenu;
} }
@Override @Override
public boolean addMenu(Long userId,MenuReq.AddMenuReq menu){ public boolean addMenu(Long userId, MenuReq.AddMenuReq menu) {
if(menu!=null){ if (menu != null) {
SysMenu sysMenu = new SysMenu(); SysMenu sysMenu = new SysMenu();
sysMenu.setCreateData(new Date()); sysMenu.setCreateData(new Date());
sysMenu.setCreateUserid(userId); sysMenu.setCreateUserid(userId);
...@@ -92,7 +112,7 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -92,7 +112,7 @@ public class SysMenuServiceImpl implements SysMenuService {
sysMenu.setMenuImage(menu.getMenuImage()); sysMenu.setMenuImage(menu.getMenuImage());
sysMenu.setPageCode(menu.getPageCode()); sysMenu.setPageCode(menu.getPageCode());
sysMenu.setParentId(menu.getParentId()); sysMenu.setParentId(menu.getParentId());
sysMenu.setSort((long)sysMenuMapper.selectMaxSort(menu.getParentId())); sysMenu.setSort((long) sysMenuMapper.selectMaxSort(menu.getParentId()));
sysMenuMapper.insert(sysMenu); sysMenuMapper.insert(sysMenu);
return true; return true;
} }
...@@ -100,10 +120,10 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -100,10 +120,10 @@ public class SysMenuServiceImpl implements SysMenuService {
} }
@Override @Override
public boolean deleteMenu(MenuReq.DeleteMenuReq menu){ public boolean deleteMenu(MenuReq.DeleteMenuReq menu) {
if(menu!=null){ if (menu != null) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId()); SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
if(sysMenu!=null){ if (sysMenu != null) {
sysMenu.setState((short) StateType.OFF.getValue()); sysMenu.setState((short) StateType.OFF.getValue());
sysMenuMapper.updateByPrimaryKey(sysMenu); sysMenuMapper.updateByPrimaryKey(sysMenu);
return true; return true;
...@@ -114,9 +134,9 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -114,9 +134,9 @@ public class SysMenuServiceImpl implements SysMenuService {
@Override @Override
public boolean updateMenu(MenuReq.UpdateMenuReq menu) { public boolean updateMenu(MenuReq.UpdateMenuReq menu) {
if(menu!=null) { if (menu != null) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId()); SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
if(sysMenu!=null){ if (sysMenu != null) {
sysMenu.setMenuName(menu.getMenuName()); sysMenu.setMenuName(menu.getMenuName());
sysMenu.setMenuUrl(menu.getMenuUrl()); sysMenu.setMenuUrl(menu.getMenuUrl());
sysMenu.setMenuImage(menu.getMenuImage()); sysMenu.setMenuImage(menu.getMenuImage());
...@@ -132,94 +152,97 @@ public class SysMenuServiceImpl implements SysMenuService { ...@@ -132,94 +152,97 @@ public class SysMenuServiceImpl implements SysMenuService {
/** /**
* 查询用户菜单关系 * 查询用户菜单关系
*
* @param userId 用户ID * @param userId 用户ID
* @return * @return
*/ */
@Override @Override
public List<SysUserMenuRsList> getUserMenu(Long userId){ public List<SysUserMenuRsList> getUserMenu(Long userId) {
List<SysUserMenuRsList> list = sysUserMenuRsMapper.selectByUser(userId); List<SysUserMenuRsList> list = sysUserMenuRsMapper.selectByUser(userId);
return list; return list;
} }
/** /**
* 用户配置菜单 * 用户配置菜单
*
* @param userId 操作人ID * @param userId 操作人ID
* @param menu 用户菜单关系数据 * @param menu 用户菜单关系数据
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveUserMenu(Long userId,MenuReq.SaveUserMenuReq menu){ public boolean saveUserMenu(Long userId, MenuReq.SaveUserMenuReq menu) {
int result = 0; int result = 0;
if(menu!=null&&menu.getMenus()!=null&&menu.getMenus().size()>0&&menu.getUserId()!=null){ if (menu != null && menu.getMenus() != null && menu.getMenus().size() > 0 && menu.getUserId() != null) {
sysUserMenuRsMapper.deleteAllByUser(menu.getUserId()); sysUserMenuRsMapper.deleteAllByUser(menu.getUserId());
for (Long menuId:menu.getMenus()) { for (Long menuId : menu.getMenus()) {
SysUserMenuRs um = sysUserMenuRsMapper.selectByUserWithMenu(menu.getUserId(),menuId); SysUserMenuRs um = sysUserMenuRsMapper.selectByUserWithMenu(menu.getUserId(), menuId);
if(um!=null){ if (um != null) {
um.setState((short)StateType.ON.getValue()); um.setState((short) StateType.ON.getValue());
result+=sysUserMenuRsMapper.updateByPrimaryKey(um); result += sysUserMenuRsMapper.updateByPrimaryKey(um);
}else{ } else {
um=new SysUserMenuRs(); um = new SysUserMenuRs();
um.setCreateDate(new Date()); um.setCreateDate(new Date());
um.setState((short)StateType.ON.getValue()); um.setState((short) StateType.ON.getValue());
um.setCreateUserid(userId); um.setCreateUserid(userId);
um.setUserId(menu.getUserId()); um.setUserId(menu.getUserId());
um.setMenuId(menuId); um.setMenuId(menuId);
result+=sysUserMenuRsMapper.insert(um); result += sysUserMenuRsMapper.insert(um);
} }
} }
} }
return result>0; return result > 0;
} }
/** /**
* 查询角色菜单关系 * 查询角色菜单关系
*
* @param roleId 角色ID * @param roleId 角色ID
* @return * @return
*/ */
@Override @Override
public List<SysRoleMenuRsList> getRoleMenu(Long roleId){ public List<SysRoleMenuRsList> getRoleMenu(Long roleId) {
List<SysRoleMenuRsList> list = sysRoleMenuRsMapper.selectByRole(roleId); List<SysRoleMenuRsList> list = sysRoleMenuRsMapper.selectByRole(roleId);
return list; return list;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveRoleMenu(Long userId,MenuReq.SaveRoleMenuReq menu){ public boolean saveRoleMenu(Long userId, MenuReq.SaveRoleMenuReq menu) {
int result = 0; int result = 0;
if(menu!=null&&menu.getMenus()!=null&&menu.getMenus().size()>0&&menu.getRoleId()!=null){ if (menu != null && menu.getMenus() != null && menu.getMenus().size() > 0 && menu.getRoleId() != null) {
sysRoleMenuRsMapper.deleteAllByRole(menu.getRoleId()); sysRoleMenuRsMapper.deleteAllByRole(menu.getRoleId());
for (Long menuId:menu.getMenus()) { for (Long menuId : menu.getMenus()) {
SysRoleMenuRs rm= sysRoleMenuRsMapper.selectByUserWithRole(menu.getRoleId(),menuId); SysRoleMenuRs rm = sysRoleMenuRsMapper.selectByUserWithRole(menu.getRoleId(), menuId);
if(rm!=null){ if (rm != null) {
rm.setState((short)StateType.ON.getValue()); rm.setState((short) StateType.ON.getValue());
result+=sysRoleMenuRsMapper.updateByPrimaryKey(rm); result += sysRoleMenuRsMapper.updateByPrimaryKey(rm);
}else{ } else {
rm=new SysRoleMenuRs(); rm = new SysRoleMenuRs();
rm.setCreateDate(new Date()); rm.setCreateDate(new Date());
rm.setState((short)StateType.ON.getValue()); rm.setState((short) StateType.ON.getValue());
rm.setCreateUserid(userId); rm.setCreateUserid(userId);
rm.setRoleId(menu.getRoleId()); rm.setRoleId(menu.getRoleId());
rm.setMenuId(menuId); rm.setMenuId(menuId);
result+=sysRoleMenuRsMapper.insert(rm); result += sysRoleMenuRsMapper.insert(rm);
} }
} }
} }
return result>0; return result > 0;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updateSort(Long userId, MenuReq.UpdateSortReq menu) { public boolean updateSort(Long userId, MenuReq.UpdateSortReq menu) {
int result=0; int result = 0;
if(menu!=null&&menu.getMenus()!=null&&menu.getMenus().size()>0){ if (menu != null && menu.getMenus() != null && menu.getMenus().size() > 0) {
for (SysMenu info:menu.getMenus()) { for (SysMenu info : menu.getMenus()) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(info.getId()); SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(info.getId());
sysMenu.setParentId(info.getParentId()); sysMenu.setParentId(info.getParentId());
sysMenu.setSort(info.getSort()); sysMenu.setSort(info.getSort());
result+=sysMenuMapper.updateByPrimaryKey(sysMenu); result += sysMenuMapper.updateByPrimaryKey(sysMenu);
} }
} }
return result>0; return result > 0;
} }
} }
...@@ -62,8 +62,16 @@ ...@@ -62,8 +62,16 @@
from SYS_MENU from SYS_MENU
where "STATE"=1 where "STATE"=1
</select> </select>
<select id="selectMenuByUser" resultMap="sysMenuResultMap"> <select id="selectMenuAllByUser" resultMap="sysMenuResultMap">
select DISTINCT m.ID,m.MENU_NAME,m.MENU_URL,m.MENU_IMAGE,m.PARENT_ID,m.PAGE_CODE,m.SORT select DISTINCT m.ID,m.MENU_NAME,m.MENU_URL,m.MENU_IMAGE,m.PARENT_ID,m.PAGE_CODE,m.SORT,umr.STATE
from
SYS_USER_MENU_RS umr
LEFT JOIN
SYS_MENU m on umr.MENU_ID = m.ID
where m.STATE=1 and umr.USER_ID = #{userId,jdbcType=DECIMAL}
</select>
<select id="selectMenuByRole" resultMap="sysMenuResultMap">
select DISTINCT m.ID,m.MENU_NAME,m.MENU_URL,m.MENU_IMAGE,m.PARENT_ID,m.PAGE_CODE,m.SORT,rmr.STATE
from from
SYS_ROLE_MENU_RS rmr SYS_ROLE_MENU_RS rmr
LEFT JOIN LEFT JOIN
...@@ -71,18 +79,9 @@ ...@@ -71,18 +79,9 @@
LEFT JOIN LEFT JOIN
SYS_USER_ROLE_RS urr on rmr.ROLE_ID = urr.Role_ID SYS_USER_ROLE_RS urr on rmr.ROLE_ID = urr.Role_ID
where rmr.STATE=1 and m.STATE=1 and urr.STATE=1 and urr.USER_ID = #{userId,jdbcType=DECIMAL} where rmr.STATE=1 and m.STATE=1 and urr.STATE=1 and urr.USER_ID = #{userId,jdbcType=DECIMAL}
union
select DISTINCT m.ID,m.MENU_NAME,m.MENU_URL,m.MENU_IMAGE,m.PARENT_ID,m.PAGE_CODE,m.SORT
from
SYS_USER_MENU_RS umr
LEFT JOIN
SYS_MENU m on umr.MENU_ID = m.ID
where umr.STATE=1 and m.STATE=1 and umr.USER_ID = #{userId,jdbcType=DECIMAL}
</select> </select>
<select id="selectMaxSort" resultType="java.lang.Integer"> <select id="selectMaxSort" resultType="java.lang.Integer">
select nvl( MAX(SORT),0) AS SORT select nvl(MAX(SORT),0) AS SORT
from SYS_MENU from SYS_MENU
where PARENT_ID=#{parentId,jdbcType=DECIMAL} where PARENT_ID=#{parentId,jdbcType=DECIMAL}
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment