package com.seer.teach.mall.request;

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

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Author: 嘉多宝宝
 * @Data: 2025-06-16 11:02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Schema(description = "新增商品请求参数")
public class GoodsReq {

    @Schema(description = "商品所属分类的ID")
    @NotNull(message = "商品所属分类的ID不能为空")
    private Integer categoryId;

    @Schema(description = "商品的名称")
    @NotBlank(message = "商品名称不能为空")
    private String name;

    @Schema(description = "商品简介")
    private String goodsBrief;

    @Schema(description = "规格类型")
    private Integer specType;

    @Schema(description = "商户ID")
    private Long merchantId;

    @Schema(description = "商品的主图片链接")
    @NotBlank(message = "商品的主图片链接不能为空")
    private String primaryPicUrl;

    @Schema(description = "商品在列表中展示的图片链接,轮播图")
    private List<String> listPicUrl;


    @Schema(description = "商品的唯一编号")
    private String goodsSn;

    @Schema(description = "商品的详细描述")
    @NotBlank(message = "商品的详细描述不能为空")
    private String goodsDesc;

    @Schema(description = "商品是否上架销售，1 表示上架，0 表示下架")
    @NotNull(message = "商品是否上架销售不能为空")
    private Integer isOnSale;

    @Schema(description = "商品销量")
    private Integer sellCount;

    @Schema(description = "虚拟销量")
    private Long virtualSellVolume;

    private String keywords;

    private Integer sortOrder;

    @Schema(description = "商品配送方式：0-快递配送 1-自提")
    private Integer deliveryType;

    @Schema(description = "支付模式：0-线上支付 1-线下支付")
    private Integer paymentMode;

    @Schema(description = "物品类型（对应订单主表物品类型）: bm000001 文件  bm000002 数码产品  bm000003 生活用品  bm000004 食品  bm000005 服饰  bm000006 其他  bm000007 生鲜类  bm000008 易碎品  bm000009 液体")
    private String goodsType;

    @Schema(description = "是否新品：0-否 1-是")
    private Integer isNew;

    @Schema(description = "是否热品：0-否 1-是")
    private Integer isHot;

    @Schema(description = "商品价格")
    private BigDecimal price;

    /**
     * 是否特价优惠：0-否 1-是
     */
    @Schema(description = "是否特价优惠：0-否 1-是")
    private Integer isSpecialOffer;

    /**
     * 是否精品推荐：0-否 1-是
     */
    @Schema(description = "是否精品推荐：0-否 1-是")
    private Integer isFeaturedRecommend;

    @Schema(description = "租户ID")
    private String tenantId;

    @Schema(description = "商品规格列表")
    private List<GoodsSpecificationReq> specifications;

    /**
     * 商品的状态：0-待审核 1-审核通过，2：审核拒绝
     */
    @Schema(description = "商品的状态：0-待审核 1-审核通过，2：审核拒绝")
    private Integer status;

    /**
     * 是否虚拟产品：0-否 1-是
     */
    @Schema(description = "是否虚拟产品：0-否 1-是")
    private Integer isVirtual;

    /**
     * 商品是否为限量商品，1 表示是，0 表示不是
     */
    @Schema(description = "商品是否为限量商品，1 表示是，0 表示不是")
    private Integer isLimited;

}
