package com.haha.service;

import com.haha.entity.Order;
import com.haha.entity.RefundItem;

import java.util.List;

/**
 * 订单库存服务接口
 * 处理订单相关的库存操作
 */
public interface OrderInventoryService {

    /**
     * 订单支付成功，扣减库存（幂等：重复调用自动跳过）
     *
     * @param order 订单
     */
    void decreaseStockOnPaid(Order order);

    /**
     * 订单退款，恢复库存（按退款商品明细恢复，支持部分退款）
     *
     * @param order       订单
     * @param refundItems 退款商品明细
     */
    void restoreStockOnRefund(Order order, List<RefundItem> refundItems);

    /**
     * 检查订单商品库存是否充足
     *
     * @param deviceId 设备ID
     * @param items    商品明细JSON
     * @return 是否充足
     */
    boolean checkStockAvailable(String deviceId, String items);
}
