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

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.util.List;

@Data
public class AdsOrderDetailTotalDTO {

    /**
     * 订单ID
     */
    @ApiModelProperty(notes = "订单ID：订单号")
    private String orderId;

    /**
     * cp订单号
     */
    @ApiModelProperty(notes = "cp订单号")
    private String cpOrderId;

    /**
     * 第三方支付订单号
     */
    @ApiModelProperty(notes = "第三方支付订单号")
    private String merchantOrderNo;

    /**
     * 玩家id
     */
    @ApiModelProperty(notes = "玩家id")
    private String userId;

    /**
     * 玩家账号
     */
    @ApiModelProperty(notes = "玩家账号")
    private String username;

    /**
     * 所在服务器名称
     */
    @ApiModelProperty(notes = "所在服务器名称")
    private String serverName;

    /**
     * 所在原始服务器名称
     */
    @ApiModelProperty(notes = "所在原始服务器名称")
    private String sourceServerName;

    /**
     * 游戏角色
     */
    @ApiModelProperty(notes = "游戏角色")
    private String roleName;

    /**
     * cpId cp名称
     */
    @ApiModelProperty(notes = "cpId --> cp名称")
    private String cpName;

    /**
     * 充值游戏id
     */
    @ApiModelProperty(notes = "充值游戏id")
    private List<Long> gameId;

    /**
     * 注册渠道对应的id --> agentId
     */
    @ApiModelProperty(notes = "注册渠道对应的id")
    private List<String> channelId;

    /**
     * 归因推广账号
     */
    @ApiModelProperty(notes = "归因推广账号")
    private String accountId;

    /**
     * 归因投放人员
     */
    @ApiModelProperty(notes = "归因投放人员")
    private String pitcherId;

    /**
     * 操作系统os
     */
    @ApiModelProperty(notes = "操作系统")
    private String deviceSystem;

    /**
     * 产品名称(游戏商品名称)
     */
    @ApiModelProperty(notes = "产品名称")
    private String productName;

    /**
     * 支付方式
     */
    @ApiModelProperty(notes = "支付方式名称：wxpaymap;mpay;wxpay...")
    private String payWay;

    /**
     * 收款商户号
     */
    @ApiModelProperty(notes = "收款商户号")
    private String merchantNo;

    /**
     * 支付状态
     */
    @ApiModelProperty(notes = "支付状态，1待支付，2 支付成功，-1 已取消")
    private String status;

    /**
     * CP通知状态
     */
    @ApiModelProperty(notes = "CP通知状态，1为待处理，2为成功，-1为失败")
    private String cpStatus;

    /**
     * 是否首充
     */
    @ApiModelProperty(notes = "是否首充 0 否 1 是")
    private String isFirstRecharge;

    /**
     * 下单时间-开始
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "下单时间-开始")
    private LocalDate beginDate;

    /**
     * 下单时间-结束
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "下单时间-结束")
    private LocalDate endDate;

    /**
     * 玩家注册时间-开始
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(notes = "玩家注册时间-开始")
    private LocalDate regTimeStart;

    /**
     * 玩家注册时间-结束
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(notes = "玩家注册时间-结束")
    private LocalDate regTimeEnd;

    /**
     * 支付时间-开始
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(notes = "支付时间-开始")
    private LocalDate payTimeStart;

    /**
     * 支付时间-结束
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(notes = "支付时间-结束")
    private LocalDate payTimeEnd;

    /**
     * 充值到支付的间隔时间（最小分）
     */
    @ApiModelProperty("充值到支付的间隔时间（分）")
    private Long regPayIntervalTimeMin;

    /**
     * 充值到支付的间隔时间（最大分）
     */
    @ApiModelProperty("充值到支付的间隔时间（分）")
    private Long regPayIntervalTimeMax;

    /**
     * SDK来源
     */
    @ApiModelProperty("SDK来源")
    private String sourceSystem;

    /**
     * 计划ID
     */
    @ApiModelProperty(notes = "计划ID")
    private String promotionId;

    /**
     * 广告ID
     */
    @ApiModelProperty(notes = "广告ID")
    private String projectId;

    /**
     * 订单渠道类型
     */
    @ApiModelProperty(notes = "订单渠道类型：买量 -> buy ; 自然量 -> nature")
    private String orderAgentType;

}
