package com.ylx.massage.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商品订单信息
 */
@Data
@TableName("product_order_info")
public class ProductOrderInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 订单编号（雪花算法/业务规则生成）
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 用户openId
     */
    @TableField("open_id")
    private String openId;

    /**
     * 订单状态(0：待付款 1：待发货 2：待收货 3：已收货 4：售后中  11：取消订单)
     */
    private Integer orderStatus;

    /**
     * 支付状态
     * 0未支付 1已支付 2支付失败 3已退款
     */
    private Integer payStatus;

    /**
     * 支付方式
     * 1微信 2余额 3:积分支付
     */
    private Integer payType;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 支付超时时间（默认下单后15分钟）
     */
    private LocalDateTime payExpireTime;

    /**
     * 商品总金额
     */
    private BigDecimal totalAmount;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 运费
     */
    private BigDecimal freightAmount;

    /**
     * 实付金额= total_amount - discount_amount + freight_amount
     */
    private BigDecimal payAmount;

    /**
     * 使用的优惠券ID
     */
    private Long couponId;

    /**
     * 优惠券抵扣金额
     */
    private BigDecimal couponAmount;

    /**
     * 使用积分数量
     */
    private Integer pointsUsed;

    /**
     * 地址ID
     */
    private Long addressId;

    /**
     * 用户姓名
     */
    private String userName;

    /**
     * 用户电话
     */
    private String userPhone;

    /**
     * 用户详细地址
     */
    private String userAddress;

    /**
     * 配送方式
     * 1快递 2自提
     */
    @TableField("delivery_type")
    private Integer deliveryType;

    /**
     * 快递公司
     */
    private String logisticsCompany;

    /**
     * 快递单号
     */
    private String logisticsNo;

    /**
     * 发货时间
     */
    private LocalDateTime deliveryTime;

    /**
     * 确认收货时间
     */
    private LocalDateTime receiveTime;

    /**
     * 买家备注
     */
    private String buyerRemark;

    /**
     * 取消原因
     */
    private String cancelReason;

    /**
     * 是否删除 0否 1是
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
