diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java index 3a10fa9b4..455852cc5 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java @@ -35,7 +35,7 @@ public class SysStatisticsUrl extends BaseEntity { * 被统计菜单ID */ @TableField("stat_menu_id") - private String statMenuId; + private Long statMenuId; /** * 被统计的URL diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java index bb25eacfc..39e1b0d08 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java @@ -2,6 +2,9 @@ package cn.stylefeng.roses.kernel.system.modular.home.mapper; import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsUrl; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 常用功能列表 Mapper 接口 @@ -11,4 +14,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SysStatisticsUrlMapper extends BaseMapper { + /** + * 根据统计urlId集合获取菜单id集合 + * + * @author fengshuonan + * @date 2022/2/12 18:55 + */ + List getMenuIdsByStatUrlIdList(@Param("statUrlIds") List statUrlIds); + } diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml index f42f50e3f..f2095cb41 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file + diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml index 7ad6d5c33..644bc28f3 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml @@ -1,5 +1,21 @@ - + - \ No newline at end of file + + + diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java index 65ae42f48..c494ad626 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java @@ -34,7 +34,7 @@ public class SysStatisticsUrlRequest extends BaseRequest { * 被统计菜单ID */ @ChineseDescription("被统计菜单ID") - private String statMenuId; + private Long statMenuId; /** * 被统计的URL diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java index e42b32625..925068989 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java @@ -19,11 +19,12 @@ import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsCount; import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsUrl; +import cn.stylefeng.roses.kernel.system.modular.home.mapper.SysStatisticsUrlMapper; import cn.stylefeng.roses.kernel.system.modular.home.service.HomePageService; import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsCountService; import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsUrlService; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; -import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuService; +import cn.stylefeng.roses.kernel.system.modular.menu.mapper.SysMenuMapper; import cn.stylefeng.roses.kernel.system.modular.organization.entity.HrOrganization; import cn.stylefeng.roses.kernel.system.modular.organization.service.HrOrganizationService; import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; @@ -75,7 +76,10 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi private SysStatisticsUrlService sysStatisticsUrlService; @Resource - private SysMenuService sysMenuService; + private SysStatisticsUrlMapper sysStatisticsUrlMapper; + + @Resource + private SysMenuMapper sysMenuMapper; @Override public List getRecentLogs() { @@ -156,24 +160,29 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi LoginUser loginUser = LoginContext.me().getLoginUser(); List statList = sysStatisticsCountService.list( Wrappers.lambdaQuery(SysStatisticsCount.class).eq(SysStatisticsCount::getUserId, loginUser.getUserId()).orderByDesc(SysStatisticsCount::getStatCount)); - List statUrlId = statList.stream().map(SysStatisticsCount::getStatUrlId).collect(Collectors.toList()); + List statUrlIdList = statList.stream().map(SysStatisticsCount::getStatUrlId).collect(Collectors.toList()); // 获取系统常驻常用功能 LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(SysStatisticsUrl.class) .eq(SysStatisticsUrl::getAlwaysShow, YesOrNotEnum.Y) - .or() - .in(ObjectUtil.isNotEmpty(statUrlId), SysStatisticsUrl::getStatUrlId, statUrlId) - .select(SysStatisticsUrl::getStatMenuId); + .select(SysStatisticsUrl::getStatUrlId); List alwaysShowList = sysStatisticsUrlService.list(wrapper); - // 获取菜单 - List usualMenuIds = alwaysShowList.stream().map(SysStatisticsUrl::getStatMenuId).collect(Collectors.toList()); + // 将常驻功能放在统计的常用功能最前边 + if (ObjectUtil.isNotEmpty(alwaysShowList)) { + statUrlIdList.addAll(0, alwaysShowList.stream().map(SysStatisticsUrl::getStatUrlId).collect(Collectors.toList())); + } + + // 如果statUrlId大于8,则只截取8个 + if (statUrlIdList.size() > 8) { + statUrlIdList = statUrlIdList.subList(0, 8); + } + + // 获取菜单id集合 + List usualMenuIds = sysStatisticsUrlMapper.getMenuIdsByStatUrlIdList(statUrlIdList); // 获取菜单对应的图标和名称信息 - LambdaQueryWrapper sysMenuLambdaQueryWrapper = Wrappers.lambdaQuery(SysMenu.class) - .in(SysMenu::getMenuId, usualMenuIds) - .select(SysMenu::getMenuName, SysMenu::getAntdvIcon, SysMenu::getAntdvRouter); - List list = sysMenuService.list(sysMenuLambdaQueryWrapper); + List list = sysMenuMapper.getMenuStatInfoByMenuIds(usualMenuIds); // 菜单的icon需要转为大写驼峰 for (SysMenu sysMenu : list) { @@ -182,6 +191,7 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi sysMenu.setAntdvIcon(StrUtil.upperFirst(StrUtil.toCamelCase(replace))); } } + return list; } diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java index 1f007654a..7d6ee65ac 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java @@ -90,13 +90,13 @@ public class SysStatisticsUrlServiceImpl extends ServiceImpl { + /** + * 获取一些菜单的统计信息(只返回名称,路径,图标) + * + * @author fengshuonan + * @date 2022/2/12 19:07 + */ + List getMenuStatInfoByMenuIds(@Param("menuIds") List menuIds); + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml index 179927b83..27d8ff45d 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml @@ -2,5 +2,20 @@ +