package shop.alien.entity.store.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户订单统一视图对象（包含商户订单和律师订单）
 *
 * @author system
 * @since 2025-01-XX
 */
@Data
@JsonInclude
@ApiModel(value = "UserOrderVo对象", description = "用户订单统一视图对象")
public class UserOrderVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "订单ID")
    private String orderId;

    @ApiModelProperty(value = "订单编号")
    private String orderNumber;

    @ApiModelProperty(value = "订单类型：1-商户订单，2-律师订单")
    private Integer orderType;

    @ApiModelProperty(value = "用户ID")
    private String userId;

    @ApiModelProperty(value = "商户/律师ID")
    private String businessId;

    @ApiModelProperty(value = "商户名称/律师名称")
    private String businessName;

    @ApiModelProperty(value = "订单金额（单位：分，商户订单）/订单金额（单位：分，律师订单）")
    private String orderAmount;

    @ApiModelProperty(value = "实付金额（商户订单）")
    private String finalPrice;

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

    @ApiModelProperty(value = "订单状态文本")
    private String orderStatusValue;

    @ApiModelProperty(value = "支付状态（律师订单：0-未支付，1-已支付）")
    private Integer paymentStatus;

    @ApiModelProperty(value = "下单时间")
    private Date orderTime;

    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    @ApiModelProperty(value = "订单创建时间")
    private Date createdTime;

    @ApiModelProperty(value = "商户订单相关：店铺ID")
    private String storeId;

    @ApiModelProperty(value = "商户订单相关：商品名称")
    private String couponName;

    @ApiModelProperty(value = "商户订单相关：商品图片URL")
    private String imgUrl;

    @ApiModelProperty(value = "商户订单相关：是否已评价（0-未评价，1-已评价）")
    private Integer orderAppraise;

    @ApiModelProperty(value = "律师订单相关：律师用户ID")
    private Integer lawyerUserId;

    @ApiModelProperty(value = "律师订单相关：问题描述")
    private String problemDescription;

    @ApiModelProperty(value = "律师订单相关：咨询费用（单位：分）")
    private Integer consultationFee;

    @ApiModelProperty(value = "律师订单相关：咨询开始时间")
    private Date startTime;

    @ApiModelProperty(value = "律师订单相关：咨询结束时间")
    private Date endTime;

    @ApiModelProperty(value = "律师订单相关：律师头像")
    private String lawyerHeadImg;

    @ApiModelProperty(value = "律师订单相关：是否已评价")
    private Boolean hasReview;

    @ApiModelProperty(value = "商户订单评分（总体评分）")
    private Double score;

    @ApiModelProperty(value = "商户订单其他评分（口味/环境/服务）")
    private String otherScore;

    @ApiModelProperty(value = "律师订单总体评分（1-5星，支持0.5星）")
    private Double overallRating;

    @ApiModelProperty(value = "律师订单服务态度评分（1-5星，支持0.5星）")
    private Double serviceAttitudeRating;

    @ApiModelProperty(value = "律师订单响应时间评分（1-5星，支持0.5星）")
    private Double responseTimeRating;

    @ApiModelProperty(value = "律师订单专业能力评分（1-5星，支持0.5星）")
    private Double professionalAbilityRating;

}
