Commit 83c9ffd0 by Suvalue

用户菜单修改

parent 9394d597
......@@ -17,7 +17,9 @@ public interface SysMenuMapper {
int updateByPrimaryKey(SysMenu record);
List<SysMenuList> selectMenuByUser(Long userId);
List<SysMenuList> selectMenuAllByUser(Long userId);
List<SysMenuList> selectMenuByRole(Long userId);
List<SysMenuList> selectParentAll();
......
......@@ -5,7 +5,6 @@ import com.bsoft.admin.mapper.SysMenuMapper;
import com.bsoft.admin.mapper.SysRoleMenuRsMapper;
import com.bsoft.admin.mapper.SysUserMenuRsMapper;
import com.bsoft.admin.model.SysMenu;
import com.bsoft.admin.model.SysRole;
import com.bsoft.admin.model.SysRoleMenuRs;
import com.bsoft.admin.model.SysUserMenuRs;
import com.bsoft.admin.model.reqmodel.MenuReq;
......@@ -17,7 +16,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.beans.Transient;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
......@@ -36,53 +34,75 @@ public class SysMenuServiceImpl implements SysMenuService {
@Override
public List<SysMenuList> getMenu(Long userId) throws Exception {
List<SysMenuList> list = sysMenuMapper.selectMenuByUser(userId);
List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID));
resultList=resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
List<SysMenuList> userList = sysMenuMapper.selectMenuAllByUser(userId);
List<SysMenuList> roleList = sysMenuMapper.selectMenuByRole(userId);
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;
}
private List<SysMenuList> getLevelData(List<SysMenuList> list, Long parentcode) {
List<SysMenuList> resultList = new ArrayList<>();
for (SysMenuList data : list) {
if (data.getParentId() == parentcode){
List<SysMenuList> childList = getLevelData(list,data.getId());
childList=childList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
data.setSysMenuList(childList);
resultList.add(data);
}
if (data.getParentId() == parentcode) {
List<SysMenuList> childList = getLevelData(list, data.getId());
childList = childList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
data.setSysMenuList(childList);
resultList.add(data);
}
}
return resultList;
}
@Override
public List<SysMenuList> getParentAll(MenuReq.GetMenuReq menu){
public List<SysMenuList> getParentAll(MenuReq.GetMenuReq menu) {
List<SysMenuList> list = sysMenuMapper.selectParentAll();
if(menu.getMenuName()!=null){
if (menu.getMenuName() != null) {
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());
}
List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID));
resultList=resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
List<SysMenuList> resultList = getLevelData(list, Long.valueOf(MENU_TOP_PARENT_ID));
resultList = resultList.stream().sorted(Comparator.comparing(SysMenu::getSort)).collect(Collectors.toList());
return resultList;
}
public List<SysMenu> getAll(){
public List<SysMenu> getAll() {
List<SysMenu> list = sysMenuMapper.selectAll();
return list;
}
@Override
public SysMenu info(MenuReq.InfoMenuReq menu){
public SysMenu info(MenuReq.InfoMenuReq menu) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
return sysMenu;
}
@Override
public boolean addMenu(Long userId,MenuReq.AddMenuReq menu){
if(menu!=null){
public boolean addMenu(Long userId, MenuReq.AddMenuReq menu) {
if (menu != null) {
SysMenu sysMenu = new SysMenu();
sysMenu.setCreateData(new Date());
sysMenu.setCreateUserid(userId);
......@@ -92,7 +112,7 @@ public class SysMenuServiceImpl implements SysMenuService {
sysMenu.setMenuImage(menu.getMenuImage());
sysMenu.setPageCode(menu.getPageCode());
sysMenu.setParentId(menu.getParentId());
sysMenu.setSort((long)sysMenuMapper.selectMaxSort(menu.getParentId()));
sysMenu.setSort((long) sysMenuMapper.selectMaxSort(menu.getParentId()));
sysMenuMapper.insert(sysMenu);
return true;
}
......@@ -100,10 +120,10 @@ public class SysMenuServiceImpl implements SysMenuService {
}
@Override
public boolean deleteMenu(MenuReq.DeleteMenuReq menu){
if(menu!=null){
public boolean deleteMenu(MenuReq.DeleteMenuReq menu) {
if (menu != null) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
if(sysMenu!=null){
if (sysMenu != null) {
sysMenu.setState((short) StateType.OFF.getValue());
sysMenuMapper.updateByPrimaryKey(sysMenu);
return true;
......@@ -114,9 +134,9 @@ public class SysMenuServiceImpl implements SysMenuService {
@Override
public boolean updateMenu(MenuReq.UpdateMenuReq menu) {
if(menu!=null) {
if (menu != null) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menu.getMenuId());
if(sysMenu!=null){
if (sysMenu != null) {
sysMenu.setMenuName(menu.getMenuName());
sysMenu.setMenuUrl(menu.getMenuUrl());
sysMenu.setMenuImage(menu.getMenuImage());
......@@ -132,94 +152,97 @@ public class SysMenuServiceImpl implements SysMenuService {
/**
* 查询用户菜单关系
*
* @param userId 用户ID
* @return
*/
@Override
public List<SysUserMenuRsList> getUserMenu(Long userId){
public List<SysUserMenuRsList> getUserMenu(Long userId) {
List<SysUserMenuRsList> list = sysUserMenuRsMapper.selectByUser(userId);
return list;
}
/**
* 用户配置菜单
*
* @param userId 操作人ID
* @param menu 用户菜单关系数据
* @param menu 用户菜单关系数据
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveUserMenu(Long userId,MenuReq.SaveUserMenuReq menu){
public boolean saveUserMenu(Long userId, MenuReq.SaveUserMenuReq menu) {
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());
for (Long menuId:menu.getMenus()) {
SysUserMenuRs um = sysUserMenuRsMapper.selectByUserWithMenu(menu.getUserId(),menuId);
if(um!=null){
um.setState((short)StateType.ON.getValue());
result+=sysUserMenuRsMapper.updateByPrimaryKey(um);
}else{
um=new SysUserMenuRs();
for (Long menuId : menu.getMenus()) {
SysUserMenuRs um = sysUserMenuRsMapper.selectByUserWithMenu(menu.getUserId(), menuId);
if (um != null) {
um.setState((short) StateType.ON.getValue());
result += sysUserMenuRsMapper.updateByPrimaryKey(um);
} else {
um = new SysUserMenuRs();
um.setCreateDate(new Date());
um.setState((short)StateType.ON.getValue());
um.setState((short) StateType.ON.getValue());
um.setCreateUserid(userId);
um.setUserId(menu.getUserId());
um.setMenuId(menuId);
result+=sysUserMenuRsMapper.insert(um);
result += sysUserMenuRsMapper.insert(um);
}
}
}
return result>0;
return result > 0;
}
/**
* 查询角色菜单关系
*
* @param roleId 角色ID
* @return
*/
@Override
public List<SysRoleMenuRsList> getRoleMenu(Long roleId){
public List<SysRoleMenuRsList> getRoleMenu(Long roleId) {
List<SysRoleMenuRsList> list = sysRoleMenuRsMapper.selectByRole(roleId);
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveRoleMenu(Long userId,MenuReq.SaveRoleMenuReq menu){
public boolean saveRoleMenu(Long userId, MenuReq.SaveRoleMenuReq menu) {
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());
for (Long menuId:menu.getMenus()) {
SysRoleMenuRs rm= sysRoleMenuRsMapper.selectByUserWithRole(menu.getRoleId(),menuId);
if(rm!=null){
rm.setState((short)StateType.ON.getValue());
result+=sysRoleMenuRsMapper.updateByPrimaryKey(rm);
}else{
rm=new SysRoleMenuRs();
for (Long menuId : menu.getMenus()) {
SysRoleMenuRs rm = sysRoleMenuRsMapper.selectByUserWithRole(menu.getRoleId(), menuId);
if (rm != null) {
rm.setState((short) StateType.ON.getValue());
result += sysRoleMenuRsMapper.updateByPrimaryKey(rm);
} else {
rm = new SysRoleMenuRs();
rm.setCreateDate(new Date());
rm.setState((short)StateType.ON.getValue());
rm.setState((short) StateType.ON.getValue());
rm.setCreateUserid(userId);
rm.setRoleId(menu.getRoleId());
rm.setMenuId(menuId);
result+=sysRoleMenuRsMapper.insert(rm);
result += sysRoleMenuRsMapper.insert(rm);
}
}
}
return result>0;
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateSort(Long userId, MenuReq.UpdateSortReq menu) {
int result=0;
if(menu!=null&&menu.getMenus()!=null&&menu.getMenus().size()>0){
for (SysMenu info:menu.getMenus()) {
int result = 0;
if (menu != null && menu.getMenus() != null && menu.getMenus().size() > 0) {
for (SysMenu info : menu.getMenus()) {
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(info.getId());
sysMenu.setParentId(info.getParentId());
sysMenu.setSort(info.getSort());
result+=sysMenuMapper.updateByPrimaryKey(sysMenu);
result += sysMenuMapper.updateByPrimaryKey(sysMenu);
}
}
return result>0;
return result > 0;
}
}
......@@ -23,11 +23,11 @@
select SEQ_SYS_MENU_ID.nextval from dual
</selectKey>
insert into SYS_MENU (ID,CREATE_DATA, CREATE_USERID, "STATE",
MENU_NAME, MENU_URL, MENU_IMAGE,
MENU_NAME, MENU_URL, MENU_IMAGE,
PARENT_ID, PAGE_CODE, SORT
)
values (#{id,jdbcType=DECIMAL},#{createData,jdbcType=TIMESTAMP}, #{createUserid,jdbcType=DECIMAL}, #{state,jdbcType=DECIMAL},
#{menuName,jdbcType=VARCHAR}, #{menuUrl,jdbcType=VARCHAR}, #{menuImage,jdbcType=VARCHAR},
#{menuName,jdbcType=VARCHAR}, #{menuUrl,jdbcType=VARCHAR}, #{menuImage,jdbcType=VARCHAR},
#{parentId,jdbcType=DECIMAL}, #{pageCode,jdbcType=VARCHAR}, #{sort,jdbcType=DECIMAL}
)
</insert>
......@@ -62,8 +62,16 @@
from SYS_MENU
where "STATE"=1
</select>
<select id="selectMenuByUser" resultMap="sysMenuResultMap">
select DISTINCT m.ID,m.MENU_NAME,m.MENU_URL,m.MENU_IMAGE,m.PARENT_ID,m.PAGE_CODE,m.SORT
<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,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
SYS_ROLE_MENU_RS rmr
LEFT JOIN
......@@ -71,18 +79,9 @@
LEFT JOIN
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}
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 id="selectMaxSort" resultType="java.lang.Integer">
select nvl( MAX(SORT),0) AS SORT
select nvl(MAX(SORT),0) AS SORT
from SYS_MENU
where PARENT_ID=#{parentId,jdbcType=DECIMAL}
</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