package com.czg.product.service;

import com.czg.product.dto.ShopProdUnitDTO;
import com.czg.product.entity.ShopProdUnit;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
 * 商品单位Service接口
 *
 * @author Tankaikai tankaikai@aliyun.com
 * @since 1.0 2025-02-10
 */
public interface ShopProdUnitService extends IService<ShopProdUnit> {

    /**
     * 获取商品单位分页
     *
     * @param param 查询参数
     * @return 商品单位分页数据
     */
    Page<ShopProdUnitDTO> getShopProdUnitPage(ShopProdUnitDTO param);

    /**
     * 获取商品单位列表
     *
     * @param param 查询参数
     * @return 商品单位列表数据
     */
    List<ShopProdUnitDTO> getShopProdUnitList(ShopProdUnitDTO param);

    void exportShopProdUnit(ShopProdUnitDTO param, HttpServletResponse response);

    /**
     * 获取商品单位详情
     *
     * @param id 商品单位ID
     * @return 商品单位详情数据
     */
    ShopProdUnitDTO getShopProdUnitById(Long id);

    /**
     * 新增商品单位
     *
     * @param dto 商品单位数据
     * @return 新增商品单位ID
     */
    Long addShopProdUnit(ShopProdUnitDTO dto);

    /**
     * 更新商品单位
     *
     * @param dto 商品单位数据
     */
    void updateShopProdUnit(ShopProdUnitDTO dto);

    /**
     * 删除商品单位
     *
     * @param id 商品单位ID
     */
    void deleteShopProdUnit(Long id);

    /**
     * 禁用商品单位
     *
     * @param id 商品单位ID
     */
    void disableShopProdUnit(Long id);

    /**
     * 启用商品单位
     *
     * @param id 商品单位ID
     */
    void enableShopProdUnit(Long id);

}