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


import com.tashow.cloud.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

// 用户 App - 交易订单结算信息 Response VO
@Data
public class AppTradeOrderSettlementRespVO {

    // 交易类型 - 必填，示例：1 // 对应 TradeOrderTypeEnum 枚举
    private Integer type;

    // 购物项数组 - 必填
    private List<Item> items;

    // 费用 - 必填
    private Price price;

    // 收件地址 - 必填
    private Address address;

    // 已使用的积分 - 必填，示例：10
    private Integer usePoint;

    // 总积分 - 必填，示例：10
    private Integer totalPoint;


    // 购物项
    @Data
    public static class Item {

        // ========== SPU 信息 ==========

        // 品类编号 - 必填，示例：2048
        private Long categoryId;
        // SPU 编号 - 必填，示例：2048
        private Long spuId;
        // SPU 名字 - 必填，示例：Apple iPhone 12
        private String spuName;

        // ========== SKU 信息 ==========

        // SKU 编号 - 必填，示例：1024
        private Integer skuId;
        // 价格，单位：分 - 必填，示例：100
        private Integer price;
        // 图片地址 - 必填，示例：https://www.iocoder.cn/1.png
        private String picUrl;

        // 属性数组 - 必填，示例：100
        private List<AppProductPropertyValueDetailRespVO> properties;

        // ========== 购物车信息 ==========

        // 购物车编号 - 必填，示例：100
        private Long cartId;

        // 购买数量 - 必填，示例：1
        private Integer count;

    }

    // 费用（合计）
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Price {

        // 商品原价（总），单位：分 - 必填，示例：500
        private Integer totalPrice;

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

        // 运费金额，单位：分 - 必填，示例：50
        private Integer deliveryPrice;

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

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

        // VIP 减免金额，单位：分
        private Integer vipPrice;

        //实际支付金额（总），单位：分
        private Integer payPrice;

    }

    //地址信息
    @Data
    public static class Address {

        //编号
        private Long id;

        //收件人名称
        private String name;

        //手机号
        private String mobile;

        //地区编号
        private Long areaId;
        //地区名字
        private String areaName;

        //详细地址
        private String detailAddress;

        //是否默认收件地址
        private Boolean defaultStatus;

    }


}
