package com.zanxiang.game.gs.data.serve.pojo.vo;

import com.mybatisflex.annotation.Column;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ServerPayVO {

    /**
     * gsID
     */
    @ApiModelProperty("gsID")
    private String gsIds;

    @ApiModelProperty("gs 名称")
    private String gsName;

    @ApiModelProperty("父游戏 名称")
    private String parentGameName;

    @ApiModelProperty("父游戏 名称")
    private String parentGameId;

    private Long superGameId;

    @ApiModelProperty("GS运营状态：1：独立运营；2：联合运营")
    private Integer gsStatus;

    @ApiModelProperty("区服id")
    private String serverId;

    @ApiModelProperty("区服名称")
    private String serverName;

    @ApiModelProperty("是否原始服")
    private Boolean originServer;

    @ApiModelProperty("开服时间（也是服务开始时间）")
    private LocalDate startTime;

    @ApiModelProperty("开服天数")
    private long startDiff;

    @ApiModelProperty("服务结束时间（无合服记录默认：2099-01-01）")
    private LocalDate endTime;

    @ApiModelProperty("服务天数")
    private long serveDiff;

    @ApiModelProperty("GS服务状态：0：服务中；1：服务完成")
    private Boolean serveStatus;

    @ApiModelProperty("指派期间创角人数（合服）")
    private Long totalRoleNum;

    /**
     * 指派期间付费人数（合服）
     */
    @ApiModelProperty("指派期间付费人数（合服）")
    private Long totalAmountNum;

    /**
     * 指派期间付费次数（合服）
     */
    @ApiModelProperty("指派期间付费次数（合服）")
    private Long totalAmountCount;

    /**
     * 指派期间付费金额（合服）
     */
    @ApiModelProperty("指派期间付费金额（合服）")
    private BigDecimal totalAmount;

    /**
     * 指派期间ARPPU (人均付费金额）（合服）
     */
    @ApiModelProperty("指派期间ARPPU (人均付费金额）（合服）")
    private BigDecimal arppu;

    /**
     * 指派期间客单价（合服）
     */
    @ApiModelProperty("指派期间客单价（合服）")
    private BigDecimal avgAmount;

    /**
     * 指派期间付费率（合服）
     */
    @ApiModelProperty("指派期间付费率（合服）")
    private BigDecimal amountRate;

    /**
     * 创角人数（子服）
     */
    @ApiModelProperty("创角人数（子服）")
    private Long sonRoleNum;

    /**
     * 付费人数（子服）
     */
    @ApiModelProperty("付费人数（子服）")
    private Long sonServerAmountNum;

    /**
     * 付费次数（子服）
     */
    @ApiModelProperty("付费次数（子服）")
    private Long sonServerAmountCount;

    /**
     * 付费金额（子服）
     */
    @ApiModelProperty("付费金额（子服）")
    private BigDecimal sonServerAmount;

    /**
     * ARPPU (人均付费金额）（子服）
     */
    @ApiModelProperty("ARPPU (人均付费金额）（子服）")
    private BigDecimal sonArppu;

    /**
     * 客单价（子服）
     */
    @ApiModelProperty("客单价（子服）")
    private BigDecimal sonAvgAmount;

    /**
     * 付费率（子服）
     */
    @ApiModelProperty("付费率（子服）")
    private BigDecimal sonAmountRate;

    @ApiModelProperty("非展示字段：区服第1天：活跃人数/付费人数/累计付费人数/付费金额/付费率/活跃留存率/付费留存率")
    private String da1;
    private String da2;
    private String da3;
    private String da4;
    private String da5;
    private String da6;
    private String da7;
    private String da8;
    private String da9;
    private String da10;
    private String da11;
    private String da12;
    private String da13;
    private String da14;
    private String da15;
    private String da16;
    private String da17;
    private String da18;
    private String da19;
    private String da20;
    private String da21;
    private String da22;
    private String da23;
    private String da24;
    private String da25;
    private String da26;
    private String da27;
    private String da28;
    private String da29;
    private String da30;
    private String da31;
    private String da32;
    private String da33;
    private String da34;
    private String da35;
    private String da36;
    private String da37;
    private String da38;
    private String da39;
    private String da40;
    private String da41;
    private String da42;
    private String da43;
    private String da44;
    private String da45;
    private String da46;
    private String da47;
    private String da48;
    private String da49;
    private String da50;
    private String da51;
    private String da52;
    private String da53;
    private String da54;
    private String da55;
    private String da56;
    private String da57;
    private String da58;
    private String da59;
    private String da60;
    private String da61;
    private String da62;
    private String da63;
    private String da64;
    private String da65;
    private String da66;
    private String da67;
    private String da68;
    private String da69;
    private String da70;
    private String da71;
    private String da72;
    private String da73;
    private String da74;
    private String da75;
    private String da76;
    private String da77;
    private String da78;
    private String da79;
    private String da80;
    private String da81;
    private String da82;
    private String da83;
    private String da84;
    private String da85;
    private String da86;
    private String da87;
    private String da88;
    private String da89;
    private String da90;
    private String total;

    private DayN retainedDa1;
    private DayN retainedDa2;
    private DayN retainedDa3;
    private DayN retainedDa4;
    private DayN retainedDa5;
    private DayN retainedDa6;
    private DayN retainedDa7;
    private DayN retainedDa8;
    private DayN retainedDa9;
    private DayN retainedDa10;
    private DayN retainedDa11;
    private DayN retainedDa12;
    private DayN retainedDa13;
    private DayN retainedDa14;
    private DayN retainedDa15;
    private DayN retainedDa16;
    private DayN retainedDa17;
    private DayN retainedDa18;
    private DayN retainedDa19;
    private DayN retainedDa20;
    private DayN retainedDa21;
    private DayN retainedDa22;
    private DayN retainedDa23;
    private DayN retainedDa24;
    private DayN retainedDa25;
    private DayN retainedDa26;
    private DayN retainedDa27;
    private DayN retainedDa28;
    private DayN retainedDa29;
    private DayN retainedDa30;
    private DayN retainedDa31;
    private DayN retainedDa32;
    private DayN retainedDa33;
    private DayN retainedDa34;
    private DayN retainedDa35;
    private DayN retainedDa36;
    private DayN retainedDa37;
    private DayN retainedDa38;
    private DayN retainedDa39;
    private DayN retainedDa40;
    private DayN retainedDa41;
    private DayN retainedDa42;
    private DayN retainedDa43;
    private DayN retainedDa44;
    private DayN retainedDa45;
    private DayN retainedDa46;
    private DayN retainedDa47;
    private DayN retainedDa48;
    private DayN retainedDa49;
    private DayN retainedDa50;
    private DayN retainedDa51;
    private DayN retainedDa52;
    private DayN retainedDa53;
    private DayN retainedDa54;
    private DayN retainedDa55;
    private DayN retainedDa56;
    private DayN retainedDa57;
    private DayN retainedDa58;
    private DayN retainedDa59;
    private DayN retainedDa60;
    private DayN retainedDa61;
    private DayN retainedDa62;
    private DayN retainedDa63;
    private DayN retainedDa64;
    private DayN retainedDa65;
    private DayN retainedDa66;
    private DayN retainedDa67;
    private DayN retainedDa68;
    private DayN retainedDa69;
    private DayN retainedDa70;
    private DayN retainedDa71;
    private DayN retainedDa72;
    private DayN retainedDa73;
    private DayN retainedDa74;
    private DayN retainedDa75;
    private DayN retainedDa76;
    private DayN retainedDa77;
    private DayN retainedDa78;
    private DayN retainedDa79;
    private DayN retainedDa80;
    private DayN retainedDa81;
    private DayN retainedDa82;
    private DayN retainedDa83;
    private DayN retainedDa84;
    private DayN retainedDa85;
    private DayN retainedDa86;
    private DayN retainedDa87;
    private DayN retainedDa88;
    private DayN retainedDa89;
    private DayN retainedDa90;
    private DayN retainedTotal;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class DayN{
        @ApiModelProperty("用户人数:活跃人数")
        private long activeNum;
        @ApiModelProperty("用户人数:付费人数")
        private long payNum;
        @ApiModelProperty("用户人数:累计付费人数")
        private long totalPayNum;
        @ApiModelProperty("用户人数:小R人数")
        private long sRNum;
        @ApiModelProperty("用户人数:中R人数")
        private long mRNum;
        @ApiModelProperty("用户人数:大R人数")
        private long bRNum;
        @ApiModelProperty("用户人数:超R人数")
        private long superRNum;
        @ApiModelProperty("用户人数:R总人数")
        private long totalRNum;

        @ApiModelProperty("付费金额:付费金额")
        private BigDecimal payMoney;

        @ApiModelProperty("用户占比：付费率=付费人数/活跃人数")
        private BigDecimal payRate;
        @ApiModelProperty("用户占比：小R付费比=小R付费人数/付费人数")
        private BigDecimal sRRate;
        @ApiModelProperty("用户占比：中R付费比=中R付费人数/付费人数")
        private BigDecimal mRRate;
        @ApiModelProperty("用户占比：大R付费比=大R付费人数/付费人数")
        private BigDecimal bRRate;
        @ApiModelProperty("用户占比：超R付费比=超R付费人数/付费人数")
        private BigDecimal superRRate;

        @ApiModelProperty("留存率：活跃留存率=第n天的活跃人数/累计到第n天创角总人数")
        private BigDecimal activeRetainedRate;
        @ApiModelProperty("留存率：付费留存率=第n天的付费人数/累计到第n天付费总人数")
        private BigDecimal payRetainedRate;
        @ApiModelProperty("留存率：小R留存率=第n天的小R人数/累计到第n天付费总人数")
        private BigDecimal sRRetainedRate;
        @ApiModelProperty("留存率：中R留存率=第n天的中R人数/累计到第n天付费总人数")
        private BigDecimal mRRetainedRate;
        @ApiModelProperty("留存率：大R留存率=第n天的大R人数/累计到第n天付费总人数")
        private BigDecimal bRRetainedRate;
        @ApiModelProperty("留存率：超R留存=第n天的超R人数/累计到第n天付费总人数")
        private BigDecimal superRRetainedRate;
        @ApiModelProperty("留存率：R总留存率=R总人数/累计到第那天付费总人数")
        private BigDecimal totalRRetainedRate;
    }

}
