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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
@ApiModel("商户端订单分页VO")
public class OrderPageVO<T> implements IAfterSaleDisplay, IGeoRiskInfo {

    @ApiModelProperty("订单ID")
    private Long id;

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

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

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

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

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

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

    @ApiModelProperty("")
    private Integer projectDuration;

    @ApiModelProperty("项目标价/售价")
    private BigDecimal basePrice;

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

    @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 contactPersonName;

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

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

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

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

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

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

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

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

    @ApiModelProperty("客户标签编码 0 = 新客; 1 = 复购; 2 = 老客")
    private Integer customerTagCode;

    @ApiModelProperty("客户标签展示文案")
    private String customerTagDesc;

    @ApiModelProperty("服务类目ID")
    private Long categoryId;

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