package com.micer.easyball.pojo;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import lombok.*;

/**
 * 7. 系统用户 User
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "user")
public class User implements Serializable {
    private static final long serialVersionUID = -40356785423868312L;

    /**
     * 用户ID
     */
    @TableId("id")
    private String id;

    /**
     * 微信昵称
     */
    @TableField("nickname")
    private String nickname;

    /**
     * 微信头像
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 微信用户唯一标识
     * 微信小程序与联名公众号都注册情况下，绑定微信开放平台时使用；
     * 用户在小程序和公众号，拥有共同的unionid；用户在小程序和公众号，拥有共同的openid；
     */
    @TableField("unionid")
    private String unionid;

    /**
     * 微信用户唯一标识
     * 微信用户唯一标识 如果仅注册微信小程序，无法绑定微信开放平台，无法使用unionid，则使用openid
     */
    @TableField("openid")
    private String openid;

    /**
     * 手机号 必填/唯一/与微信唯一标识对应
     */
    @TableField("telephone")
    private String telephone;

    /**
     * 用户名 保留字段，后续若有Web端则需要
     */
    @TableField("username")
    private String username;

    /**
     * 密码  保留字段，后续若有Web端则需要
     */
    @TableField("password")
    private String password;

    /**
     * 角色  [ROLE_ADMIN, ROLE_USER]
     */
    @TableField("role_list")
    private String roleList;

    /**
     * 创建时间
     */
    @TableField(value = "create_at",fill = FieldFill.INSERT)
    private Date createAt;

    /**
     * 是否启用 0 不启用
     * 1 启用（默认）
     * 业务上启用，业务流程中可使用
     */
    @TableField("is_enable")
    @TableLogic(value = "1", delval = "0")
    private Boolean isEnable;

    /**
     * 用户邮箱
     */
    @TableField("email")
    private String email;

    /**
     * 密码找回验证码
     */
    @TableField("recover_code")
    private String recoverCode;

    /**
     * 验证码有效期
     */
    @TableField("valid_end")
    private Date validEnd;

    /**
     * ROLE_USER
     * 用户当前角色
     */
    @TableField("current_role")
    private String currentRole;

    /**
     * 是否强制修改初始密码，true 表示需要在首次登录后修改
     */
    @TableField("force_change_password")
    private Boolean forceChangePassword;

}
