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 vos; public static MenuQueryVO convert(MenuQueryDTO dto) { if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; MenuQueryVO vo = new MenuQueryVO(); List dtos = dto.getDtos(); List vos = new ArrayList<>(); for (MenuDTO menuDTO : dtos) { MenuVO menuVO = convertToQueryPage(menuDTO); vos.add(menuVO); } //对根目录进行排序 Collections.sort(vos, new Comparator() { @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 vos = new ArrayList<>(); List children = menu.getChildren(); if (!ObjectUtils.isEmpty(children)) { //对children进行排序,按照order字段 Collections.sort(children, new Comparator() { @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; } }