package com.liquidnet.service.goblin.dto.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Map;

/**
 * 店铺退款列表 - 各审核状态 Tab 数量。
 * 对应前端 Tab：全部 / 待审核(1) / 已退款(2) / 已驳回(3)
 */
@ApiModel("店铺退款列表-各审核状态数量")
@Data
public class GoblinStoreBackOrderStatusCountVo {

    /** 全部 */
    @ApiModelProperty("全部")
    private long all;
    /** 待审核 status=1 退款申请 */
    @ApiModelProperty("待审核[status=1-退款申请]")
    private long pendingAudit;
    /** 已退款 status=2 退款成功 */
    @ApiModelProperty("已退款[status=2-退款成功]")
    private long refunded;
    /** 已驳回 status=3 退款拒绝 */
    @ApiModelProperty("已驳回[status=3-退款拒绝]")
    private long rejected;

    /**
     * 从 Mongo 按 status 分组统计结果组装 VO。
     * 新增 Tab 时在此补充 getOrDefault 即可。
     */
    public static GoblinStoreBackOrderStatusCountVo of(long all, Map<Integer, Long> grouped) {
        GoblinStoreBackOrderStatusCountVo vo = new GoblinStoreBackOrderStatusCountVo();
        vo.all = all;
        vo.pendingAudit = grouped.getOrDefault(1, 0L);
        vo.refunded = grouped.getOrDefault(2, 0L);
        vo.rejected = grouped.getOrDefault(3, 0L);
        return vo;
    }
}
