package com.moral.api.pojo.vo.login; 
 | 
  
 | 
import com.fasterxml.jackson.annotation.JsonInclude; 
 | 
import com.moral.api.entity.ManageAccount; 
 | 
import com.moral.api.entity.ManageMenu; 
 | 
import com.moral.api.entity.ManageRole; 
 | 
import com.moral.api.pojo.redisBean.AccountInfoDTO; 
 | 
import lombok.Data; 
 | 
import org.springframework.util.ObjectUtils; 
 | 
  
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * @ClassName AccountInfoVO 
 | 
 * @Description TODO 
 | 
 * @Author 陈凯裕 
 | 
 * @Date 2021/3/13 16:11 
 | 
 * @Version TODO 
 | 
 **/ 
 | 
@Data 
 | 
@JsonInclude(JsonInclude.Include.NON_EMPTY) 
 | 
public class AccountInfoVO { 
 | 
    /* 
 | 
     * 用户Id 
 | 
     * */ 
 | 
    private Integer accountId; 
 | 
  
 | 
    /* 
 | 
     * 用户名称 
 | 
     * */ 
 | 
    private String userName; 
 | 
  
 | 
  
 | 
    /* 
 | 
     * 用户角色 
 | 
     * */ 
 | 
    private List<String> roleNames; 
 | 
  
 | 
    /* 
 | 
     * 用户菜单 
 | 
     * */ 
 | 
    private List<ManageMenu> menus; 
 | 
  
 | 
    /** 
 | 
     * @Description: DTO转换VO 
 | 
     * @Param: [dto] 
 | 
     * @return: com.moral.api.pojo.vo.login.AccountInfoVO 
 | 
     * @Author: 陈凯裕 
 | 
     * @Date: 2021/3/13 
 | 
     */ 
 | 
    public static AccountInfoVO convert(AccountInfoDTO dto) { 
 | 
        AccountInfoVO vo = new AccountInfoVO(); 
 | 
        ManageAccount account = dto.getAccount(); 
 | 
        List<ManageMenu> menus = dto.getMenus(); 
 | 
        List<ManageRole> roles = dto.getRoles(); 
 | 
        //封装roleNames 
 | 
        ArrayList<String> roleNames = new ArrayList<>(); 
 | 
        if (!ObjectUtils.isEmpty(roles)) { 
 | 
            roles.forEach(role -> roleNames.add(role.getName())); 
 | 
        } 
 | 
        /*过滤menu无用属性*/ 
 | 
        if (!ObjectUtils.isEmpty(menus)) { 
 | 
            for (ManageMenu menu : menus) { 
 | 
                removeAttribute(menu); 
 | 
            } 
 | 
        } 
 | 
        //menu进行排序 
 | 
        if (!ObjectUtils.isEmpty(menus)) { 
 | 
            orderRootMenu(menus); 
 | 
        } 
 | 
        vo.setAccountId(account.getId()); 
 | 
        vo.setUserName(account.getUserName()); 
 | 
        vo.setMenus(menus); 
 | 
        vo.setRoleNames(roleNames); 
 | 
        return vo; 
 | 
    } 
 | 
  
 | 
    public static void removeAttribute(ManageMenu menu) { 
 | 
        menu.setCreateTime(null); 
 | 
        menu.setIsDelete(null); 
 | 
        menu.setUpdateTime(null); 
 | 
        menu.setParentId(null); 
 | 
        if (ObjectUtils.isEmpty(menu.getChildren())) 
 | 
            return; 
 | 
        List<ManageMenu> children = menu.getChildren(); 
 | 
        for (ManageMenu child : children) { 
 | 
            removeAttribute(child); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
    * @Description: 对根菜单进行排序 
 | 
            * @Param: [menus] 
 | 
            * @return: void 
 | 
            * @Author: 陈凯裕 
 | 
            * @Date: 2021/6/8 
 | 
            */ 
 | 
    public static void orderRootMenu(List<ManageMenu> menus){ 
 | 
        menus.sort(Comparator.comparing(ManageMenu::getOrder)); 
 | 
        for (ManageMenu menu : menus) { 
 | 
            orderMenu(menu); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
    * @Description: 对非根菜单进行排序 
 | 
            * @Param: [menu] 
 | 
            * @return: void 
 | 
            * @Author: 陈凯裕 
 | 
            * @Date: 2021/6/8 
 | 
            */ 
 | 
    public static void orderMenu(ManageMenu menu){ 
 | 
        List<ManageMenu> children = menu.getChildren(); 
 | 
        if(!ObjectUtils.isEmpty(children)){ 
 | 
            children.sort(Comparator.comparing(ManageMenu::getOrder)); 
 | 
            for (ManageMenu child : children) { 
 | 
                orderMenu(child); 
 | 
            } 
 | 
        }else{ 
 | 
            return; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |