kaiyu
2021-05-13 7bf9583e3fd56020cbc62a5e87ff5987b8070ca5
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
83
package com.moral.api.pojo.vo.menu;
 
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.Menu;
import com.moral.api.pojo.dto.menu.MenuDTO;
import com.moral.api.pojo.dto.menu.MenuQueryDTO;
import com.moral.constant.ResponseCodeEnum;
import lombok.Data;
import org.springframework.util.ObjectUtils;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
/**
 * @ClassName MenuQueryVO
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/4/25 10:02
 * @Version TODO
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MenuQueryVO {
 
    List<MenuVO> menus;
 
    public static MenuQueryVO convert(MenuQueryDTO dto) {
        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
            return null;
        MenuQueryVO vo = new MenuQueryVO();
        List<MenuDTO> dtos = dto.getDtos();
        List<MenuVO> vos = new ArrayList<>();
        for (MenuDTO menuDTO : dtos) {
            MenuVO menuVO = convertToQueryPage(menuDTO);
            vos.add(menuVO);
        }
        //对根目录进行排序
        Collections.sort(vos, new Comparator<MenuVO>() {
            @Override
            public int compare(MenuVO o1, MenuVO o2) {
                return o1.getOrder() - o2.getOrder();
            }
        });
        vo.setMenus(vos);
        return vo;
    }
 
    private static MenuVO convertToQueryPage(MenuDTO dto) {
        Menu menu = dto.getMenu();
        MenuVO menuVO = convertToQueryPage(menu);
        return menuVO;
    }
 
    private static MenuVO convertToQueryPage(Menu menu) {
        MenuVO vo = new MenuVO();
        vo.setId(menu.getId());
        vo.setParentId(menu.getParentId());
        vo.setUrl(menu.getUrl());
        vo.setIcon(menu.getIcon());
        vo.setName(menu.getName());
        vo.setOrder(menu.getOrder());
        List<MenuVO> vos = new ArrayList<>();
        List<Menu> children = menu.getChildren();
        if (!ObjectUtils.isEmpty(children)) {
            //对children进行排序,按照order字段
            Collections.sort(children, new Comparator<Menu>() {
                @Override
                public int compare(Menu o1, Menu o2) {
                    return o1.getOrder() - o2.getOrder();
                }
            });
            for (Menu child : children) {
                MenuVO menuVO = convertToQueryPage(child);
                vos.add(menuVO);
            }
            vo.setChildren(vos);
        }
        return vo;
    }
 
}