package com.yc.ship.module.product.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

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

@Schema(description = "RPC 服务 - Product 组合产品 Response DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProductSpuRespDTO {

    @Schema(description = "产品id", example = "1")
    private Long id;

    @Schema(description = "平台分销关联id", example = "1")
    private Long productBaseId;

    @Schema(description = "产品名字", example = "王五")
    private String productName;

    @Schema(description = "规格ID", example = "1")
    private Long productSkuId;

    @Schema(description = "产品编码")
    private String productCode;

    @Schema(description = "产品类型", example = "2")
    private Integer productType;

    @Schema(description = "产品分类", example = "21748")
    private Long categoryId;

    @Schema(description = "产品分类", example = "21748")
    private String categoryName;

    @Schema(description = "产品分类", example = "21748")
    private String fullCategoryIds;

    @Schema(description = "几日游")
    private Integer dayNum;

    @Schema(description = "排序号")
    private Integer sortNum;

    @Schema(description = "使用状态")
    private Integer isUse;

    @Schema(description = "是否计入统计")
    private Integer isValidated;

    @Schema(description = "预定须知")
    private String bookingInstructions;

    @Schema(description = "产品介绍")
    private String productIntroduction;

    @Schema(description = "水平封面")
    private String coverImgHorizontal;

    @Schema(description = "竖形封面")
    private String coverImgVertical;

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

    @Schema(description = "合作开始时间")
    private LocalDateTime startDate;

    @Schema(description = "合作结束时间")
    private LocalDateTime endDate;

    @Schema(description = "产品规格")
    private String specType;

    @Schema(description = "成本价")
    private BigDecimal salePrice;

    @Schema(description = "销售价")
    private BigDecimal costPrice;

    @Schema(description = "租户号")
    private Long tenantId;

    @Schema(description = "分销商ID")
    private Long distributorId;

    @Schema(description = "可用库存")
    private Integer stock;

    @Schema(description = "小程序商品类型")
    private Integer spuType;

    @Schema(description = "是否有此计划")
    private Boolean ownThisPlan;

    @Schema(description = "产品规格信息")
    private List<ProductGroupRespDTO> productGroupList;

    @Schema(description = "分销产品信息")
    private List<PlatProductRespDTO> platProductList;

    @Schema(description = "产品sku信息")
    private List<ProductSkuRespDTO> productSkuList;

    @Schema(description = "产品sku信息")
    private List<RoutePlanRespDTO> routePlanRespDTOList;

    @Schema(description = "产品基础规则")
    private ProductBasicRuleRespDTO productBasicRule;

    @Schema(description = "产品售票规则")
    private ProductSaleRuleRespDTO productSaleRule;

    @Schema(description = "产品取票规则")
    private ProductTakeRuleRespDTO productTakeRule;

    @Schema(description = "产品检票规则")
    private ProductCheckRuleRespDTO productCheckRule;

    @Schema(description = "产品退票规则")
    private ProductRefundRuleRespDTO productRefundRule;

    @Schema(description = "产品通知规则")
    private ProductNoticeRuleRespDTO productNoticeRule;

    @Schema(description = "产品其他规则")
    private ProductOtherRuleRespDTO productOtherRule;
}
