package cn.reghao.oss.console.account.model.dto;

import cn.reghao.oss.console.account.model.po.Menu;
import cn.reghao.oss.console.account.model.po.Role;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Set;

/**
 * @author reghao
 * @date 2021-07-15 14:06:13
 */
@NoArgsConstructor
@Data
public class MenuDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @NotNull(message = "菜单 ID 不能为 NULL")
    private Integer menuId;
    // 父级菜单 ID
    @NotNull(message = "父级菜单不能为 NULL")
    private Integer pid;
    // 在同一个 pid 组内的位置，作为排序使用
    private Integer pos;
    @NotBlank(message = "菜单名不能为空白字符串")
    private String name;
    @NotBlank(message = "URL 地址不能为空白字符串，目录类型使用可使用 # 字符")
    private String url;
    private String icon;
    @NotNull(message = "角色不能为 NULL")
    @JsonIgnore
    private Set<Role> roles;

    public MenuDTO(Menu menu) {
        this.menuId = menu.getId();
        this.pid = menu.getPid();
        this.pos = menu.getPos();
        this.name = menu.getName();
        this.url = menu.getUrl();
        this.icon = menu.getIcon();
    }
}
