package com.czg.product.service;

import com.czg.product.dto.ProdGroupDTO;
import com.czg.product.entity.ProdGroup;
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-17
 */
public interface ProdGroupService extends IService<ProdGroup> {
    /**
     * 获取商品分组分页
     *
     * @param param 查询参数
     * @return 商品分组分页
     */
    Page<ProdGroupDTO> getProdGroupPage(ProdGroupDTO param);

    /**
     * 获取商品分组列表
     *
     * @param param 查询参数
     * @return 商品分组列表
     */
    List<ProdGroupDTO> getProdGroupList(ProdGroupDTO param);

    /**
     * 获取商品分组详情
     *
     * @param id 商品分组ID
     * @return 商品分组详情
     */
    ProdGroupDTO getProdGroupById(Long id);

    /**
     * 添加商品分组
     *
     * @param dto 商品分组DTO
     */
    void addProdGroup(ProdGroupDTO dto);

    /**
     * 删除商品分组
     *
     * @param id 商品分组ID
     */
    void deleteProdGroup(Long shopId, Long id);

    /**
     * 更新商品分组
     *
     * @param dto 商品分组DTO
     * @param isUpdateProduct 是否需要修改分组下的商品
     */
    void updateProdGroup(ProdGroupDTO dto,boolean isUpdateProduct);

    /**
     * 禁用商品分组
     *
     * @param id 商品分组ID
     */
    void disableProdGroup(Long shopId, Long id);

    /**
     * 启用商品分组
     *
     * @param id 商品分组ID
     */
    void enableProdGroup(Long shopId, Long id);

}