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