| 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; | 
|     } | 
|   | 
| } |