package com.ruoyi.bst.order.domain;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 订单列表对象 bst_order
 *
 * @author ruoyi
 * @date 2025-04-26
 */
@Data
public class Order extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long id;

    @Excel(name = "订单号")
    @ApiModelProperty("订单号")
    private String orderNo;

    @Excel(name = "店铺ID")
    @ApiModelProperty("店铺ID")
    private Long storeId;

    @Excel(name = "店铺名称")
    @ApiModelProperty("店铺名称")
    private String storeName;

    @Excel(name = "用户ID")
    @ApiModelProperty("用户ID")
    private Long userId;

    @Excel(name = "支付成功的支付单ID")
    @ApiModelProperty("支付成功的支付单ID")
    private Long payId;

    @Excel(name = "支付金额")
    @ApiModelProperty("支付金额")
    private BigDecimal payAmount;

    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String mark;

    @Excel(name = "状态", readConverterExp = "W=AIT_PAY待支付,P=ROCESSING进行中,F=INISHED已结束,C=ANCELED已取消")
    @ApiModelProperty("状态")
    private String status;

    @Excel(name = "套餐ID")
    @ApiModelProperty("套餐ID")
    private Long suitId;

    @Excel(name = "套餐次数")
    @ApiModelProperty("套餐次数")
    private Integer suitNum;

    @Excel(name = "已退款次数")
    @ApiModelProperty("已退款次数")
    private Integer refundNum;

    @Excel(name = "套餐金额", readConverterExp = "单=位：元")
    @ApiModelProperty("套餐金额")
    private BigDecimal suitAmount;

    @Excel(name = "订单取消备注")
    @ApiModelProperty("订单取消备注")
    private String cancelRemark;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付超时时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("支付超时时间")
    private LocalDateTime payExpireTime;

}
