package com.zzg.system.service.system.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.zzg.system.domain.SysLayer;
|
import com.zzg.system.domain.vo.SysLayerVo;
|
|
import com.zzg.system.mapper.system.SysLayerMapper;
|
import com.zzg.system.service.system.ISysLayerService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* @author Administrator
|
* @description 针对表【sys_layer】的数据库操作Service实现
|
*/
|
@Service
|
public class SysLayerServiceImpl extends ServiceImpl<SysLayerMapper, SysLayer> implements ISysLayerService {
|
|
@Resource
|
SysLayerMapper sysLayerMapper;
|
|
@Override
|
public boolean save(SysLayer layer) {
|
SysLayer parentLayer = this.getById(layer.getParentId());
|
if (parentLayer != null && parentLayer.getType() == SysLayer.LAYER_TYPE_CODE) {
|
throw new RuntimeException("");
|
}
|
return super.save(layer);
|
}
|
|
@Override
|
public List<SysLayerVo> getLayerTree() {
|
HashMap<String, SysLayerVo> layerMap = new HashMap<>();
|
List<SysLayerVo> sysLayerVoList = new ArrayList<>();
|
// List<SysLayer> sysLayerList = this.list();
|
// List<SysLayer> sysLayerList = sysLayerMapper.selectList(new LambdaQueryWrapper<>());
|
List<SysLayer> sysLayerList = sysLayerMapper.selectAll();
|
for (SysLayer sysLayer : sysLayerList) {
|
SysLayerVo sysLayerVo = new SysLayerVo();
|
BeanUtil.copyProperties(sysLayer, sysLayerVo);
|
sysLayerVoList.add(sysLayerVo);
|
layerMap.put(sysLayer.getId(), sysLayerVo);
|
}
|
//创建一个List<SysLayerVo> layerTreeList
|
List<SysLayerVo> layerTreeList = new ArrayList<>();
|
//3.遍历sysLayerVo
|
sysLayerVoList.stream().forEach(sysLayerVo -> {
|
//3.1.判断pid是否是0或者null,如果是的话代表是一级分类,加入tree
|
if (sysLayerVo.getParentId() == null || sysLayerVo.getParentId().equals(SysLayer.ROOT_NODE_PID_CODE)) {
|
layerTreeList.add(sysLayerVo);
|
} else {
|
//3.2.如果pid有值,则将当前这个分类加入到父级的children集合中
|
SysLayerVo parentLayer = layerMap.get(sysLayerVo.getParentId());
|
if (parentLayer != null) {
|
parentLayer.getChildren().add(sysLayerVo);
|
}
|
}
|
});
|
return layerTreeList;
|
}
|
|
@Override
|
public void delLayer(String id) {
|
SysLayer sysLayer = this.getById(id);
|
if (sysLayer != null) {
|
List<SysLayer> sysLayers = this.list(new LambdaQueryWrapper<SysLayer>()
|
.eq(SysLayer::getParentId, id));
|
// 直接删除叶子节点
|
if (sysLayers.size() == SysLayer.LAYER_SIZE) {
|
sysLayerMapper.deleteById(id);
|
} else {
|
throw new RuntimeException("");
|
}
|
}
|
}
|
}
|