package beilv.order.domain;

import java.math.BigDecimal;
import java.util.Date;

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

/**
 * 订单对象 store_order
 *
 * @author ruoyi
 * @date 2025-11-12
 */
@Data
public class StoreOrder extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    private Long id;

    /**
     * 订单号
     */
    @Excel(name = "订单号")
    private String orderId;

    /**
     * 微信支付订单号
     */
    @Excel(name = "微信支付订单号")
    private String transactionId;

    /**
     * 订单类型
     */
    @Excel(name = "订单类型")
    private String orderType;

    /**
     * 用户id
     */
    @Excel(name = "用户id")
    private Long uid;

    /**
     * 用户姓名
     */
    @Excel(name = "用户姓名")
    private String realName;

    /**
     * 用户电话
     */
    @Excel(name = "用户电话")
    private String userPhone;

    /**
     * 详细地址
     */
    @Excel(name = "详细地址")
    private String userAddress;

    /**
     * 订单商品总数
     */
    @Excel(name = "订单商品总数")
    private Integer totalNum;

    /**
     * 订单总价
     */
    @Excel(name = "订单总价")
    private BigDecimal totalPrice;

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

    /**
     * 会员折扣
     */
    @Excel(name = "会员折扣")
    private BigDecimal vipDiscount;

    /**
     * 会员优惠金额
     */
    @Excel(name = "会员优惠金额")
    private BigDecimal vipDeductionAmount;

    /**
     * 抵扣金额
     */
    @Excel(name = "抵扣金额")
    private BigDecimal deductionPrice;

    /**
     * 优惠券id
     */
    @Excel(name = "优惠券id")
    private Integer couponId;

    /**
     * 优惠券金额
     */
    @Excel(name = "优惠券金额")
    private BigDecimal couponPrice;

    /**
     * 支付状态
     */
    @Excel(name = "支付状态")
    private Integer paid;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /**
     * 支付方式
     */
    @Excel(name = "支付方式")
    private String payType;

    /**
     * 订单状态（-1 : 取消 ；0：未支付；1：待发货；2：待收货；3：待评价；4：已完成；5：待成团）
     */
    @Excel(name = "订单状态", readConverterExp = "-=1,:=,取=消,；=0：未支付；1：待发货；2：待收货；3：待评价；4：已完成；5：待成团")
    private Integer status;

    /**
     * 支付状态: 0 未退款 1 申请中 2 已退款
     */
    @Excel(name = "0 未退款 1 申请中 2 已退款")
    private Integer refundStatus;

    /**
     * 使用积分
     */
    @Excel(name = "使用积分")
    private BigDecimal useIntegral;

    /**
     * 实际支付积分
     */
    @Excel(name = "实际支付积分")
    private BigDecimal payIntegral;

    /**
     * 创建者
     */
    @Excel(name = "创建者")
    private String creator;

    /**
     * 更新者
     */
    @Excel(name = "更新者")
    private String updater;

    /**
     * 支付id
     */
    @Excel(name = "支付id")
    private String payId;

}