package com.sf.order.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sf.common.annotation.Excel;
import com.sf.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;

/**
 * 订单基础信息对象 ORDER_INFO
 *
 * @author ztzh
 * @date 2024-04-09
 */
@Data
public class OrderInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号")
    private Long orderNo;

    /**
     * 订单状态: 0:待支付 1:已付款待发货 2:配送中 3:待取货 4:支付超时系统结束 5:客户自主取消 6:已完成
     */
    @Excel(name = "订单状态: 0:待支付 1:已付款待发货 2:配送中 3:待取货 4:支付超时系统结束 5:客户自主取消 6:已完成 ")
    private Long orderStatus;

    /**
     * 支付方式:0-点券 1-现金
     */
    @Excel(name = "支付方式:0-点券 1-现金")
    private Long payType;

    /**
     * 支付渠道(支付方式为现金时)
     * 0:微信
     * 1:支付宝
     */
    @Excel(name = "支付渠道(支付方式为现金时) 0:微信 1:支付宝")
    private Long payChannel;

    /**
     * 订单金额
     */
    @Excel(name = "订单金额")
    private Long orderAmt;

    /**
     * 运费
     */
    @Excel(name = "运费")
    private Long freightAmt;

    /**
     * 总金额
     */
    @Excel(name = "总金额")
    private Long payAmt;

    /**
     * 实际支付金额
     */
    @Excel(name = "实际支付金额")
    private Long reallyAmt;

    /**
     * 收件方式
     * ：0-自提
     * 1-快递 2-配送
     */
    @Excel(name = "收件方式：0-自提 1-快递 2-配送")
    private Long receiveType;

    /**
     * 商品Id
     */
    @Excel(name = "商品Id")
    private Long goodsId;

    /**
     * 商户Id
     */
    @Excel(name = "商户Id")
    private Long businessId;

    /**
     * 收货地址配置Id
     */
    @Excel(name = "收货地址配置Id")
    private Long receiveAddrId;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 订单创建人
     */
    @Excel(name = "订单创建人")
    private Long createUserId;

    /**
     * 最后一次更新操作人
     */
    @Excel(name = "最后一次更新操作人")
    private Long updateUserId;

    /**
     * 逻辑删除标识
     * 0:未删除
     * 1:已删除
     */
    @Excel(name = "逻辑删除标识 0:未删除 1:已删除")
    private Long isDelete;

    /**
     * 快递单号
     */
    @Excel(name = "快递单号")
    private String trackNo;

    /**
     * 订单类型0:自动1:手动
     */
    @Excel(name = "订单类型0:自动1:手动")
    private Long orderType;

    /**
     * 平台外部订单号
     */
    @Excel(name = "平台外部订单号")
    private String outOrderNo;

    /**
     * 平台支付返回值
     */
    @Excel(name = "平台支付返回值")
    private String payData;

    /**
     * 减免金额(优惠券抵扣)
     */
    @Excel(name = "减免金额(优惠券抵扣)")
    private Long reductionAmout;

    /**
     *      * 商品数量
     */
    private Integer goodsCount;
    /**
     *      * 商品类型。
     *      * •	0：消耗型商品
     *      * •	1：非消耗型商品
     *      * •	2：自动续期订阅商品
     */
    private Integer goodsType;

    /**
     * 商品单价
     */
    private Long goodsPrice;

    /**
     * 商品编号
     */
    private String goodsCode;


}
