package com.trade.service.trade.salesorder.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.trade.service.trade.salesorder.domain.SalesOrderGoods;
import com.trade.service.trade.salesorder.vo.SalesOrderGoodsVO;

import java.util.List;

/**
 * <p>
 * 销售订单-关联商品 服务类
 * </p>
 *
 * @author zhangchenm
 * @since 2024-09-06
 */
public interface ISalesOrderGoodsService extends IService<SalesOrderGoods> {

    /**
     * 根据订单ID查询关联商品
     * 
     * @param orderId 订单ID
     * @return 关联商品列表
     */
    List<SalesOrderGoodsVO> listByOrderId(Long orderId);

    /**
     * 根据订单ID删除关联商品 - 物理删除 由于订单第一步提交就会保存，避免逻辑删除生成过多无用数据，所以直接物理删除
     * 
     * @param orderId 订单id
     */
    void removeByOrderId(Long orderId);

    List<SalesOrderGoods> getByCommodityId(Long salesCommodityId);

    /**
     * 根据订单ID统计关联商品数量
     * 
     * @param saleOrderId 订单ID
     * @param receivePaymentStatus 收款状态
     * @return 关联商品数量
     */
    Long countBySaleOrderId(Long saleOrderId, Integer receivePaymentStatus);

    /**
     * 根据ID批量查询
     * 
     * @param ids
     * @return SalesOrderGoods
     */
    SalesOrderGoods getMaxAmountByIds(List<Long> ids);
}
