package com.tashow.cloud.product.mapper;

import java.util.*;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tashow.cloud.common.pojo.PageResult;
import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX;
import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX;
import com.tashow.cloud.productapi.api.product.dto.ProdPropValueDO;
import com.tashow.cloud.productapi.api.product.dto.SkuDO;
import com.tashow.cloud.productapi.api.product.vo.prodpropvalue.ProPropRecycleBinVO;
import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 属性规则 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface ProdPropValueMapper extends BaseMapperX<ProdPropValueDO> {

    /**
     * 插入商品属性数值
     * @param propId
     * @param prodPropValues
     */
    void insertPropValues(@Param("propId") Long propId, @Param("prodPropValues") List<ProdPropValueDO> prodPropValues);

    List<ProdPropValueDO>  selectSalesValuesByProdId(@Param("prodId") Long prodId);

    List<ProdPropValueDO>  selectSalesValuesByState(@Param("prodId") Long prodId);

    void batchMarkDeleted(@Param("ids") List<Long> ids);

    int deleteProdPropValueById( @Param("id")Long id);

    List<ProdPropValueDO>  selectRestoreProp(@Param("prodId") Long prodId);

    IPage<ProPropRecycleBinVO> getSKuPropRecycleBinList(Page<?> page, @Param("prodId") Long prodId,@Param("propValue")String propValue);

    List<ProdPropValueDO> getskuListByPropValueIds(@Param("ids")List<Long> ids);

    void restorePropValue(@Param("ids") List<Long> ids);

    int getMaxPropValue(@Param("propId")Long propId);

    // 根据商品 ID 更新销售属性值的 state（仅 rule=1 的）
    void updateStateByProdId(@Param("prodId") Long prodId, @Param("state") Integer state);
}