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

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

// 用户 App - 商品结算信息 Response VO
@Data
public class AppTradeProductSettlementRespVO {

    // SPU 商品编号 - 必填，示例：1
    private Long spuId;

    // SKU 价格信息数组 - 必填，示例：1
    private List<Sku> skus;

    // 满减送活动信息 - 必填，示例：1
    private RewardActivity rewardActivity;

    // SKU 价格信息
    @Data
    public static class Sku implements Serializable {

        // 商品 SKU 编号 - 必填，示例：1
        private Long id;

        // 优惠后价格，单位：分 - 必填，示例：100
        private Integer promotionPrice;

        // 营销类型 - 必填，示例：4
        private Integer promotionType; // 对应 PromotionTypeEnum 枚举，目前只有 4 和 6 两种

        // 营销编号 - 必填
        private Long promotionId; // 目前只有限时折扣活动的编号

        // 活动结束时间 - 必填
        private LocalDateTime promotionEndTime;

    }

    // 满减送活动信息
    @Data
    public static class RewardActivity {

        // 满减活动编号 - 必填，示例：1
        private Long id;

        // 条件类型 - 必填，示例：1
        private Integer conditionType;

        // 优惠规则的数组 - 必填
        private List<RewardActivityRule> rules;

    }

    // 优惠规则
    @Data
    public static class RewardActivityRule {

        // 优惠门槛 - 必填，示例：100 // 1. 满 N 元，单位：分; 2. 满 N 件
        private Integer limit;

        // 优惠价格 - 必填，示例：100
        private Integer discountPrice;

        // 是否包邮 - 必填，示例：true
        private Boolean freeDelivery;

        // 赠送的积分 - 必填，示例：100
        private Integer point;

        // 赠送的优惠劵编号的数组
        private Map<Long, Integer> giveCouponTemplateCounts;

    }

}
