|
@@ -7,25 +7,24 @@ import cc.iotkit.common.exception.BizException;
|
|
|
import cc.iotkit.common.utils.MapstructUtils;
|
|
|
import cc.iotkit.common.utils.StringUtils;
|
|
|
import cc.iotkit.data.dao.SysMenuRepository;
|
|
|
-import cc.iotkit.data.model.TbSysConfig;
|
|
|
import cc.iotkit.data.model.TbSysMenu;
|
|
|
import cc.iotkit.data.system.ISysMenuData;
|
|
|
import cc.iotkit.data.util.PredicateBuilder;
|
|
|
-import cc.iotkit.model.system.SysConfig;
|
|
|
import cc.iotkit.model.system.SysMenu;
|
|
|
-import com.querydsl.core.BooleanBuilder;
|
|
|
-import com.querydsl.core.types.Predicate;
|
|
|
+import com.querydsl.core.types.Projections;
|
|
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.context.annotation.Primary;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import javax.persistence.EntityManager;
|
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static cc.iotkit.data.model.QTbSysMenu.tbSysMenu;
|
|
|
+import static cc.iotkit.data.model.QTbSysRole.tbSysRole;
|
|
|
+import static cc.iotkit.data.model.QTbSysRoleMenu.tbSysRoleMenu;
|
|
|
+import static cc.iotkit.data.model.QTbSysUserRole.tbSysUserRole;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -40,6 +39,8 @@ public class SysMenuDataImpl implements ISysMenuData {
|
|
|
|
|
|
private final SysMenuRepository sysMenuRepository;
|
|
|
|
|
|
+ private final JPAQueryFactory jpaQueryFactory;
|
|
|
+
|
|
|
@Override
|
|
|
public SysMenu findById(Long id) {
|
|
|
TbSysMenu tbSysMenu = sysMenuRepository.findById(id).orElseThrow(() ->
|
|
@@ -108,37 +109,33 @@ public class SysMenuDataImpl implements ISysMenuData {
|
|
|
@Override
|
|
|
public List<SysMenu> selectMenuList(SysMenu menu, Long userId, boolean isSuperAdmin) {
|
|
|
|
|
|
- PredicateBuilder predicateBuilder = PredicateBuilder.instance(tbSysMenu.menuId.isNotNull());
|
|
|
-
|
|
|
+ PredicateBuilder predicateBuilder = PredicateBuilder.instance()
|
|
|
+ .and(StringUtils.isNotBlank(menu.getMenuName()), () -> tbSysMenu.menuName.like(menu.getMenuName()))
|
|
|
+ .and(StringUtils.isNotBlank(menu.getVisible()), () -> tbSysMenu.visible.eq(menu.getVisible()))
|
|
|
+ .and(StringUtils.isNotBlank(menu.getStatus()), () -> tbSysMenu.status.eq(menu.getStatus()));
|
|
|
|
|
|
// 管理员显示所有菜单信息
|
|
|
+ List<TbSysMenu> tbSysMenuList;
|
|
|
if (isSuperAdmin) {
|
|
|
- predicateBuilder
|
|
|
- .and(StringUtils.isNotBlank(menu.getMenuName()), () -> tbSysMenu.menuName.like(menu.getMenuName()))
|
|
|
- .and(StringUtils.isNotBlank(menu.getVisible()), () -> tbSysMenu.visible.eq(menu.getVisible()))
|
|
|
- .and(StringUtils.isNotBlank(menu.getStatus()), () -> tbSysMenu.status.eq(menu.getStatus()));
|
|
|
-
|
|
|
- menuList = baseMapper.selectVoList(new LambdaQueryWrapper<SysMenu>()
|
|
|
- .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
|
|
|
- .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
|
|
|
- .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
|
|
|
- .orderByAsc(SysMenu::getParentId)
|
|
|
- .orderByAsc(SysMenu::getOrderNum));
|
|
|
+ tbSysMenuList = jpaQueryFactory.select(tbSysMenu)
|
|
|
+ .where(predicateBuilder.build())
|
|
|
+ .orderBy(tbSysMenu.parentId.asc(), tbSysMenu.orderNum.asc()).fetch();
|
|
|
} else {
|
|
|
- predicateBuilder.and(tbSysMenu.menuId.eq(userId));
|
|
|
- BooleanBuilder builder = new BooleanBuilder();
|
|
|
- QueryWrapper<SysMenu> wrapper = Wrappers.query();
|
|
|
- wrapper.eq("sur.user_id", userId)
|
|
|
- .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName())
|
|
|
- .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible())
|
|
|
- .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus())
|
|
|
- .orderByAsc("m.parent_id")
|
|
|
- .orderByAsc("m.order_num");
|
|
|
- menuList = baseMapper.selectMenuListByUserId(wrapper);
|
|
|
+ tbSysMenuList = jpaQueryFactory.select(Projections.bean(TbSysMenu.class, tbSysMenu.menuId.countDistinct().as(tbSysMenu.menuId),
|
|
|
+ tbSysMenu.parentId, tbSysMenu.menuName, tbSysMenu.path, tbSysMenu.component, tbSysMenu.queryParam,
|
|
|
+ tbSysMenu.visible, tbSysMenu.status, tbSysMenu.perms, tbSysMenu.isFrame, tbSysMenu.isCache, tbSysMenu.menuType,
|
|
|
+ tbSysMenu.icon, tbSysMenu.orderNum, tbSysMenu.createTime))
|
|
|
+ .from(tbSysMenu)
|
|
|
+ .leftJoin(tbSysRoleMenu).on(tbSysMenu.menuId.eq(tbSysRoleMenu.menuId))
|
|
|
+ .leftJoin(tbSysUserRole).on(tbSysRoleMenu.roleId.eq(tbSysUserRole.roleId))
|
|
|
+ .leftJoin(tbSysRole).on(tbSysUserRole.roleId.eq(tbSysRole.roleId))
|
|
|
+ .where(predicateBuilder
|
|
|
+ .and(tbSysUserRole.userId.eq(userId))
|
|
|
+ .build())
|
|
|
+ .orderBy(tbSysMenu.parentId.asc(), tbSysMenu.orderNum.asc()).fetch();
|
|
|
+
|
|
|
}
|
|
|
- Predicate predicate = predicateBuilder.build();
|
|
|
- sysMenuRepository.findAll(predicate);
|
|
|
+ return MapstructUtils.convert(tbSysMenuList, SysMenu.class);
|
|
|
|
|
|
- return menuList;
|
|
|
}
|
|
|
}
|