package com.lesingle.creation.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lesingle.creation.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户表实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_sys_user")
public class User extends BaseEntity {

    /**
     * 租户 ID
     */
    @TableField("tenant_id")
    private Long tenantId;

    /**
     * 用户名（在租户内唯一）
     */
    @TableField("username")
    private String username;

    /**
     * 密码（加密存储）
     */
    @TableField("password")
    private String password;

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

    /**
     * 邮箱（在租户内唯一，可选）
     */
    @TableField("email")
    private String email;

    /**
     * 手机号（全局唯一，用于手机号登录）
     */
    @TableField("phone")
    private String phone;

    /**
     * 微信 OpenID
     */
    @TableField("wx_openid")
    private String wxOpenid;

    /**
     * 微信 UnionID
     */
    @TableField("wx_unionid")
    private String wxUnionid;

    /**
     * 用户来源：admin_created/self_registered/child_migrated
     */
    @TableField("user_source")
    private String userSource;

    /**
     * 用户类型：adult/child
     */
    @TableField("user_type")
    private String userType;

    /**
     * 所在城市
     */
    @TableField("city")
    private String city;

    /**
     * 出生日期
     */
    @TableField("birthday")
    private java.time.LocalDate birthday;

    /**
     * 性别：male-男，female-女
     */
    @TableField("gender")
    private String gender;

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

    /**
     * 所属单位（用于评委等独立用户）
     */
    @TableField("organization")
    private String organization;

    /**
     * 账号状态：enabled-启用，disabled-停用
     */
    @TableField("status")
    private String status;

    /**
     * 有效状态：1-有效，2-失效
     */
    @TableField("valid_state")
    private Integer validState;
}
