package com.ruoyi.ss.order.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * 订单对象 rl_order
 *
 * @author qzz
 * @date 2024-09-19
 */
@Data
public class Order extends BaseEntity {
    private static final long serialVersionUID = 1L;

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

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

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

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

    /**
     * 真实姓名
     */
    @Excel(name = "真实姓名")
    private String realName;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    private String phone;

    /**
     * 套餐id
     */
    @Excel(name = "套餐id")
    private Long ruleId;

    /**
     * 大门mac
     */
    @Excel(name = "大门mac")
    private String gateMac;

    /**
     * 大门mac2
     */
    @Excel(name = "大门mac2")
    private String gateMac2;

    /**
     * 大门sn码
     */
    @Excel(name = "大门sn码")
    private String gateSn;

    /**
     * 大门Id
     */
    @Excel(name = "大门Id")
    private Long gateId;

    /**
     * 房间门mac
     */
    @Excel(name = "房间门mac")
    private String roomMac;

    /**
     * 房间门mac2
     */
    @Excel(name = "房间门mac2")
    private String roomMac2;

    /**
     * 房间门sn码
     */
    @Excel(name = "房间门sn码")
    private String roomSn;

    /**
     * 设施mac
     */
    @Excel(name = "设施mac")
    private String equipmentMac;

    /**
     * 设施mac2
     */
    @Excel(name = "设施mac2")
    private String equipmentMac2;

    /**
     * 设施sn码
     */
    @Excel(name = "设施sn码")
    private String equipmentSn;

    /**
     * 订单时长(小时)
     */
    @Excel(name = "订单时长")
    private Integer duration;

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

    /**
     * 支付方式: wx-微信，alipay-支付宝，ye-余额支付
     */
    @Excel(name = "支付方式")
    private String payType;

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

    /**
     * 类型
     */
    @Excel(name = "类型")
    private String type;

    /**
     * 是否续单：1-预定单；2-续单
     */
    @Excel(name = "是否续单：1-预定单；2-续单")
    private String reType;

    /**
     * 订单总金额（元）
     */
    @Excel(name = "订单总金额", readConverterExp = "元")
    private BigDecimal totalFee;

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

    /**
     * 押金
     */
    @Excel(name = "押金")
    private BigDecimal deposit;

    /**
     * 押金退款备注
     */
    @Excel(name = "押金退款备注")
    private String depositRefundDesc;

    /**
     * 订单金额退款
     */
    @Excel(name = "订单金额退款")
    private BigDecimal refund;

    /**
     * 押金退款(智能模式)
     */
    @Excel(name = "押金退款")
    private BigDecimal depositRefund;

    /**
     * 押金自动退款时长
     */
    @Excel(name = "押金自动退款时长")
    private Integer refundDuration;

    /**
     * 实际退款时间（智能模式）
     */
    @Excel(name = "实际退款时间（智能模式）")
    private Date refundTime;

    /**
     * 是否已退剩余押金0-未退；1-已退（智能模式）
     */
    @Excel(name = "是否已退剩余押金0-未退；1-已退（智能模式）")
    private String isRefund;

    /**
     * 平台服务费
     */
    @Excel(name = "平台服务费")
    private BigDecimal platformServiceFee;

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

    /**
     * 状态
     */
    @Excel(name = "状态")
    private String status;

    /**
     * 预定开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预定开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reserveStartTime;

    /**
     * 预定结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预定结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reserveEndTime;

    /**
     * 换包间原因
     */
    private String changeReason;


    /**
     * 支付渠道id
     */
    @Excel(name = "支付渠道id")
    private Long payChannel;

    /**
     * 支付渠道名称
     */
    @Excel(name = "支付渠道名称")
    private String channelName;

    /**
     * 渠道成本
     */
    @ApiModelProperty("渠道成本")
    private BigDecimal channelCost;

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

    /**
     * 店铺id
     */
    @Excel(name = "店铺id")
    private Long storeId;

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

    @Excel(name = "定位经度")
    @ApiModelProperty("定位经度")
    private BigDecimal lng;

    @Excel(name = "定位纬度")
    @ApiModelProperty("定位纬度")
    private BigDecimal lat;

    @Excel(name = "店长电话")
    @ApiModelProperty("店长电话")
    private String managerPhone;

    /**
     * 房间id
     */
    @Excel(name = "房间id")
    private Long roomId;

    /**
     * 房间名称
     */
    @Excel(name = "房间名称")
    private String roomName;

    /**
     * 房间类型
     */
    @Excel(name = "房间类型")
    private String roomType;

    /**
     * 房间类型
     */
    @Excel(name = "房间类型2：1-房间；2-大厅设施")
    private String roomType2;

    /**
     * 设施Id
     */
    @Excel(name = "设施Id")
    private Long equipmentId;

    /**
     * 设施名称
     */
    @Excel(name = "设施名称")
    private String equipmentName;

    /**
     * 设施类型
     */
    @Excel(name = "设施类型")
    private String equipmentType;

    /**
     * 商户id
     */
    @Excel(name = "商户id")
    private Long merchantId;

    /**
     * 商户名
     */
    @Excel(name = "商户名")
    private String merchantName;

    /**
     * 下单城市
     */
    @Excel(name = "下单城市")
    private Long cityId;

    /**
     * 原订单号  订单类型为续单时需要
     */
    private String originalOrderNo;

    /**----------------------------套餐start----------------------------*/

    @Excel(name = "套餐：1-按小时计费；2-自定义模板")
    @ApiModelProperty("套餐")
    private String mode;

    @Excel(name = "小时")
    @ApiModelProperty("小时")
    private Integer hours;

    @Excel(name = "售价")
    @ApiModelProperty("售价")
    private BigDecimal price;

    @Excel(name = "说明")
    @ApiModelProperty("说明")
    private String explain;

    /**----------------------------套餐end----------------------------*/

    /**
     * 系统自动取消时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date autoCancelTime;

    /**
     * 是否已发送过短信提醒
     */
    @Excel(name = "是否已发送过短信提醒")
    private Boolean isSendMsg;

    @Excel(name = "wifi账号")
    @ApiModelProperty("wifi账号")
    private String wifi;

    @Excel(name = "wifi密码")
    @ApiModelProperty("wifi密码")
    private String wifiPassword;

    @Excel(name = "商品id")
    @ApiModelProperty("商品id")
    private Long productId;

    @Excel(name = "商品名称")
    @ApiModelProperty("商品名称")
    private String productName;

    @Excel(name = "商品图片")
    @ApiModelProperty("商品图片")
    private String productPicture;

    @Excel(name = "房间/设施图片")
    @ApiModelProperty("房间/设施图片")
    private String picture;

}
