package com.tashow.cloud.trade.controller.app.order.vo;


import com.tashow.cloud.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

// 用户 App - 订单交易的明细 Response VO
@Data
public class AppTradeOrderDetailRespVO {

    // ========== 订单基本信息 ==========

    // 订单编号 - 必填，示例：1024
    private Long id;

    // 订单流水号 - 必填，示例：1146347329394184195
    private String no;

    // 订单类型 - 必填，示例：0
    private Integer type;

    // 下单时间 - 必填
    private LocalDateTime createTime;

    // 用户备注 - 必填，示例：你猜
    private String userRemark;

    // 订单状态 - 必填，示例：1
    private Integer status;

    // 购买的商品数量 - 必填，示例：10
    private Integer productCount;

    // 订单完成时间
    private LocalDateTime finishTime;

    // 订单取消时间
    private LocalDateTime cancelTime;

    // 是否评价 - 必填，示例：true
    private Boolean commentStatus;

    // ========== 价格 + 支付基本信息 ==========

    // 是否已支付 - 必填，示例：true
    private Boolean payStatus;

    // 支付订单编号 - 必填，示例：1024
    private Long payOrderId;

    // 付款时间
    private LocalDateTime payTime;

    // 付款超时时间 - 必填
    private LocalDateTime payExpireTime;

    // 支付渠道，示例：wx_lite_pay
    private String payChannelCode;
    // 支付渠道名，示例：微信小程序支付
    private String payChannelName;

    // 商品原价（总） - 必填，示例：1000
    private Integer totalPrice;

    // 订单优惠（总） - 必填，示例：100
    private Integer discountPrice;

    // 运费金额 - 必填，示例：100
    private Integer deliveryPrice;

    // 订单调价（总） - 必填，示例：100
    private Integer adjustPrice;

    // 应付金额（总） - 必填，示例：1000
    private Integer payPrice;

    // ========== 收件 + 物流基本信息 ==========

    // 配送方式 - 必填，示例：1
    private Integer deliveryType;

    // 发货物流公司编号，示例：10
    private Long logisticsId;

    // 发货物流名称，示例：顺丰快递
    private String logisticsName;

    // 发货物流单号，示例：1024
    private String logisticsNo;

    // 发货时间
    private LocalDateTime deliveryTime;

    // 收货时间
    private LocalDateTime receiveTime;

    // 收件人名称 - 必填，示例：张三
    private String receiverName;

    // 收件人手机 - 必填，示例：13800138000
    private String receiverMobile;

    // 收件人地区编号 - 必填，示例：110000
    private Integer receiverAreaId;

    // 收件人地区名字 - 必填，示例：上海 上海市 普陀区
    private String receiverAreaName;

    // 收件人详细地址 - 必填，示例：中关村大街 1 号
    private String receiverDetailAddress;

    // 自提门店编号，示例：1088
    private Long pickUpStoreId;

    // 自提核销码，示例：40964096
    private String pickUpVerifyCode;

    // ========== 售后基本信息 ==========

    // 售后状态，示例：0
    private Integer refundStatus;

    // 退款金额，单位：分，示例：100
    private Integer refundPrice;

    // ========== 营销基本信息 ==========

    // 优惠劵编号，示例：1024
    private Long couponId;

    // 优惠劵减免金额 - 必填，示例：100
    private Integer couponPrice;

    // 积分抵扣的金额 - 必填，示例：100
    private Integer pointPrice;

    // VIP 减免金额 - 必填，示例：888
    private Integer vipPrice;

    // 拼团记录编号，示例：100
    private Long combinationRecordId;

    /**
     * 订单项数组
     */
    private List<AppTradeOrderItemRespVO> items;

}
