package co.yixiang.yshop.module.order.controller.app.afterorder.vo;


import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;


/**
 * 退款详情
 *
 * @author moxiangrong
 * @date 2023-11-2
 */
@Data
@Builder
public class AppStoreOrderAfterSalesDetailVo implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "订单ID")
    private Long id;

    @Schema(description = "订单号")
    private String orderId;

    @Schema(description = "用户id")
    private Long uid;

    @Schema(description = "用户姓名")
    private String realName;

    @Schema(description = "用户电话")
    private String userPhone;

    @Schema(description = "详细地址")
    private String userAddress;

    @Schema(description = "购物车信息")
    private List<AppStoreCartQueryVo> cartInfo;

    @Schema(description = "支付时间")
    private LocalDateTime payTime;

    @Schema(description = "实际支付金额")
    private BigDecimal payPrice;

    @Schema(description = "订单总价")
    private BigDecimal totalPrice;

    @Schema(description = "运费")
    private BigDecimal totalPostage;

    @Schema(description = "抵扣金额")
    private BigDecimal deductionPrice;

    @Schema(description = "优惠金额")
    private BigDecimal couponPrice;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "发货时间")
    private LocalDateTime deliveryTime;

    @Schema(description = "物流名称")
    private String deliveryName;

    @Schema(description = "快递单号")
    private String deliverySn;


    /**
     * 服务类型 0仅退款 1退货退款
     */
    private Integer serviceType;

    @Schema(description = "退款金额")
    private BigDecimal refundAmount;

    /**
     * 退款积分
     */
    private BigDecimal refundableIntegral;

    /**
     * 申请原因
     */
    private String reasons;

    /**
     * 说明
     */
    private String explains;

    /**
     * 说明图片->多个用逗号分割
     */
    private String explainImg;

    /**
     * 状态 0已提交等待平台审核 1平台已审核 等待用户发货/退款 2 用户已发货 3退款成功
     */
    private Integer state;

    /**
     * 售后状态-0正常1用户取消2商家拒绝
     */
    private Integer salesState;

    @Schema(description = "收货状态：0、未收到，1、已收到", required = true, example = "0")
    private Integer receivingStatus;

    /**
     * 剩余自动确认时间
     */
    private String remainTime;

    @Schema(description = "总优惠金额 会员,优惠券,积分抵扣")
    private BigDecimal totalCouponPrice;

}
