package com.jeesharp.business.modules.mall.dto;

import com.jeesharp.framework.pojo.dto.BaseSaveDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * 商品SPU保存DTO
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class MallSpuSaveDTO extends BaseSaveDTO {

    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空")
    private String spuName;

    /**
     * 商品编码
     */
    private String spuCode;

    /**
     * 分类ID
     */
    @NotBlank(message = "分类ID不能为空")
    private String categoryId;

    /**
     * 品牌ID
     */
    private String brandId;

    /**
     * 主图
     */
    private String mainImage;

    /**
     * 轮播图（JSON数组）
     */
    private String images;

    /**
     * 商品详情（富文本）
     */
    private String detail;

    /**
     * 发货时效：1-今日发 2-24小时发货 3-48小时发货 4-大于48小时发货
     *
     * @see com.jeesharp.business.modules.mall.enums.MallSpuShipTimeTypeEnum
     */
    private Integer shipTimeType;

    /**
     * 运费（元）
     */
    private BigDecimal freightAmount;

    /**
     * 运费模板主键；未绑定时 C 端按 {@link #freightAmount} 兜底计费
     */
    private String freightTemplateId;

    /**
     * 扩展属性行（与 {@link MallProductSaveDTO#extAttrs} 一致）
     */
    private List<MallSpuExtAttrSaveDTO> extAttrs;

    /**
     * 虚拟销量
     */
    private Integer virtualSales;

    /**
     * 排序号
     */
    private Integer sortOrder;

    /**
     * 状态：0-下架 1-上架
     */
    @NotNull(message = "状态不能为空")
    private Integer status;

    /**
     * 商户ID（多商户场景下关联商户，单商户可空）
     */
    private String merchantId;
}
