package com.fs.live.service;


import com.fs.common.core.domain.R;
import com.fs.live.domain.LiveAfterSales;
import com.fs.live.param.*;
import com.fs.live.vo.LiveAfterSalesListUVO;
import com.fs.live.vo.LiveAfterSalesQueryVO;
import com.fs.live.vo.LiveAfterSalesVo;

import java.util.List;

/**
 * 售后记录Service接口
 *
 * @author fs
 * @date 2025-07-08
 */
public interface ILiveAfterSalesService {
    /**
     * 查询售后记录
     *
     * @param id 售后记录主键
     * @return 售后记录
     */
    LiveAfterSales selectLiveAfterSalesById(Long id);

    /**
     * 查询售后记录列表
     *
     * @param liveAfterSales 售后记录
     * @return 售后记录集合
     */
    List<LiveAfterSales> selectLiveAfterSalesList(LiveAfterSales liveAfterSales);

    /**
     * 新增售后记录
     *
     * @param liveAfterSales 售后记录
     * @return 结果
     */
    int insertLiveAfterSales(LiveAfterSales liveAfterSales);

    /**
     * 修改售后记录
     *
     * @param liveAfterSales 售后记录
     * @return 结果
     */
    int updateLiveAfterSales(LiveAfterSales liveAfterSales);

    /**
     * 批量删除售后记录
     *
     * @param ids 需要删除的售后记录主键集合
     * @return 结果
     */
    int deleteLiveAfterSalesByIds(Long[] ids);

    /**
     * 删除售后记录信息
     *
     * @param id 售后记录主键
     * @return 结果
     */
    int deleteLiveAfterSalesById(Long id);

    R applyAfterSales(String userId, LiveAfterSalesApplyParam param);

    R revoke(String userId, LiveAfterSalesRevokeParam param);

    R addDelivery(LiveAfterSalesDeliveryParam param);

    List<LiveAfterSalesListUVO> selectLiveAfterSalesListUVO(LiveAfterSalesListUParam param);

    List<LiveAfterSales> selectLiveAfterSalesByDoAudit();

    R audit1(LiveAfterSalesAudit1Param audit1Param);

    List<LiveAfterSalesVo> selectLiveAfterSalesVoList(LiveAfterSalesVo liveAfterSales);

    R audit2(LiveAfterSalesAudit2Param param);

    R refundMoney(LiveAfterSalesRefundParam param);

    R cancel(LiveAfterSalesCancelParam param);

    R applyForAfterSales(String userId, LiveAfterSalesParam param);

    List<LiveAfterSalesQueryVO> selectLiveAfterSalesListQuery(LiveAfterSalesQueryParam param);

    Integer selectLiveAfterSalesCount(long l, int i);
}
