package com.ylx.massage.domain.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 商品规格设置请求DTO
 *
 * @author ylx
 * @since 2026-03-26
 */
@Data
@ApiModel("商品规格设置请求")
public class ProductSpecSetupDTO {

    /**
     * 商品编号
     */
    @NotNull(message = "商品编号不能为空")
    private String productNo;

    /**
     * 规格列表
     */
    @ApiModelProperty(value = "规格列表", required = true)
    @Valid
    private List<SpecItemDTO> specList;

    /**
     * 规格项
     */
    @Data
    @ApiModel("规格项")
    public static class SpecItemDTO {

        /**
         * 规格名ID（编辑时传入，新增时不传）
         */
        @ApiModelProperty("规格名ID（编辑时传入）")
        private Long specId;

        /**
         * 规格名（如：颜色、型号、尺码）
         */
        @ApiModelProperty(value = "规格名", required = true)
        @NotNull(message = "规格名不能为空")
        private String specName;

        /**
         * 排序
         */
        @ApiModelProperty("排序")
        private Integer sort;

        /**
         * 规格值列表
         */
        @ApiModelProperty(value = "规格值列表", required = true)
        @Valid
        private List<SpecValueItemDTO> specValues;
    }

    /**
     * 规格值项
     */
    @Data
    @ApiModel("规格值项")
    public static class SpecValueItemDTO {

        /**
         * 规格值ID（编辑时传入，新增时不传）
         */
        @ApiModelProperty("规格值ID（编辑时传入）")
        private Long specValueId;

        /**
         * 规格值（如：白色、红色、加粗、大号）
         */
        @ApiModelProperty(value = "规格值", required = true)
        @NotNull(message = "规格值不能为空")
        private String specValue;

        /**
         * 排序
         */
        @ApiModelProperty("排序")
        private Integer sort;
    }
}
