package com.tmerclub.cloud.api.delivery.feign;

import com.tmerclub.cloud.api.delivery.dto.CalculateAndGetDeliverInfoDTO;
import com.tmerclub.cloud.api.delivery.vo.ShopTransportVO;
import com.tmerclub.cloud.api.delivery.dto.CurOderReturnsDTO;
import com.tmerclub.cloud.common.order.vo.TransportVO;
import com.tmerclub.cloud.common.order.vo.UserDeliveryInfoVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity;

import java.util.List;

/**
 * @author tmerclub
 * @date 2020/12/14
 */
public interface DeliveryFeignClient {

    /**
     * 计算运费，并计算获取配送信息
     *
     * @param param 用户地址和订单信息
     * @return void
     */
    ServerResponseEntity<UserDeliveryInfoVO> calculateAndGetDeliverInfo(CalculateAndGetDeliverInfoDTO param);

    /**
     * 获取店铺运费模板列表
     *
     * @param shopId 店铺id
     * @return 运费模板列表
     */
    ServerResponseEntity<List<ShopTransportVO>> listTransportByShopId(Long shopId);

    /**
     * 根据id列表获取运费模板
     *
     * @param transportIds
     * @return
     */
    ServerResponseEntity<List<ShopTransportVO>> listTransportByIds(List<Long> transportIds);

    /**
     * 判断用户地址是否包含在配送范围内
     *
     * @param deliveryTemplateId
     * @param userId
     * @param addrId
     * @return
     */
    ServerResponseEntity<Boolean> checkAddr(Long deliveryTemplateId, Long userId, Long addrId);

    /**
     * 检查配送范围
     *
     * @param deliveryTemplateId 运费模板id
     * @param addrId             用户地址id
     * @return
     */
    ServerResponseEntity<Boolean> checkDeliveryRange(Long deliveryTemplateId,
                                                     Long addrId);


    /**
     * 获取商品物流模板
     *
     * @param deliveryTemplateId
     * @return
     */
    TransportVO getTransportAndAllItemsById(Long deliveryTemplateId);

    /**
     * 球杆订单退货
     *
     * @param curOderReturnsDTO 订单信息
     * @return 结果
     */
    ServerResponseEntity<String> curOderReturns(CurOderReturnsDTO curOderReturnsDTO);
}
