
package com.tmerclub.cloud.order.vo.mongo;

import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @author lth
 */
@Document("order_refund")
public class MongoOrderRefundStatisticsVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 退款金额
     */
    @Schema(description = "退款金额")
    private Long payActualTotal;

    /**
     * 退款商品数量
     */
    @Schema(description = "退款商品数量")
    private Long refundSpuCount;
    /**
     * 退款成功订单数
     */
    @Schema(description = "退款成功订单数")
    private Integer refundCount;
    /**
     * 退款金额
     */
    private Long refundAmount;
    /**
     * 平台退款金额
     */
    private Long platformRefundAmount;
    /**
     * 总订单数
     */
    @Schema(description = "总订单数")
    private Integer totalOrderCount;
    /**
     * 退款原因
     */
    @Schema(description = "退款原因")
    private String buyerReason;

    /**
     * 商品ID
     */
    @Schema(description = "商品ID")
    private Long spuId;
    /**
     * 退款商品名称
     */
    @Schema(description = "退款商品名称")
    private String refundProdName;
    /**
     * 店铺id
     */
    @Schema(description = "店铺id")
    private Long shopId;
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 店铺名称
     */
    @Schema(description = "店铺名称")
    private String shopName;
    /**
     * 退款率
     */
    @Schema(description = "退款率")
    private Double refundRate;
    /**
     * 退款日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "退款日期")
    private Date refundDate;
    /**
     * 退款日期
     */
    @Schema(description = "退款日期")
    private String refundDateToString;
    /**
     * 时间数据
     */
    private String timeData;
    /**
     * 售后金额
     */
    private BigDecimal afterSaleAmount;
    /**
     * 售后次数
     */
    private Integer afterSaleTimes;

    /**
     * 申请退款订单数
     */
    private Integer refundNum;

    /**
     * 申请退款人数
     */
    private Integer refundPerson;
    /**
     * 成功退款订单数
     */
    private Integer refundSuccessNum;
    /**
     * 成功退款人数
     */
    private Integer refundSuccessPerson;
    /**
     * 成功退款金额
     */
    private Double refundSuccessAmount;

    public Long getSpuId() {
        return spuId;
    }

    public void setSpuId(Long spuId) {
        this.spuId = spuId;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Long getPayActualTotal() {
        return payActualTotal;
    }

    public void setPayActualTotal(Long payActualTotal) {
        this.payActualTotal = payActualTotal;
    }

    public Integer getRefundCount() {
        return refundCount;
    }

    public void setRefundCount(Integer refundCount) {
        this.refundCount = refundCount;
    }

    public String getBuyerReason() {
        return buyerReason;
    }

    public void setBuyerReason(String buyerReason) {
        this.buyerReason = buyerReason;
    }

    public String getRefundProdName() {
        return refundProdName;
    }

    public void setRefundProdName(String refundProdName) {
        this.refundProdName = refundProdName;
    }

    public Date getRefundDate() {
        return refundDate;
    }

    public void setRefundDate(Date refundDate) {
        this.refundDate = refundDate;
    }

    public String getRefundDateToString() {
        return refundDateToString;
    }

    public void setRefundDateToString(String refundDateToString) {
        this.refundDateToString = refundDateToString;
    }

    public Integer getTotalOrderCount() {
        return totalOrderCount;
    }

    public void setTotalOrderCount(Integer totalOrderCount) {
        this.totalOrderCount = totalOrderCount;
    }

    public Double getRefundRate() {
        return refundRate;
    }

    public void setRefundRate(Double refundRate) {
        this.refundRate = refundRate;
    }

    public Long getRefundSpuCount() {
        return refundSpuCount;
    }

    public void setRefundSpuCount(Long refundSpuCount) {
        this.refundSpuCount = refundSpuCount;
    }

    public Long getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(Long refundAmount) {
        this.refundAmount = refundAmount;
    }

    public Long getPlatformRefundAmount() {
        return platformRefundAmount;
    }

    public void setPlatformRefundAmount(Long platformRefundAmount) {
        this.platformRefundAmount = platformRefundAmount;
    }

    public String getTimeData() {
        return timeData;
    }

    public void setTimeData(String timeData) {
        this.timeData = timeData;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public void setAfterSaleAmount(BigDecimal afterSaleAmount) {
        this.afterSaleAmount = afterSaleAmount;
    }

    public BigDecimal getAfterSaleAmount() {
        return afterSaleAmount;
    }

    public Integer getAfterSaleTimes() {
        return afterSaleTimes;
    }

    public void setAfterSaleTimes(Integer afterSaleTimes) {
        this.afterSaleTimes = afterSaleTimes;
    }

    public Integer getRefundNum() {
        return refundNum;
    }

    public void setRefundNum(Integer refundNum) {
        this.refundNum = refundNum;
    }

    public Integer getRefundPerson() {
        return refundPerson;
    }

    public void setRefundPerson(Integer refundPerson) {
        this.refundPerson = refundPerson;
    }

    public Integer getRefundSuccessNum() {
        return refundSuccessNum;
    }

    public void setRefundSuccessNum(Integer refundSuccessNum) {
        this.refundSuccessNum = refundSuccessNum;
    }

    public Integer getRefundSuccessPerson() {
        return refundSuccessPerson;
    }

    public void setRefundSuccessPerson(Integer refundSuccessPerson) {
        this.refundSuccessPerson = refundSuccessPerson;
    }

    public Double getRefundSuccessAmount() {
        return refundSuccessAmount;
    }

    public void setRefundSuccessAmount(Double refundSuccessAmount) {
        this.refundSuccessAmount = refundSuccessAmount;
    }

    @Override
    public String toString() {
        return "MongoOrderRefundStatisticsVO{" +
                "payActualTotal=" + payActualTotal +
                ", refundSpuCount=" + refundSpuCount +
                ", refundCount=" + refundCount +
                ", refundAmount=" + refundAmount +
                ", platformRefundAmount=" + platformRefundAmount +
                ", totalOrderCount=" + totalOrderCount +
                ", buyerReason='" + buyerReason + '\'' +
                ", spuId=" + spuId +
                ", refundProdName='" + refundProdName + '\'' +
                ", shopId=" + shopId +
                ", userId=" + userId +
                ", shopName='" + shopName + '\'' +
                ", refundRate=" + refundRate +
                ", refundDate=" + refundDate +
                ", refundDateToString='" + refundDateToString + '\'' +
                ", timeData='" + timeData + '\'' +
                ", afterSaleAmount=" + afterSaleAmount +
                ", afterSaleTimes=" + afterSaleTimes +
                ", refundNum=" + refundNum +
                ", refundPerson=" + refundPerson +
                ", refundSuccessNum=" + refundSuccessNum +
                ", refundSuccessPerson=" + refundSuccessPerson +
                ", refundSuccessAmount=" + refundSuccessAmount +
                '}';
    }
}
