package com.ssyf.module.auth.domain.vo;

import com.ssyf.common.core.constants.SystemConstants;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
* @author: auth
* @date: 2022-10-30
*/
@Data
@Accessors(chain = true)
public class UserInfoVo implements Serializable {

    private Integer id;

    private String uid;

    /**
     * 用户名称
     */
    private String username;

    /**
     * 电话号码
     */
    private String phone;

    /**
     * 邮箱
     */
    private String mail;


    /**
     * 昵称
     */
    private String nickname;

    /**
     * 注册ip
     */
    private String registerIp;

    /**
     * 注册时间
     */
    @JsonFormat(pattern = SystemConstants.DATE_TIME_FORMAT, timezone = SystemConstants.DATE_TIME_TIMEZONE)
    private LocalDateTime registerTime;

    /**
     * 最后登录ip
     */
    private String lastLoginIp;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = SystemConstants.DATE_TIME_FORMAT, timezone = SystemConstants.DATE_TIME_TIMEZONE)
    private LocalDateTime lastLoginTime;

    /**
     * 账户状态；1 正常；2 冻结；3 已锁定；4 已注销；5 待审核；6 异常；
     * 参见{@link com.ssyf.common.core.enums.StatusAccountEnum}
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = SystemConstants.DATE_TIME_FORMAT, timezone = SystemConstants.DATE_TIME_TIMEZONE)
    private LocalDateTime createdTime;

    /**
     * 创建者编码
     */
    private String creatorId;

    /**
     * 创建者
     */
    private String creatorName;

    /**
     * 角色
     */
    private List<String> roles = new ArrayList<>();
    /**
     * 菜单
     */
    private List<String> menus = new ArrayList<>();

    /**
     * key
     */
    private String secretKey;
}
