package com.fs.hisStore.service;

import com.fs.common.core.domain.R;
import com.fs.hisStore.param.*;
import com.fs.hisStore.vo.FsMergedOrderListQueryVO;
import com.fs.hisStore.vo.MergedAfterSalesVO;
import com.fs.live.param.MergedOrderQueryParam;
import com.fs.live.vo.MergedOrderVO;

import java.text.ParseException;
import java.util.List;

/**
 * 合并订单Service接口
 *
 * @author fs
 * @date 2025-01-XX
 */
public interface IMergedOrderService
{
    /**
     * 查询合并的订单列表（商城订单+直播订单）
     *
     * @param param 查询参数
     * @return 合并后的订单列表
     */
    List<FsMergedOrderListQueryVO> selectMergedOrderListVO(FsMyStoreOrderQueryParam param);

    List<MergedOrderVO> selectMergedOrderList(MergedOrderQueryParam param);

    /**
     * 统计合并订单总数
     *
     * @param param 查询参数
     * @return 订单总数
     */
    long countMergedOrderList(MergedOrderQueryParam param);

    /**
     * 查询合并的售后列表（商城售后+直播售后）
     *
     * @param param 查询参数
     * @return 合并后的售后列表
     */
    List<MergedAfterSalesVO> selectMergedAfterSalesList(MergedAfterSalesQueryParam param);

    /**
     * 申请售后
     *
     * @param userId 用户ID
     * @param param 售后参数
     * @return 结果
     */
    R applyForAfterSales(String userId, MergedAfterSalesParam param);

    /**
     * 撤销售后
     *
     * @param userId 用户ID
     * @param param 撤销参数
     * @return 结果
     */
    R revokeAfterSales(String userId, MergedAfterSalesRevokeParam param) throws ParseException;

    /**
     * 提交物流信息
     *
     * @param param 物流参数
     * @return 结果
     */
    R addDelivery(MergedAfterSalesDeliveryParam param);

    /**
     * 查询售后详情
     *
     * @param salesId 售后ID
     * @param afterSalesType 售后类型 1商城售后 2直播售后
     * @return 售后详情
     */
    MergedAfterSalesVO selectMergedAfterSalesById(Long salesId, Integer afterSalesType);

    /**
     * 删除订单（逻辑删除）
     *
     * @param userId 用户ID
     * @param param 删除参数
     * @return 结果
     */
    R deleteOrder(String userId, MergedOrderDeleteParam param);
}

