kaiyu
2021-05-12 4ad2f089780e34bfe0611b99285b76c2d30fa0f7
screen-manage/src/main/java/com/moral/api/pojo/vo/menu/MenuQueryVO.java
@@ -1,8 +1,16 @@
package com.moral.api.pojo.vo.menu;
import com.moral.api.pojo.dto.menu.MenuQueryDto;
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;
/**
@@ -13,11 +21,64 @@
 * @Version TODO
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MenuQueryVO {
    List<MenuVO> vos;
    public static MenuQueryVO convert(MenuQueryDto dto){
        return null;
    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.setVos(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;
    }
}