package com.yiqi.order.service;

import cn.binarywang.wx.miniapp.bean.express.result.WxMaExpressOrderInfoResult;
import com.yiqi.core.domain.dto.WxNotifyDTO;
import com.yiqi.order.domain.dto.OrderThirdDeliveryAddDTO;
import com.yiqi.order.domain.dto.OrderThirdDeliveryCancelDTO;
import com.yiqi.order.domain.dto.OrderThirdDeliveryPathDTO;
import com.yiqi.order.domain.dto.OrderThirdDeliveryTestUpdateStatusDTO;
import com.yiqi.order.domain.vo.ExpressDeliveryVO;
import com.yiqi.order.domain.vo.OrderDeliveryPathVO;

import java.util.List;

/**
 * 第三方配送平台接口
 * @author xiaohei
 * @date 2024/1/21
 */
public interface IThirdDeliveryService {

    /**
     * 获取系统支持的快递公司
     * @return
     * @throws Exception
     */
    public List<ExpressDeliveryVO> getAllDeliveryList() throws Exception;

    /**
     * 新增第三方快递订单
     * @param orderThirdDeliveryAddDTO
     * @throws Exception
     */
    public WxMaExpressOrderInfoResult addDeliveryOrder(OrderThirdDeliveryAddDTO orderThirdDeliveryAddDTO) throws Exception;

    /**
     * 获取快递订单轨迹
     * @param orderThirdDeliveryPathDTO
     * @throws Exception
     */
    public OrderDeliveryPathVO getDeliveryPath(OrderThirdDeliveryPathDTO orderThirdDeliveryPathDTO) throws Exception;


    /**
     * 修改快递订单状态
     * @param orderThirdDeliveryTestUpdateStatusDTO
     * @throws Exception
     */
    public void testUpdateOrder(OrderThirdDeliveryTestUpdateStatusDTO orderThirdDeliveryTestUpdateStatusDTO) throws Exception;

    /**
     * 取消订单
     * @param orderThirdDeliveryCancelDTO
     * @throws Exception
     */
    public void cancelOrder(OrderThirdDeliveryCancelDTO orderThirdDeliveryCancelDTO) throws Exception;

    /**
     * 快递订单状态更改通知
     */
    public void onDeliveryOrderChangeNotify(WxNotifyDTO wxNotifyDTO) throws Exception;
}
