package com.zm.order.tool.server.model;

import com.alibaba.fastjson.JSON;

/**
 * <p>
 *
 * </p>
 *
 * @author nianchang
 * @date 2023/03/13 7:31 下午
 */
public class DataStream {

    /**
     * 订单类型
     */
    private Integer orderType;

    /**
     * 支付类型
     */
    private Integer payType;

    /**
     * 订单状态
     */
    private Integer status;

    /**
     * 订单来源
     */
    private Integer source;

    /**
     * 订单子类型
     */
    private Integer orderSubType;

    /**
     * 履约类型
     */
    private Integer performanceType;

    /**
     * 履约类型
     */
    private Integer performanceStatus;

    /**
     * 退款类型
     */
    private Integer refundStatus;

    /**
     * 扩展信息
     */
    private String features;

    /**
     * 履约平台
     */
    private String performancePlatform;

    public Integer getPerformanceStatus() {
        return performanceStatus;
    }

    public void setPerformanceStatus(Integer performanceStatus) {
        this.performanceStatus = performanceStatus;
    }

    public String getPerformancePlatform() {
        return performancePlatform;
    }

    public void setPerformancePlatform(String performancePlatform) {
        this.performancePlatform = performancePlatform;
    }

    public String getFeatures() {
        return features;
    }

    public void setFeatures(String features) {
        this.features = features;
    }

    public Integer getSource() {
        return source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getOrderSubType() {
        return orderSubType;
    }

    public void setOrderSubType(Integer orderSubType) {
        this.orderSubType = orderSubType;
    }

    public Integer getPerformanceType() {
        return performanceType;
    }

    public void setPerformanceType(Integer performanceType) {
        this.performanceType = performanceType;
    }

    public Integer getRefundStatus() {
        return refundStatus;
    }

    public void setRefundStatus(Integer refundStatus) {
        this.refundStatus = refundStatus;
    }

    public DataStream() {}

    public DataStream(Integer orderType, Integer performanceType) {
        this.orderType = orderType;
        this.performanceType = performanceType;
    }

    public DataStream(Integer orderType, Integer orderSubType, Integer performanceType) {
        this.orderType = orderType;
        this.orderSubType = orderSubType;
        this.performanceType = performanceType;
    }

    public DataStream(RefundDetail refundDetail) {
        this.payType = refundDetail.getPayType();
        this.features = refundDetail.getFeatures();
    }

    public DataStream(Refund refund) {
        this.orderType = refund.getOrderType();
        this.orderSubType = refund.getOrderSubType();
        this.refundStatus = refund.getStatus();
        this.source = refund.getSource();
        this.payType = refund.getPayType();
        this.performanceType = refund.getPerformanceType();
        this.features = refund.getFeatures();
    }

    public DataStream(OrderComment comment) {
        this.orderType = comment.getOrderType();
        this.performanceType = comment.getPerformanceType();
        this.features = comment.getFeatures();
    }
    public DataStream(OrderItemComment comment) {
        this.orderType = comment.getOrderType();
        this.performanceType = comment.getPerformanceType();
        this.features = comment.getFeatures();
    }

    public DataStream(OrderPayDetails pay) {
        this.source = pay.getSource();
        this.orderType = pay.getOrderType();
        this.payType = pay.getPayType();
        this.performanceType = pay.getPerformanceType();
        this.features = pay.getFeatures();
    }

    public DataStream(Order order) {
        this.orderType = order.getOrderType();
        this.orderSubType = order.getOrderSubType();
        this.status = order.getStatus();
        this.source = order.getSource();
        this.payType = order.getPayType();
        this.performanceType = order.getPerformanceType();
        this.performanceStatus = order.getPerformanceStatus();
        this.performancePlatform = order.getPerformancePlatform();
        this.features = order.getFeatures();
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
