package com.cpop.mall.business.vo;

import com.cpop.core.annontation.StringArrayConvert;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.RelationOneToMany;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

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

/**
 * @author DB
 * @createTime 2023/11/06 11:55
 * @description
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "商城商品详情返回对象")
public class ProductInfoVo implements Serializable {

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private String id;

    /**
     * 商品名
     */
    @ApiModelProperty("商品名")
    private String productName;

    /**
     * 产品类型(0:课卡;1:周边;2:优惠卷:3:其他)
     */
    @ApiModelProperty("产品类型(0:课卡;1:周边;2:优惠卷:3:其他)")
    private Integer productType;

    /**
     * 商店(校区)集合
     */
    @StringArrayConvert
    @ApiModelProperty("商店(校区)集合")
    private String storeIds;

    /**
     * 模板id
     */
    @ApiModelProperty("模板Id")
    private String cardTemplateId;

    /**
     * 模板名
     */
    @ApiModelProperty("模板名")
    private String cardTemplateName;

    /**
     * 描述
     */
    @ApiModelProperty("描述")
    private String description;

    /**
     * 商品图地址
     */
    @ApiModelProperty("商品图地址")
    private String picUrl;

    /**
     * 限购数量
     */
    @ApiModelProperty("限购数量")
    private Integer limitNum;


    /**
     * 商品详情图地址
     */
    @ApiModelProperty("商品详情图地址")
    private String picDetailUrl;

    /**
     * 购买限制(0:会员限制;1:新客限定;2:用户限购)
     */
    @ApiModelProperty("购买限制(0:会员限制;1:新客限定;2:用户限购)")
    private Integer buyRestrict;

    /**
     * 最高价
     */
    @ApiModelProperty("最高消耗")
    private BigDecimal maxConsume;

    /**
     * 最低价
     */
    @ApiModelProperty("最低消耗")
    private BigDecimal minConsume;

    /**
     * 支付方式(微信支付:0;积分支付:1)
     */
    @ApiModelProperty("支付方式(微信支付:0;积分支付:1)")
    private Integer payType;

    /**
     * 产品规格
     */
    @RelationOneToMany(selfField = "id", targetField = "productId",targetTable = "cp_mall_product_specification")
    @ApiModelProperty("产品规格")
    private List<ProductSpecificationVo> productSpecificationVos;

    /**
     * 产品规格记录
     */
    @RelationOneToMany(selfField = "id", targetField = "productId",targetTable = "cp_mall_product_record")
    @ApiModelProperty("产品规格记录")
    private List<ProductRecordVo> productRecordVos;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
}
