package com.yc.ship.module.product.controller.admin.productSpu.spuVO;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yc.ship.framework.excel.core.annotations.DictFormat;
import com.yc.ship.framework.excel.core.convert.DictConvert;
import com.yc.ship.module.product.controller.admin.productSpu.baseRuleVO.ProductBasicRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.checkRuleVO.ProductCheckRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.groupVO.PlatProductPriceRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.groupVO.PlatProductRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.groupVO.ProductGroupRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.noticeRuleVO.ProductNoticeRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.otherRuleVO.ProductOtherRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.refundRuleVO.ProductRefundRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.saleRuleVO.ProductSaleRuleRespVO;
import com.yc.ship.module.product.controller.admin.productSpu.skuVO.ProductSkuRespVO;
import com.yc.ship.module.product.controller.admin.productTakeRule.vo.ProductTakeRuleRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.Valid;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 产品基础信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProductSpuRespVO {

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

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

    @ExcelProperty("产品简称")
    @Schema(description = "产品简称", example = "王五")
    private String shortName;

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

    @Schema(description = "游船列表")
    private String shipIds;

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

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

    @ExcelProperty("产品分组")
    @Schema(description = "产品分组")
    private String categoryName;

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

    @DictFormat("product_type")
    @ExcelProperty(value = "产品类型", converter = DictConvert.class)
    @Schema(description = "产品类型", example = "2")
    private Integer productType;

    @Schema(description = "产品规格类型", example = "2")
    private String specType;

    @DictFormat("crm_product_status")
    @ExcelProperty(value="上架状态", converter = DictConvert.class)
    @Schema(description = "上架状态")
    private Integer isUse;


    @ColumnWidth(value = 20)
    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

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

    @Schema(description = "产品销售渠道(以,分隔)")
    private String productSaleChannels;

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

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

    @Schema(description = "上架状态(租户控制)")
    private Integer isUseOtc;

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

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

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

    @Schema(description = "产品标签")
    private String productTag;

    @Schema(description = "运营标签")
    private String productTag2;

    @Schema(description = "业务标签")
    private String productTag3;

    @Schema(description = "产品标签4-预留")
    private String productTag4;

    @Schema(description = "小程序是否显示票号二维码")
    private Integer isEwm;

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

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

    @Schema(description = "房型")
    private Integer roomType;

    @Schema(description = "床型")
    private Integer bedType;

    @Schema(description = "含早餐类型")
    private Integer hasBreakfast;

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

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

    @Schema(description = "平台产品信息")
    private List<PlatProductRespVO> platProductList;

    @Schema(description = "平台产品规格价格")
    private List<PlatProductPriceRespVO> platProductPriceList;

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

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

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

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

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

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

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

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

}