package com.fs.oms.mapper;

import java.util.List;
import com.fs.oms.domain.OmsProductAttrValue;
import com.fs.oms.param.OmsProductAttrValueParam;
import com.fs.oms.vo.OmsProductAttrValueVO;
import com.fs.store.domain.FsStoreProductAttrValue;
import com.fs.store.param.FsProductAttrValueParam;
import com.fs.store.vo.FsStoreProductAttrValueVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 商品属性值Mapper接口
 * 
 * @author fs
 * @date 2023-06-07
 */
public interface OmsProductAttrValueMapper 
{
    /**
     * 查询商品属性值
     * 
     * @param id 商品属性值ID
     * @return 商品属性值
     */
    public OmsProductAttrValue selectOmsProductAttrValueById(Long id);

    /**
     * 查询商品属性值列表
     * 
     * @param omsProductAttrValue 商品属性值
     * @return 商品属性值集合
     */
    public List<OmsProductAttrValue> selectOmsProductAttrValueList(OmsProductAttrValue omsProductAttrValue);

    /**
     * 新增商品属性值
     * 
     * @param omsProductAttrValue 商品属性值
     * @return 结果
     */
    public int insertOmsProductAttrValue(OmsProductAttrValue omsProductAttrValue);

    /**
     * 修改商品属性值
     * 
     * @param omsProductAttrValue 商品属性值
     * @return 结果
     */
    public int updateOmsProductAttrValue(OmsProductAttrValue omsProductAttrValue);

    /**
     * 删除商品属性值
     * 
     * @param id 商品属性值ID
     * @return 结果
     */
    public int deleteOmsProductAttrValueById(Long id);

    /**
     * 批量删除商品属性值
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteOmsProductAttrValueByIds(Long[] ids);

    @Delete("delete from oms_product_attr_value where product_id=#{productId}")
    int deleteOmsProductAttrValueByProductId(Long productId);
    @Select("select * from oms_product_attr_value where  product_id=#{productId}")
    List<OmsProductAttrValue> selectOmsProductAttrValueByProductId(Long productId);

    @Select({"<script> " +
            "select v.*,p.product_name,p.product_type,c.cate_name  from oms_product_attr_value v inner join oms_product p on p.product_id=v.product_id left join oms_product_category c on c.cate_id=p.cate_id   " +
            "where 1=1 and v.bar_code is not null " +
            "<if test = 'maps.productName != null and  maps.productName !=\"\"    '> " +
            "and p.product_name like CONCAT('%',#{maps.productName},'%') " +
            "</if>" +
            "<if test = 'maps.productType != null    '> " +
            "and p.product_type = #{maps.productType}  " +
            "</if>" +
            "<if test = 'maps.cateId != null    '> " +
            "and (p.cate_id =#{maps.cateId} or c.pid=#{maps.cateId} )" +
            "</if>" +
            "<if test = 'maps.isAudit != null    '> " +
            "and p.is_audit =#{maps.isAudit} " +
            "</if>" +
            " order by v.id desc "+
            "</script>"})
    List<OmsProductAttrValueVO> selectOmsProductAttrValueListVO(@Param("maps") OmsProductAttrValueParam param);
}
