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

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;
import java.util.List;

@Data
public class ServeManageVO {
    @ApiModelProperty("超父游戏id")
    private Long superGameId;
    @ApiModelProperty("当前区服ID")
    private String endServerId;

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

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

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

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

    @ApiModelProperty("开服时间")
    private LocalDate startTime;
    @ApiModelProperty("开服天数")
    private long startDiff;

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

    @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;

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

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

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

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

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

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

    @ApiModelProperty("使用字段：combatRankList，战力排名-角色ID")
    private String combatRoleId;

    @ApiModelProperty("战力排名-角色名称")
    private String combatRoleName;

    @ApiModelProperty("战力排名-角色国家")
    private String combatCountry;

    @ApiModelProperty("战力排名-角色战力")
    private Long combatTotalRoleCombatNum;

    @ApiModelProperty("战力排名-角色等级")
    private Long combatRoleLevel;

    @ApiModelProperty("战力排名-TOP10")
    private Long combatNum;

    @ApiModelProperty("战力排名-角色付费金额")
    private BigDecimal combatAmount;

    @ApiModelProperty("使用字段：amountRankList，付费排名-角色ID")
    private String amountRoleId;

    @ApiModelProperty("付费排名-角色名称")
    private String amountRoleName;

    @ApiModelProperty("付费排名-付费金额")
    private BigDecimal amountRoleTotalAmount;

    @ApiModelProperty("付费排名-国家")
    private String amountCountry;

    @ApiModelProperty("付费排名-角色战力")
    private Long amountTotalRoleCombatNum;

    @ApiModelProperty("付费排名-角色等级")
    private Long amountRoleLevel;

    @ApiModelProperty("付费排名-TOP10")
    private Long amountNum;

    @ApiModelProperty("战力排名-列表")
    private List<CombatRank> combatRankList;

    @ApiModelProperty("付费排名-列表")
    private List<AmountRank> amountRankList;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class CombatRank{
        @ApiModelProperty("战力排名-角色ID")
        private String combatRoleId;

        @ApiModelProperty("战力排名-角色名称")
        private String combatRoleName;

        @ApiModelProperty("战力排名-角色国家")
        private String combatCountry;

        @ApiModelProperty("战力排名-角色战力")
        private Long combatTotalRoleCombatNum;

        @ApiModelProperty("战力排名-角色等级")
        private Long combatRoleLevel;

        @ApiModelProperty("战力排名-TOP10")
        private Long combatNum;

        @ApiModelProperty("战力排名-角色付费金额")
        private BigDecimal combatAmount;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class AmountRank{
        @ApiModelProperty("付费排名-角色ID")
        private String amountRoleId;

        @ApiModelProperty("付费排名-角色名称")
        private String amountRoleName;

        @ApiModelProperty("付费排名-付费金额")
        private BigDecimal amountRoleTotalAmount;

        @ApiModelProperty("付费排名-国家")
        private String amountCountry;

        @ApiModelProperty("付费排名-角色战力")
        private Long amountTotalRoleCombatNum;

        @ApiModelProperty("付费排名-角色等级")
        private Long amountRoleLevel;

        @ApiModelProperty("付费排名-TOP10")
        private Long amountNum;
    }
}
