package com.ylx.order.domain.vo.merchant;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ylx.order.service.IAfterSaleDisplay;
import com.ylx.order.service.IGeoRiskInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
public class MerchantOrderDetailVO<T> implements IAfterSaleDisplay, IGeoRiskInfo {

    @ApiModelProperty("距离")
    private BigDecimal distanceKm;

    @ApiModelProperty("用户下单时纬度")
    private BigDecimal userLatitude;

    @ApiModelProperty("用户下单时经度")
    private BigDecimal userLongitude;

    @ApiModelProperty("围栏介绍")
    private String fenceIntro;

    @ApiModelProperty("风险提示")
    private Boolean isHighRiskArea;

    @ApiModelProperty("订单状态")
    private Integer orderStatus;

    @ApiModelProperty("订单状态中文")
    private String orderStatusName;

    @ApiModelProperty("项目名称")
    private String projectName;

    @ApiModelProperty("项目时长")
    private Integer projectDuration;

    @ApiModelProperty("最终应付/实付金额")
    private BigDecimal finalAmount;

    @ApiModelProperty("预约开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime appointmentStartTime;

    @ApiModelProperty("预约结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime appointmentEndTime;

    @ApiModelProperty("预约时间范围（格式化，示例：5月12日 16:00-18:00）")
    private String appointmentTimeRange;

    @ApiModelProperty("详细服务地址")
    private String contactAddressInfo;

    @ApiModelProperty("联系人姓名")
    private String contactPersonName;

    @ApiModelProperty("联系人电话号码")
    private String contactPhoneNumber;

    @ApiModelProperty("订单价格")
    private BigDecimal basePrice;

    @ApiModelProperty("交通费")
    private BigDecimal trafficFee;

    @ApiModelProperty("优惠券抵扣金额")
    private BigDecimal couponDiscount;

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

    @ApiModelProperty("订单id")
    private String orderId;

    @ApiModelProperty("下单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @ApiModelProperty("付款时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime paidTime;

    @ApiModelProperty("服务完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime completedTime;

    @ApiModelProperty("售后单ID")
    private Long afterSalesServiceId;

    @ApiModelProperty("售后状态文案")
    private String afterSalesServiceStatus;

    @ApiModelProperty("退款金额")
    private BigDecimal actualRefundAmount;

    @ApiModelProperty("项目封面图")
    private String projectCover;

    @ApiModelProperty("履约状态：0=待出发/待签到，1=已出发，2=已到达/已签到")
    private Integer execStatus;

}
