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

import com.tmerclub.cloud.api.payment.dto.AllinpaySettlementApiDto;
import com.tmerclub.cloud.api.payment.dto.OrderPayInfoDTO;
import com.tmerclub.cloud.api.payment.dto.PayInfoApiDto;
import com.tmerclub.cloud.common.response.ServerResponseEntity;

import java.util.List;

/**
 * @Author YXF
 * @Date 2022/08/10 9:21
 */
public interface PaymentFeignClient {

    /**
     * 查询订单是否支付成功, 已经支付成功的订单进行支付成功处理
     *
     * @param orderPayInfoDTO 订单id列表
     * @return 支付成功的订单id列表
     */
    List<Long> queryAndHandleOrderPaySuccess(OrderPayInfoDTO orderPayInfoDTO);


    /**
     * 进行商家余额支付（通联支付）
     *
     * @param payInfoApiVO 支付信息
     * @param payInfoApiVO
     * @return 支付成功的订单id列表
     */
    ServerResponseEntity<?> doAllinPayShopBalance(PayInfoApiDto payInfoApiVO);

    /**
     * 如果是通联支付进行通联支付分账
     *
     * @param payInfoApiVO 支付信息
     * @return 支付成功的订单id列表
     */
    ServerResponseEntity<?> doAllinPaySettlement(AllinpaySettlementApiDto payInfoApiVO);

    /**
     * 失效微信或者支付宝支付二维码
     * @param orderPayInfoDTO
     * @return
     */
    ServerResponseEntity<?> cancelOrderQrCode(OrderPayInfoDTO orderPayInfoDTO);


    /**
     * 根据订单id获取最新的支付成功记录的系统类型
     * @param orderId
     * @param userId
     * @return
     */
    ServerResponseEntity<List<PayInfoApiDto>> getPayInfoByUserIdAndOrderId(Long userId, Long orderId);

    /**
     * 根据支付单号获取支付信息
     * @param payId
     * @return
     */
    ServerResponseEntity<PayInfoApiDto> getPayInfoByPayId(Long payId);

    /**
     * 退款主动查单
     * @param refundId
     * @return
     */
    ServerResponseEntity<Boolean> checkRefundStatus(Long refundId);

    /**
     * 团购订单拆单后,修改订单支付信息
     * @param orderIds
     * @param oldOrderId
     * @return
     */
    ServerResponseEntity<Boolean> updatePayInfoBySplitGroup(String orderIds, Long oldOrderId);
}
