package com.ai.da.mapper.primary.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

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

/**
 * Attendance
 *
 * @author easy-generator
 * @since 2022-06-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_account")
public class Account implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 邮箱
     */
    private String userEmail;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 密码
     */
    private String userPassword;

    /**
     * 语言
     */
    private String language;

    /**
     * 城市
     */
    private String country;

    /**
     * 职业
     */
    private String occupation;

    /**
     * 账户有效期开始时间
     */
    private Long validStartTime;

    /**
     * 账户有效期结束时间
     */
    private Long validEndTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createDate;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateDate;

    private Integer isTrial;

    private Integer isBeginner;

    private String browserIdentifiers;

    /**
     * 积分
     */
    private BigDecimal credits;

    /**
     * 用于区分游客与系统用户
     * 0 ： 游客
     * 1 ： 年付用户
     * 2 ： 月付用户
     * 3 ： 试用用户
     * 4 ： 参加活动获取30天有效期和6000个积分的用户
     * 5 ： 企业管理员账号
     * 6 ： 企业子账号
     * 7 ： 学校管理员
     * 8 ： 学校子账号
     */
    private Integer systemUser;

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

    private String organizationName;

    private Long organizationId;

    private Long parentId;

    private Integer isAdmin;

    private BigDecimal creditsUsageLimit;

    // 学校分配的积分使用情况
    private BigDecimal creditsUsage;

    private Integer subAccountNum;

    private String invitationCode;

    @ApiModelProperty("title")
    private String title;

    @ApiModelProperty("surname")
    private String surname;

    @ApiModelProperty("givenName")
    private String givenName;
}
