package com.starry.admin.modules.system.vo;

import com.starry.admin.modules.system.module.entity.SysDeptEntity;
import com.starry.admin.modules.system.module.entity.SysRoleEntity;
import com.starry.common.domain.BasePageEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户查询对象
 *
 * @author admin
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "系统用户查询参数", description = "查询系统用户的条件参数")
public class SysUserQueryVo extends BasePageEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "用户ID", example = "1")
    private Long userId;

    @ApiModelProperty(value = "用户类型", example = "1", notes = "1:admin;2:会员")
    private Integer userType;

    @ApiModelProperty(value = "用户名", example = "admin", notes = "登录账号，支持模糊查询")
    private String userCode;

    @ApiModelProperty(value = "密码", hidden = true)
    private String passWord;

    @ApiModelProperty(value = "姓名", example = "张三", notes = "用户真实姓名，支持模糊查询")
    private String realName;

    @ApiModelProperty(value = "用户昵称", example = "小张", notes = "用户昵称，支持模糊查询")
    private String userNickname;

    @ApiModelProperty(value = "邮箱", example = "test@example.com")
    private String userEmail;

    @ApiModelProperty(value = "头像", example = "https://example.com/avatar.jpg")
    private String avatar;

    @ApiModelProperty(value = "手机号码", example = "13800138000")
    private String mobile;

    @ApiModelProperty(value = "性别", example = "1", notes = "1:男;2:女;0:未知")
    private Integer sex;

    @ApiModelProperty(value = "出生日期", example = "1990-01-01")
    private Date birthday;

    @ApiModelProperty(value = "状态", example = "0", notes = "0:正常;1:停用")
    private Integer status;

    @ApiModelProperty(value = "最后登录时间")
    private Date lastLoginTime;

    @ApiModelProperty(value = "最后登录IP", example = "192.168.1.1")
    private String lastLoginIp;

    @ApiModelProperty(value = "部门ID", example = "1")
    private Long deptId;

    @ApiModelProperty(value = "租户ID", example = "1")
    private Long tenantId;

    @ApiModelProperty(value = "角色列表", notes = "用户关联的角色信息")
    private List<SysRoleEntity> roles;

    @ApiModelProperty(value = "角色ID数组", notes = "用户关联的角色ID列表")
    private Long[] roleIds;

    @ApiModelProperty(value = "部门信息", notes = "用户所属部门详情")
    private SysDeptEntity dept;

    @ApiModelProperty(value = "角色ID", example = "1", notes = "用于查询已分配或未分配指定角色的用户")
    private Long roleId;
}
