package com.ylx.massage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ylx.massage.domain.ProductSku;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.math.BigDecimal;

/**
 * 商品SKU表(ProductSku)表数据库访问层
 *
 * @author ylx
 * @since 2026-03-26
 */
@Mapper
public interface ProductSkuMapper extends BaseMapper<ProductSku> {

    /**
     * 释放SKU库存（乐观锁防并发超卖）
     *
     * @param skuId SKU ID
     * @param quantity 释放数量
     * @return int 影响行数，0表示库存不足或版本冲突
     */
    @Update("UPDATE product_sku SET stock = stock + #{quantity} WHERE id = #{skuId} AND stock >=0 ")
    int releaseStock(@Param("skuId") Long skuId, @Param("quantity") Integer quantity);


    /**
     * 根据商品ID查询最低的价格
     *
     * @param productId 商品ID
     * @return BigDecimal 最低的价格
     */
    BigDecimal findMinPriceByProductId(Long productId);
}
