package cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo;

import cn.iocoder.yudao.module.member.convert.excel.OrderSpaceCapsuleStatusConverter;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

import javax.validation.constraints.NotNull;

@Schema(description = "管理后台 - 太空舱订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderSpaceCapsuleRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23511")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "订单金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单金额")
    private BigDecimal money;

    @Schema(description = "太空船id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22979")
    private Long spaceCapsuleId;

    @Schema(description = "门店id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5246")
    private Long carteenId;
    @Schema(description = "门店名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "5246")
    @ExcelProperty("门店名称")
    private String carteenName;

    @Schema(description = "0未使用1使用中2已完成3已退款", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty(value = "状态",converter = OrderSpaceCapsuleStatusConverter.class )
    private Integer status;

    @Schema(description = "套餐金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "32723")
    @ExcelProperty("套餐金额")
    private BigDecimal comboPrice;

    @Schema(description = "套餐时间/分钟", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("套餐时间/分钟")
    private Integer comboMinutes;

    @Schema(description = "套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("套餐名称")
    private String comboPackageName;

    @Schema(description = "套餐开始使用时间")
    @ExcelProperty("套餐开始使用时间")
    private LocalDateTime orderStartTime;

    @Schema(description = "套餐结束使用时间")
    @ExcelProperty("套餐结束使用时间")
    private LocalDateTime orderEndTime;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "产生订单的用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30766")
    private Long userId;

    @Schema(description = "消费前的余额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal startMoney;

    @Schema(description = "消费后的余额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal endMoney;

    @Schema(description = "支付方式", requiredMode = Schema.RequiredMode.REQUIRED)
    private String payMethods;
    /**
     * 套餐数量
     */
    @Schema(description = "套餐数量", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("套餐数量")
    private Integer comboNum;
    /**
     * 退款金额
     */
    @Schema(description = "退款金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("退款金额")
    private BigDecimal refundMoney;
    @Schema(description = "cmd 执行命令")
    private String cmd;
    @Schema(description = "二维码,base64")
    private String qrCode;
    @Schema(description = "支付编号")
    private Integer payNum;
    @Schema(description = "机器编号")
    private String machineNum;
    @Schema(description = "用户手机号")
    @ExcelProperty("用户手机号")
    private String phone;
    @Schema(description = "太空舱名称")
    @ExcelProperty("太空舱名称")
    private String spaceName;
    private Boolean billingExist;
    private String billingNum;
}