package com.storlead.framework.auth.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
import java.util.Set;

/**
 * @program: storlead-storlead-mail-platform
 * @description:
 * @author: chenkq
 * @create: 2025-06-16 17:26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class LoginUser implements Serializable {

    /**
     * 登录人id
     */
    private Long id;

    /**
     * 登录人账号
     */
    private String userName;

    /**
     * 公司ID
     */
    private Long companyId;

    /**
     * 租户（企业）ID，与数据行 tenant_id 对齐；未单独下发时可由业务等同 companyId。
     */
    private Long tenantId;

    /**
     * 分公司ID
     */
    private Long subCompanyId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门ID
     */
    private String deptName;

    /**
     * 职位ID
     */
    private Long jobId;

    /**
     * 职位ID
     */
    private String jobName;

    /**
     * 测试
     */
    private Integer test;

    /**
     * 角色类型
     */
//    private UserRoleType roleType;

    /**
     * 登录人名字
     */
    private String realName;

    /**
     * 登录人密码
     */
    private String password;
    /**
     * 企业微信userid
     */
    private String xworkUserId;

    /**
     * 登录人名字
     */
    private String nickName;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 生日
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private LocalDate birthday;

    /**
     * 性别（1：男 2：女）
     */
    private String sex;

    /**
     * 电子邮件
     */
    private String email;

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

    private String mobile;

    /**
     * 状态(1：正常 0：冻结 ）
     */
    private Integer enabled;


    /**
     * 是否领导：0、否；1、分公司领导；2、部门领导
     */
    private Integer isLeader;

    private String dataScope;

    @ApiModelProperty(value = "直接上级ID")
    private Long managerId;

    @ApiModelProperty(value = "领导人ID集合")
    private String managers;

    /**
     * 部门路由
     */
    private String deptCode;

    @ApiModelProperty(value = "是否是超管")
    private Boolean isAdmin;

    /**
     * 所属子公司路由
     */
    private String subCompanyCode;

    /**
     * 所属公司路由
     */
    private String companyCode;

    @ApiModelProperty(value = "部门岗位职责")
    private String deptJobDes;

    @ApiModelProperty(value = "岗位职责")
    private String jobDes;

    private Set<Long> roleIds;

    private String apiUrl;

    private String scopeMenuId;

    private Integer commonScope;

    private String commonScopeType;
    /**
     * 按钮权限code
     */
    private Set<String> btnRes;

    private List<MenuPermis> permis;

}
