update 优化 根据租户套餐ID查询菜单树信息 接口写法

This commit is contained in:
疯狂的狮子li 2023-02-06 11:37:08 +08:00
parent bbfd0d1580
commit f3d1f12190
7 changed files with 22 additions and 36 deletions

View File

@ -85,7 +85,7 @@ public class SysMenuController extends BaseController {
public R<MenuTreeSelectVo> tenantPackageMenuTreeselect(@PathVariable("packageId") Long packageId) { public R<MenuTreeSelectVo> tenantPackageMenuTreeselect(@PathVariable("packageId") Long packageId) {
List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId()); List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId());
MenuTreeSelectVo selectVo = new MenuTreeSelectVo(); MenuTreeSelectVo selectVo = new MenuTreeSelectVo();
selectVo.setCheckedKeys(menuService.selectMenuListByTenantPackageId(packageId)); selectVo.setCheckedKeys(menuService.selectMenuListByPackageId(packageId));
selectVo.setMenus(menuService.buildMenuTreeSelect(menus)); selectVo.setMenus(menuService.buildMenuTreeSelect(menus));
return R.ok(selectVo); return R.ok(selectVo);
} }

View File

@ -80,12 +80,4 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenuMapper, SysMenu, Sy
*/ */
List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
/**
* 根据租户套餐菜单ID查询菜单树信息
*
* @param menuIds 租户套餐菜单ID
* @return 选中菜单列表
*/
List<Long> selectMenuListByTenantPackageMenuId(@Param("menuIds") String menuIds);
} }

View File

@ -1,9 +1,8 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.SysTenantPackage; import com.ruoyi.system.domain.SysTenantPackage;
import com.ruoyi.system.domain.vo.SysTenantPackageVo; import com.ruoyi.system.domain.vo.SysTenantPackageVo;
import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/** /**
* 租户套餐Mapper接口 * 租户套餐Mapper接口
@ -12,12 +11,4 @@ import org.apache.ibatis.annotations.Param;
*/ */
public interface SysTenantPackageMapper extends BaseMapperPlus<SysTenantPackageMapper, SysTenantPackage, SysTenantPackageVo> { public interface SysTenantPackageMapper extends BaseMapperPlus<SysTenantPackageMapper, SysTenantPackage, SysTenantPackageVo> {
/**
* 获取租户套餐菜单id
*
* @param packageId 租户套餐id
* @return 菜单id
*/
String selectMenuIds(@Param("packageId") Long packageId);
} }

View File

@ -71,7 +71,7 @@ public interface ISysMenuService {
* @param packageId 租户套餐ID * @param packageId 租户套餐ID
* @return 选中菜单列表 * @return 选中菜单列表
*/ */
List<Long> selectMenuListByTenantPackageId(Long packageId); List<Long> selectMenuListByPackageId(Long packageId);
/** /**
* 构建前端路由所需要的菜单 * 构建前端路由所需要的菜单

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -16,6 +17,7 @@ import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRole;
import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysTenantPackage;
import com.ruoyi.system.domain.bo.SysMenuBo; import com.ruoyi.system.domain.bo.SysMenuBo;
import com.ruoyi.system.domain.vo.MetaVo; import com.ruoyi.system.domain.vo.MetaVo;
import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.domain.vo.RouterVo;
@ -158,10 +160,23 @@ public class SysMenuServiceImpl implements ISysMenuService {
* @return 选中菜单列表 * @return 选中菜单列表
*/ */
@Override @Override
public List<Long> selectMenuListByTenantPackageId(Long packageId) { public List<Long> selectMenuListByPackageId(Long packageId) {
String menuIds = sysTenantPackageMapper.selectMenuIds(packageId); SysTenantPackage tenantPackage = sysTenantPackageMapper.selectById(packageId);
return StringUtils.isNotBlank(menuIds) String menuIds = tenantPackage.getMenuIds();
? baseMapper.selectMenuListByTenantPackageMenuId(menuIds) : new ArrayList<>(); if (StringUtils.isBlank(menuIds)) {
return List.of();
}
List<Long> parentIds = null;
if (tenantPackage.getMenuCheckStrictly()) {
parentIds = baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>()
.select(SysMenu::getParentId)
.in(SysMenu::getMenuId, menuIds))
.stream().distinct().map(Convert::toLong).toList();
}
return baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>()
.in(SysMenu::getMenuId, menuIds)
.notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds))
.stream().map(Convert::toLong).toList();
} }
/** /**

View File

@ -82,10 +82,4 @@
where m.status = '0' and rm.role_id = #{roleId} where m.status = '0' and rm.role_id = #{roleId}
</select> </select>
<select id="selectMenuListByTenantPackageMenuId" resultType="java.lang.Long">
select m.menu_id
from sys_menu m
where m.menu_id in (${menuIds})
</select>
</mapper> </mapper>

View File

@ -4,10 +4,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysTenantPackageMapper"> <mapper namespace="com.ruoyi.system.mapper.SysTenantPackageMapper">
<select id="selectMenuIds" resultType="java.lang.String">
SELECT menu_ids
FROM sys_tenant_package
WHERE package_id = #{packageId}
</select>
</mapper> </mapper>