package com.czg.product.service;

import com.czg.product.dto.ShopProdSpecDTO;
import com.czg.product.entity.ShopProdSpec;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 商品规格
 *
 * @author Tankaikai tankaikai@aliyun.com
 * @since 1.0 2025-02-13
 */
public interface ShopProdSpecService extends IService<ShopProdSpec> {
    /**
     * 获取商品规格分页数据
     *
     * @param param 查询参数
     * @return 分页数据
     */
    Page<ShopProdSpecDTO> getShopProdSpecPage(ShopProdSpecDTO param);

    /**
     * 获取商品规格列表数据
     *
     * @param param 查询参数
     * @return 列表数据
     */
    List<ShopProdSpecDTO> getShopProdSpecList(ShopProdSpecDTO param);

    /**
     * 根据id获取商品规格详情
     *
     * @param id 规格id
     * @return 商品规格详情数据
     */
    ShopProdSpecDTO getShopProdSpecById(Long id);

    /**
     * 添加商品规格
     *
     * @param dto 商品规格DTO
     */
    void addShopProdSpec(ShopProdSpecDTO dto);

    /**
     * 删除商品规格
     *
     * @param id 规格id
     */
    void deleteShopProdSpec(Long id);

    /**
     * 更新商品规格
     *
     * @param dto 商品规格DTO
     */
    void updateShopProdSpec(ShopProdSpecDTO dto);

    /**
     * 禁用商品规格
     *
     * @param id 规格id
     */
    void disableShopProdSpec(Long id);

    /**
     * 启用商品规格
     *
     * @param id 规格id
     */
    void enableShopProdSpec(Long id);

    /**
     * 快速添加商品规格
     *
     * @param dto 商品规格DTO（树形数据结构）
     */
    void quickAddShopProdSpec(ShopProdSpecDTO dto);

    /**
     * 获取树状结构规格详情数据
     *
     * @param id 规格id
     * @return ShopProdSpecDTO 规格详情数据
     */
    ShopProdSpecDTO getShopProdSpecTreeById(Long id);

    /**
     * 快速更新商品规格
     *
     * @param dto 商品规格DTO（树形数据结构）
     */
    void quickUpdateShopProdSpec(ShopProdSpecDTO dto);

}