package com.zanxiang.game.module.mybatis.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.apache.logging.log4j.util.Strings;

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

/**
 * @author : lingfeng
 * @time : 2022-06-06
 * @description : 玩家表
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
@TableName("t_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

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

    /**
     * 注册渠道id
     */
    private Long regAgentId;

    /**
     * 最新渠道id
     */
    private Long agentId;

    /**
     * 注册游戏id
     */
    private Long gameId;

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

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 密码
     */
    private String password;

    /**
     * 绑定手机号码
     */
    private String mobile;

    /**
     * 微信用户openId
     */
    private String openId;

    /**
     * 微信用户会话密钥
     */
    private String sessionKey;

    /**
     * 状态, 0 正常 1 封禁
     */
    private Integer status;

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

    /**
     * 绑定支付宝账号
     */
    private String aliPay;

    /**
     * 绑定邮箱
     */
    private String email;

    /**
     * 充值次数
     */
    private Integer rechargeCount;

    /**
     * 充值金额
     */
    private BigDecimal rechargeMoney;

    /**
     * 最近充值时间
     */
    private LocalDateTime lastRechargeTime;

    /**
     * 创角数
     */
    private Integer roleCount;

    /**
     * 是否实名认证，0未实名认证，1成年人，2未成年人
     */
    private Integer authentication;

    /**
     * 客户端类型, 1:安卓app, 2: 苹果iosApp, 3: h5网页, 4 : 小程序(小游戏)
     */
    private Integer deviceType;

    /**
     * 客户端操作系统, android, ios, windows, mac
     */
    private String deviceSystem;

    /**
     * 渠道参数
     */
    private String channel;

    /**
     * 用户注册ip
     */
    private String ip;

    /**
     * 用户设备mac地址
     */
    private String mac;

    /**
     * 设备唯一编号IMEI
     */
    private String imei;

    /**
     * 设备OAID
     */
    private String oaid;

    /**
     * 安卓id, (仅安卓设备才有值)
     */
    private String androidId;

    /**
     * IOS设备IDFA
     */
    private String idfa;

    /**
     * IOS设备CAID
     */
    private String caid;

    /**
     * 注册时间
     */
    private LocalDateTime createTime;

    /**
     * 更改时间
     */
    private LocalDateTime updateTime;

    /**
     * 分享用户id
     */
    private Long shareUserId;

    /**
     * 关联的用户id
     */
    private Long relationUserId;

    /**
     * 关联游戏id
     */
    private Long relationGameId;

    /**
     * 关联建立的时间
     */
    private LocalDateTime relationCreateTime;

    /**
     * 手机号绑定时间
     */
    private LocalDateTime mobileBindTime;

    /**
     * ip解析数据
     */
    private String ipData;

    /**
     * 导量用户标识, 1 表示导量用户
     */
    private Integer importUser;

    /**
     * 获取用户显示手机号
     *
     * @return : 用户显示手机号
     */
    public String getShowPhoneNum() {
        if (Strings.isBlank(this.mobile)) {
            return null;
        }
        return this.mobile.substring(0, 3) + "****" + this.mobile.substring(mobile.length() - 4);
    }
}