package top.continew.admin.user.model.entity;

import cn.hutool.log.Log;
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.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * tg用户
 * </p>
 *
 * @author xudm
 * @since 2024-12-14
 */
@Getter
@Setter
@TableName("b_tg_user")
@Builder
public class TgUser extends Model<TgUser> {

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

    /**
     * tg小程序id
     */
    @TableField("tg_id")
    private String tgId;

    /**
     * tg账号
     */
    @TableField("tg_account")
    private String tgAccount;

    /**
     * 名
     */
    @TableField("first_name")
    private String firstName;

    /**
     * 姓
     */
    @TableField("last_name")
    private String lastName;

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

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

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

    /**
     * 用户的语言的编码
     */
    @TableField("language_code")
    private String languageCode;

    /**
     * 钱包地址
     */
    @TableField("wallet_address")
    private String walletAddress;

    /**
     * 年限
     */
    @TableField("age_limit")
    private Integer ageLimit;

    /**
     * 是否老用户
     */
    @TableField("old_user")
    private Integer oldUser;

    /**
     * 选择的语言
     */
    @TableField("check_language")
    private String checkLanguage;

    /**
     * 最后登录的IP
     */
    @TableField("login_ip")
    private String loginIp;

    /**
     * 最后登录时间
     */
    @TableField("login_time")
    private LocalDateTime loginTime;

    /**
     * ip转换实际地址
     */
    @TableField("ip_address_convert")
    private String ipAddressConvert;

    /**
     * 是否禁用: [0=否, 1=是]
     */
    @TableField("disable_flag")
    private Integer disableFlag;

    /**
     * 注册渠道: [1-微信小程序 2-微信公众号 3-手机H5 4-电脑PC 5-苹果APP 6-安卓APP]
     */
    @TableField("channel")
    private Integer channel;

    /**
     * 客流途径 1 新增 2 邀请
     */
    @TableField("passenger_flow_way")
    private Integer passengerFlowWay;


    /**
     * 用户授权telegram登录后的唯一标识
     */
    @TableField("login_telegram")
    private String loginTelegram;

    /**
     * 币账户进入的唯一标识地址
     */
    @TableField("coin_address")
    private String coinAddress;

    /**
     * 用户密码
     */
    @TableField("password")
    private String password;

    /**
     * 用户电话
     */
    @TableField("mobile")
    private String mobile;

    /**
     * 用户性别: [1=男, 2=女]
     */
    @TableField("sex")
    private String sex;

    /**
     * 邀请码
     */
    @TableField("invite_code")
    private String inviteCode;

    /**
     * 介绍人_id
     */
    @TableField("referrer_id")
    private String referrerId;

    /**
     * 0单独可奖励1已经奖励
     */
    @TableField("invite_reward")
    private Integer inviteReward;

    /**
     * 是否是新注册用户: [1-是, 0-否]
     */
    @TableField("new_user_flag")
    private Integer newUserFlag;

    /**
     * 历史钥匙数量
     */
    @TableField("history_key")
    private Integer historyKey;

    /**
     * 钥匙数量
     */
    @TableField("key_num")
    private Integer keyNum;

    /**
     * 空投数量
     */
    @TableField("airdrop_coin")
    private Integer airdropCoin;

    /**
     * 金币余额
     */
    @TableField("gold_coin_amount")
    private BigDecimal goldCoinAmount;

    /**
     * 金币总数量
     */
    @TableField("gold_coin_total_his")
    private BigDecimal goldCoinTotalHis;

    /**
     * 该用户每10s生产的金币数量
     */
    @TableField("development_gold_coin")
    private Integer developmentGoldCoin;

    /**
     * 在线时间 单位秒
     */
    @TableField("online_time")
    private Integer onlineTime;

    /**
     * 用户余额
     */
    @TableField("user_amount")
    private BigDecimal userAmount;

    /**
     * 创建时间
     */
    @TableField("created_time")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField("updated_time")
    private LocalDateTime updatedTime;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
