package com.gs.simple.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gs.simple.common.ResultDto;
|
import com.gs.simple.domain.*;
|
import com.gs.simple.mapper.BiViewMapper;
|
import com.gs.simple.mapper.MesSimpleMapper;
|
import com.gs.simple.service.MesSimpleService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import com.gs.simple.domain.BiView;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executors;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
@RequiredArgsConstructor
|
public class MesSimpleServiceImpl extends ServiceImpl<MesSimpleMapper, MesSimplesimple> implements MesSimpleService {
|
private final BiViewMapper biViewMapper;
|
private final Executor dbExecutor = Executors.newFixedThreadPool(10);
|
@Override
|
public ResultDto<List<TreeView>> getTree() {
|
List<TreeView> tree = toTree();
|
return ResultDto.ok(tree, tree.size());
|
}
|
|
@Override
|
public List<TreeView> toTree() {
|
return convertToTreeViewList(getTopList());
|
}
|
|
//GetTree树形
|
@Override
|
public ResultDto getMenuList() {
|
LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(MesSimplesimple::getDisabled, 0).gt(MesSimplesimple::getIsTop, 0);
|
List<MesSimplesimple> list = list(wrapper);
|
return ResultDto.ok(list, list.size());
|
}
|
|
//List列表
|
// @Override
|
// public ResultDto<List<MesSimplesimple>> getMenuList() {
|
// LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>();
|
// wrapper.eq(MesSimplesimple::getDisabled, 0)
|
// .gt(MesSimplesimple::getIsTop, 0)
|
// .orderByAsc(MesSimplesimple::getIsTop);
|
//
|
// List<MesSimplesimple> list = list(wrapper);
|
//
|
//
|
// return ResultDto.ok(list, list.size());
|
// }
|
|
|
@Override
|
public ResultDto<List<BiView>> getBiViewsByMenuId(Integer menuId) {
|
|
LambdaQueryWrapper<BiView> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(BiView::getPid, menuId)
|
.isNotNull(BiView::getHref);
|
List<BiView> list = biViewMapper.selectList(wrapper);
|
|
if (!list.isEmpty()) {
|
LambdaQueryWrapper<MesSimplesimple> simpleWrapper = new LambdaQueryWrapper<>();
|
simpleWrapper.eq(MesSimplesimple::getId, menuId);
|
MesSimplesimple simple = getOne(simpleWrapper);
|
if (simple != null) {
|
list.forEach(biView -> biView.setLbtime(simple.getLbtime()));
|
}
|
}
|
return ResultDto.ok(list, list.size());
|
}
|
|
private List<MesSimplesimple> getTopList() {
|
LambdaQueryWrapper<MesSimplesimple> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(MesSimplesimple::getIsTop, 0).eq(MesSimplesimple::getDisabled, 0);
|
return list(queryWrapper);
|
}
|
|
private List<TreeView> convertToTreeViewList(List<MesSimplesimple> mesSimplesimpleList) {
|
List<CompletableFuture<TreeView>> treeViewFutures = mesSimplesimpleList.stream()
|
.map(mesSimplesimple -> convertToTreeViewAsync(mesSimplesimple, dbExecutor))
|
.toList();
|
|
CompletableFuture<Void> allFutures = CompletableFuture.allOf(treeViewFutures.toArray(new CompletableFuture[0]));
|
return allFutures.thenApply(v -> treeViewFutures.stream()
|
.map(CompletableFuture::join)
|
.collect(Collectors.toList()))
|
.join();
|
}
|
|
private CompletableFuture<TreeView> convertToTreeViewAsync(MesSimplesimple mesSimplesimple, Executor executor) {
|
return CompletableFuture.supplyAsync(() -> convertToTreeView(mesSimplesimple), executor);
|
}
|
|
private TreeView convertToTreeView(MesSimplesimple mesSimplesimple) {
|
TreeView treeView = new TreeView();
|
treeView.setId(mesSimplesimple.getId());
|
treeView.setTitle(mesSimplesimple.getTitle());
|
treeView.setField(mesSimplesimple.getField());
|
treeView.setSpread(mesSimplesimple.getSpread() == 1);
|
|
LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(MesSimplesimple::getDisabled, 0).eq(MesSimplesimple::getFid, mesSimplesimple.getId());
|
List<MesSimplesimple> list = list(wrapper);
|
|
List<Children> childrenList = new ArrayList<>();
|
list.forEach(s -> {
|
Children children = new Children();
|
children.setId(s.getId());
|
children.setTitle(s.getTitle());
|
children.setField(s.getField());
|
if ("轮播".equals(s.getHref())) {
|
children.setHref("bi_view.html?menuId=" + s.getId() + "&lbsj=" + s.getLbtime()); // 跳转到中间页面
|
} else {
|
children.setHref(s.getHref());
|
}
|
childrenList.add(children);
|
});
|
treeView.setChildren(childrenList);
|
|
return treeView;
|
}
|
}
|