package com.ruoyi.info.order.domain;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseTimeEntity;
import com.ruoyi.info.order.enums.CancellationMethod;
import com.ruoyi.info.order.enums.OrderStatus;
import com.ruoyi.info.order.enums.PayMethod;
import com.ruoyi.info.service.enums.ServiceUnit;
import lombok.Data;

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

/**
 * 订单对象 tb_order
 *
 * @author ruoyi
 * @date 2025-09-20
 */
@Data
@TableName("tb_order")
public class Order extends BaseTimeEntity {

    private static final long serialVersionUID=1L;

    /**
     * ID
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 订单号
     */
    private String orderNo;
    /**
     * C端用户ID
     */
    private Long userId;
    /**
     * 状态
     */
    private OrderStatus status;
    /**
     * 医院ID
     */
    private Long hospitalId;
    /**
     * 医院信息冗余
     */
    private String hospitalInfo;
    /**
     * 医院科室ID
     */
    private Long hospitalDepartmentId;
    /**
     * 医院科室信息冗余
     */
    private String hospitalDepartmentInfo;
    /**
     * 房床号
     */
    private String roomNumber;
    /**
     * 订单备注
     */
    private String remarks;
    /**
     * 就诊人ID
     */
    private Long patientId;
    /**
     * 就诊人信息冗余
     */
    private String patientInfo;
    /**
     * 服务ID
     */
    private Long serviceId;
    /**
     * 服务信息冗余
     */
    private String serviceInfo;
    /**
     * 服务单位
     */
    private ServiceUnit serviceUnit;
    /**
     * 服务单位时长
     */
    private Integer serviceUnitDuration;
    /**
     * 期望时间
     */
    private Date expectedTime;
    /**
     * 下单数量
     */
    private Integer orderNum;
    /**
     * 销售价
     */
    private BigDecimal sellingPrice;
    /**
     * 应付价格
     */
    private BigDecimal totalPrice;
    /**
     * 实付价格
     */
    private BigDecimal payPrice;
    /**
     * 支付方式
     */
    private PayMethod payMethod;
    /**
     * 订单支付时间
     */
    private Date payTime;
    /**
     * 订单支付流水号
     */
    private String payTradeNo;
    /**
     * 护工ID
     */
    private Long workerId;
    /**
     * 订单取消方式(10用户取消,20平台取消,30未支付自动取消)
     */
    private CancellationMethod cancellationMethod;
    /**
     * 订单取消时间
     */
    private Date cancellationTime;
    /**
     * 订单取消原因
     */
    private String cancellationReason;
    /**
     * 订单是否评价
     */
    private Boolean isReviewed;

}
