package com.gunshi.project.xyt.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.xyt.mapper.CctvBMenuMapper; import com.gunshi.project.xyt.model.CctvBMenu; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 描述: 视频点目录 * author: xusan * date: 2024-07-08 17:30:37 */ @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class CctvBMenuService extends ServiceImpl { public List tree() { List list = list(); if (CollectionUtils.isEmpty(list)){ return list; } Map> listMap = list.stream().collect(Collectors.groupingBy(CctvBMenu::getParentId)); list.forEach(o -> o.setChildren(listMap.get(o.getId()))); List parentList = list.stream().filter(o -> 0L == o.getParentId()).collect(Collectors.toList()); return sorted(parentList); } private List sorted( List tree) { List sorteds = null; if (CollectionUtils.isNotEmpty(tree)){ sorteds = tree.stream().sorted(Comparator.comparing(CctvBMenu::getOrderIndex) ).collect(Collectors.toList()); sorteds.forEach(o->{ o.setChildren(sorted(o.getChildren())); }); } return sorteds; } }