package com.tofly.base.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tofly.common.core.annotation.Excel;
import com.tofly.mybatisplus.config.ToflySqlCondition;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author fcl
 * @date 2021/3/13 11:51
 */

@ApiModel
@Data
public class UserDTO {

    /**
     * 用户名
     */
    @ApiModelProperty(value = "用户名")
    @TableField(condition = ToflySqlCondition.LIKE)
    @Excel(name = "username")
    private String username;
    /**
     * 密码
     */
    @ApiModelProperty(value = "密码")
    @Excel(name = "password")
    private String password;
    /**
     * 随机数
     */
    @ApiModelProperty(value = "随机数")
    private String salt;
    /**
     * 电话
     */
    @ApiModelProperty(value = "电话")
    @Excel(name = "phone")
    private String phone;
    /**
     * 头像
     */
    @ApiModelProperty(value = "头像")
    private String avatar;
    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID")
    @Excel(name = "departmentId")
    private Long departmentId;

    @TableField(exist = false)
    private String departmentName;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "CREATE_TIME",fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "UPDATE_TIME",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 是否锁定，1正常，0锁定
     */
    @ApiModelProperty(value = "是否锁定，1正常，0锁定")
    private String lockFlag;
    /**
     * 是否启用禁用，1启用，0禁用
     */
    @ApiModelProperty(value = "是否启用禁用，1启用，0禁用")
    private String statusFlag;
    /**
     * 扩展功能，微信openid
     */
    @ApiModelProperty(value = "扩展功能，微信openid")
    private String wxOpenid;
    /**
     * 扩展功能，QQ openid
     */
    @ApiModelProperty(value = "扩展功能，QQ openid")
    private String qqOpenid;
    /**
     * 用户email
     */
    @ApiModelProperty(value = "用户email")
    @Excel(name = "email")
    private String email;
    /**
     * 用户姓名
     */
    @ApiModelProperty(value = "用户姓名")
    @TableField(condition = ToflySqlCondition.LIKE)
    @Excel(name = "realName")
    private String realName;
    /**
     * 最后一次登录时间
     */
    @ApiModelProperty(value = "最后一次登录时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date loginTime;
    /**
     * 最后一次访问IP
     */
    @ApiModelProperty(value = "最后一次访问IP")
    private String lastIp;
    /**
     * 密码错误次数
     */
    @ApiModelProperty(value = "密码错误次数")
    private Short pwderrtimes;
    /**
     * 工号
     */
    @ApiModelProperty(value = "工号")
    private String worknumber;
    /**
     * 找回密码关键字
     */
    @ApiModelProperty(value = "找回密码关键字")
    private String findpwdkey;
    /**
     * 别名
     */
    @ApiModelProperty(value = "别名")
    private String aliasname;
    /**
     * 生日
     */
    @ApiModelProperty(value = "生日")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    /**
     * 属于（学院/部门）
     */
    @ApiModelProperty(value = "属于（学院/部门）")
    private String belong;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @TableField(value = "CREATE_USER",fill = FieldFill.INSERT)
    private Long createUser;

    /**
     * 用户级别
     */
    @ApiModelProperty(value = "用户级别")
    @Excel(name = "userLevel")
    private String userLevel;

    /**
     * 创建类型，0自建、1申请创建
     */
    @ApiModelProperty(value = "创建类型，0自建、1申请创建")
    private String createType;

    /**
     * 首次登陆状态,1 首次登录,0 非首次登录
     */
    @ApiModelProperty(value = "首次登陆状态,1 首次登录,0 非首次登录")
    private String firstLog;

    /**
     * 申请人
     */
    @ApiModelProperty(value = "申请人")
    private String applyer;

    /**
     * 申请时间
     */
    @ApiModelProperty(value = "申请时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date applyTime;

    /**
     * 申请说明
     */
    @ApiModelProperty(value = "申请说明")
    private String applyState;

    /**
     * 审核人
     */
    @ApiModelProperty(value = "审核人")
    private String auditor;

    /**
     * 用户账号详情
     */
    @ApiModelProperty(value = "用户账号详情")
    private String accountState;

    /**
     * 审核时间
     */
    @ApiModelProperty(value = "审核时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date auditTime;

    /**
     * 审核说明
     */
    @ApiModelProperty(value = "审核说明")
    private String auditState;

    /**
     * 审核状态,1 未审核,2 同意, 0 不同意
     */
    @ApiModelProperty(value = "审核状态,1 未审核,2 同意, 0 不同意")
    private String auditStatus;
}
