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/10/23 11:57
 * @description
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "商城商品分页返回对象")
public class ProductPageVo implements Serializable {

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

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

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

    /**
     * 品牌id
     */
    @ApiModelProperty("品牌id")
    private String brandId;

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

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

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

    /**
     * 上下架
     */
    @ApiModelProperty("上下架")
    private Boolean isUp;

    /**
     * 是否置顶
     */
    @ApiModelProperty("是否置顶")
    private Boolean isTop;

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

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

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

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

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

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

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

    /**
     * 商品交易成功信息
     */
    @ApiModelProperty("商品交易成功信息")
    private ProductTradeInfo tradeInfo;

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

    /**
     * 商品交易成功信息
     */
    @Data
    @ApiModel("商品交易成功信息")
    public static class ProductTradeInfo implements Serializable{
        /**
         * 交易数量
         */
        @ApiModelProperty("交易数量")
        private Long tradeNum = 0L;

        /**
         * 交易金额
         */
        @ApiModelProperty("交易金额")
        private BigDecimal tradePrice = BigDecimal.ZERO;
    }
}
