package org.dromara.mall.statistics.domain.vo;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 交易统计视图对象
 *
 * @author pengles
 */
@Data
public class TransactionStatisticsVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 总订单数
     */
    private Long totalOrderCount;

    /**
     * 总销售额（分）
     */
    private Long totalSalesAmount;

    /**
     * 已支付订单数
     */
    private Long paidOrderCount;

    /**
     * 已支付金额（分）
     */
    private Long paidAmount;

    /**
     * 退款金额（分）
     */
    private Long refundAmount;

    /**
     * 今日订单数
     */
    private Long todayOrderCount;

    /**
     * 今日销售额（分）
     */
    private Long todaySalesAmount;

    /**
     * 趋势数据（按日期）
     */
    private List<DailyStatisticsVo> trendData;

    /**
     * 商品销售排行
     */
    private List<ProductSalesRankVo> productSalesRank;

    /**
     * 每日统计
     */
    @Data
    public static class DailyStatisticsVo implements Serializable {
        @Serial
        private static final long serialVersionUID = 1L;

        /**
         * 日期
         */
        private String date;

        /**
         * 订单数
         */
        private Long orderCount;

        /**
         * 销售额（分）
         */
        private Long salesAmount;
    }

    /**
     * 商品销售排行
     */
    @Data
    public static class ProductSalesRankVo implements Serializable {
        @Serial
        private static final long serialVersionUID = 1L;

        /**
         * 商品ID
         */
        private Long productId;

        /**
         * 商品名称
         */
        private String productName;

        /**
         * SKU ID
         */
        private Long skuId;

        /**
         * SKU名称
         */
        private String skuName;

        /**
         * 销售数量
         */
        private Integer salesQuantity;

        /**
         * 销售金额（分）
         */
        private Long salesAmount;
    }

}
