yanghb
2024-12-17 1287337fd0b0c156ec79712f9a600ebeffefe3a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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("");
            }
        }
    }
}