parent
e951e0c7e3
commit
3503c764cf
@ -0,0 +1,167 @@
|
||||
package com.rabbiter.market.service.system.menu.impl;
|
||||
|
||||
import com.rabbiter.market.domain.system.menu.Menu;
|
||||
import com.rabbiter.market.mapper.system.menu.MenuMapper;
|
||||
import com.rabbiter.market.qo.system.MenuQuery;
|
||||
import com.rabbiter.market.service.system.menu.IMenuService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {
|
||||
@Autowired
|
||||
private MenuMapper menuMapper;
|
||||
|
||||
@Override
|
||||
public List<Menu> findAll() {
|
||||
|
||||
//查询目录菜单
|
||||
// select * from t_menu where type='0' and state='0'
|
||||
QueryWrapper<Menu> wrapper1 = new QueryWrapper<Menu>().eq("type", Menu.TYPE_CATALOGUE).eq("state", Menu.STATE_NORMAL);
|
||||
List<Menu> catalogs = super.list(wrapper1);
|
||||
if (catalogs.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
//得到目录下的菜单信息
|
||||
for (Menu catalog : catalogs) {
|
||||
//select * from t_menu where type='1' and parent_id=#{id} and state='0'
|
||||
QueryWrapper<Menu> wrapper2 = new QueryWrapper<Menu>().eq("type", Menu.TYPE_MENU).eq("state", Menu.STATE_NORMAL)
|
||||
.eq("parent_id", catalog.getId());
|
||||
List<Menu> menus = super.list(wrapper2);
|
||||
//获取菜单下的按钮
|
||||
for (Menu menu : menus) {
|
||||
//select * from t_menu where type='2' and parent_id=#{id} and state='0'
|
||||
QueryWrapper<Menu> wrapper3 = new QueryWrapper<Menu>().eq("type", Menu.TYPE_BUTTON).eq("state", Menu.STATE_NORMAL)
|
||||
.eq("parent_id", menu.getId());
|
||||
List<Menu> buttons = super.list(wrapper3);
|
||||
if (!buttons.isEmpty()) {
|
||||
menu.setChildren(buttons);
|
||||
}
|
||||
}
|
||||
catalog.setChildren(menus);
|
||||
}
|
||||
return catalogs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Menu> queryByRids(Set<Long> rids) {
|
||||
List<Menu> result = menuMapper.queryByRids(rids);
|
||||
if (result.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
//目录
|
||||
Set<Menu> catalogs = new HashSet<>();
|
||||
//菜单
|
||||
Set<Menu> menus = new HashSet<>();
|
||||
//按钮
|
||||
Set<Menu> buttons = new HashSet<>();
|
||||
|
||||
Iterator<Menu> iterator1 = result.iterator();
|
||||
while (iterator1.hasNext()) {
|
||||
Menu item = iterator1.next();
|
||||
switch (item.getType()) {
|
||||
case Menu.TYPE_CATALOGUE:
|
||||
catalogs.add(item);
|
||||
break;
|
||||
case Menu.TYPE_MENU:
|
||||
menus.add(item);
|
||||
break;
|
||||
case Menu.TYPE_BUTTON:
|
||||
buttons.add(item);
|
||||
break;
|
||||
}
|
||||
iterator1.remove();
|
||||
}
|
||||
|
||||
for (Menu catalog : catalogs) {
|
||||
catalog.setChildren(new ArrayList<>());
|
||||
for (Menu menu : menus) {
|
||||
menu.setChildren(new ArrayList<>());
|
||||
for (Menu button : buttons) {
|
||||
//将按钮分配到对应的菜单下
|
||||
if (button.getParentId() == menu.getId()) {
|
||||
menu.getChildren().add(button);
|
||||
}
|
||||
}
|
||||
//将菜单分配到对应的目录下
|
||||
if (menu.getParentId() == catalog.getId()) {
|
||||
catalog.getChildren().add(menu);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
List<Menu> catalogues = new ArrayList<>();
|
||||
//去重
|
||||
for (Menu catalog : catalogs) {
|
||||
catalogues.add(catalog);
|
||||
}
|
||||
return catalogues;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Menu> queryPageByQo(MenuQuery qo) {
|
||||
Page<Menu> page = new Page<>(qo.getCurrentPage(), qo.getPageSize());
|
||||
//查询目录
|
||||
QueryWrapper<Menu> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("type", Menu.TYPE_CATALOGUE);
|
||||
wrapper.like(StringUtils.hasText(qo.getName()), "label", qo.getName());
|
||||
|
||||
Page<Menu> page1 = super.page(page, wrapper);
|
||||
//补全目录的子集
|
||||
List<Menu> catalogs = page1.getRecords();
|
||||
if (catalogs == null || catalogs.isEmpty()) {
|
||||
return page1;
|
||||
}
|
||||
/*补全目录下的菜单*/
|
||||
for (Menu catalog : catalogs) {
|
||||
QueryWrapper<Menu> wrapper_menu = new QueryWrapper<Menu>()
|
||||
.eq("type", Menu.TYPE_MENU)
|
||||
.eq("parent_id", catalog.getId());
|
||||
List<Menu> menus = super.list(wrapper_menu);
|
||||
if (menus == null || menus.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
/*补全菜单下的按钮*/
|
||||
for (Menu menu : menus) {
|
||||
QueryWrapper<Menu> wrapper_button = new QueryWrapper<Menu>()
|
||||
.eq("type", Menu.TYPE_BUTTON)
|
||||
.eq("parent_id", menu.getId());
|
||||
List<Menu> buttons = super.list(wrapper_button);
|
||||
if (buttons == null || buttons.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
menu.setChildren(buttons);
|
||||
}
|
||||
catalog.setChildren(menus);
|
||||
}
|
||||
return page1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> listParentByIds(List<Long> ids) {
|
||||
List<Long> parentIds = new ArrayList<>();
|
||||
ArrayList<Long> btnIds = new ArrayList<>();
|
||||
QueryWrapper<Menu> wrapper = new QueryWrapper<Menu>().in("id", ids);
|
||||
List<Menu> list = super.list(wrapper);
|
||||
if (list==null){
|
||||
return parentIds;
|
||||
}
|
||||
for (Menu menu : list) {
|
||||
if (Menu.TYPE_MENU.equals(menu.getType())){
|
||||
//菜单
|
||||
parentIds.add(menu.getParentId());
|
||||
}else {
|
||||
//按钮
|
||||
parentIds.add(menu.getParentId());
|
||||
btnIds.add(menu.getId());
|
||||
}
|
||||
}
|
||||
return parentIds;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue