package com.zanxiang.game.data.serve.pojo.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.PK;
import org.nutz.dao.entity.annotation.Table;

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

/**
 * <p>
 * 订单明细
 * </p>
 *
 * @author
 * @since 2023-06-30
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(AdsOrderDetail.TABLE_NAME)
@PK({"day", "sourceSystem", "orderId"})
public class AdsOrderDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    public static final String TABLE_NAME = "ads_order_detail";

    /**
     * 订单创建日期
     */
    private LocalDate day;

    /**
     * SDK来源
     */
    private String sourceSystem;

    /**
     * 订单号
     */
    private String orderId;

    /**
     * CP订单
     */
    @Column
    private String cpOrderId;

    /**
     * CP名称
     */
    @Column
    private String cpName;

    /**
     * CP通知状态，1为待处理，2为成功，-1为失败
     */
    @Column
    private String cpStatus;

    /**
     * 第三方支付订单号
     */
    @Column
    private String merchantOrderNo;

    /**
     * 游戏玩家ID
     */
    @Column
    private String gameUserId;

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

    /**
     * 注册时间
     */
    @Column
    private LocalDateTime regTime;

    /**
     * 注册渠道ID
     */
    @Column
    private String agentId;

    /**
     * 注册渠道名称
     */
    @Column
    private String agentName;

    /**
     * 父游戏ID
     */
    @Column
    private String parentId;

    /**
     * 父游戏名称
     */
    @Column
    private String parentGameName;

    /**
     * 注册游戏ID
     */
    @Column
    private String gameId;

    /**
     * 注册游戏名称
     */
    @Column
    private String gameName;

    /**
     * 注册游戏类别,3开头为android 4 开头为IOS 5 开头为H5 6开头为小程序 对应于game_class中的ID
     */
    @Column
    private String classify;

    /**
     * 投手名称
     */
    @Column
    private String zxPitcherName;

    /**
     * 投手ID
     */
    @Column
    private String zxPitcherId;

    /**
     * 广告账号
     */
    @Column
    private String accountId;

    /**
     * 推广媒体
     */
    @Column
    private String accountType;

    /**
     * 广告id
     */
    @Column
    private String adId;

    /**
     * 充值渠道ID
     */
    @Column
    private String orderAgentId;

    /**
     * 充值渠道名称
     */
    @Column
    private String orderAgentName;

    /**
     * 充值游戏ID
     */
    @Column
    private String orderGameId;

    /**
     * 充值游戏名称
     */
    @Column
    private String orderGameName;

    /**
     * 充值游戏类型
     */
    @Column
    private String orderGameClassify;

    /**
     * 游戏商品id
     */
    @Column
    private String productId;

    /**
     * 游戏商品名称
     */
    @Column
    private String productName;

    /**
     * 货物总价
     */
    @Column
    private BigDecimal amount;

    /**
     * 实际支付金额
     */
    @Column
    private BigDecimal realAmount;

    /**
     * 支付方式名称
     */
    @Column
    private String payway;

    /**
     * 支付场景
     */
    @Column
    private String payScene;

    /**
     * 收款账户
     */
    @Column
    private String payAccountId;

    /**
     * 服务器id
     */
    @Column
    private String serverId;

    /**
     * 服务器名称
     */
    @Column
    private String serverName;

    /**
     * 角色id
     */
    @Column
    private String roleId;

    /**
     * 角色名称
     */
    @Column
    private String roleName;
    /**
     * 等级
     */
    @Column
    private String roleLevel;

    /**
     * vip等级
     */
    @Column
    private String roleVip;

    /**
     * 操作系统
     */
    @Column
    private String os;

    /**
     * 是否切换
     */
    @Column
    private String orderIsSwitch;

    /**
     * 订单充值时间
     */
    @Column
    private LocalDateTime orderCreateTime;

    /**
     * 支付时间
     */
    @Column
    private String payTime;

    /**
     * 支付状态，1为待处理，2为成功，3为失败
     */
    @Column
    private String orderStatus;

    /**
     * 是否首充：1是,0否
     */
    @Column
    private String isFirstRecharge;

    /**
     * cp最后通知时间
     */
    @Column
    private LocalDateTime lastCpNotifyTime;

}
