package com.fdkankan.platform.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.platform.order.entity.Invoice;
import com.fdkankan.platform.order.request.RequestPlaceOrder;
import com.fdkankan.platform.user.request.RequestInvoice;
import com.fdkankan.platform.user.request.RequestTrade;
import com.fdkankan.platform.user.vo.ResponseInvoice;

import java.util.List;

/**
 * <p>
 * 发票表 服务类
 * </p>
 *
 * @author 
 * @since 2021-12-24
 */
public interface IInvoiceService extends IService<Invoice> {

    Integer getMaxInvoice(RequestInvoice param, String token);

    Page<ResponseInvoice> listInvoice(RequestInvoice param, String token);

    ResponseInvoice mineInvoice(RequestInvoice param, String token);

    String saveInvoice(RequestInvoice param, String token);

    ResponseInvoice detailInvoice(RequestInvoice param, String token);

    String addInvoice(RequestInvoice param, String token);

    String updateInvoice(RequestInvoice param, String token);

    String deleteInvoice(RequestInvoice param, String token);

    ResponseInvoice openInvoice(RequestInvoice param, String token);

    Invoice getByOrderId(Long orderId);

    void saveInvoiceByOrder(Long userId, RequestPlaceOrder order);

    List<Invoice> getListByParam(RequestTrade trade);

    Page<ResponseInvoice> getPageByParam(RequestTrade param);

    Page<ResponseInvoice> findInvoiceList(RequestTrade param);

    Invoice sendEInvoice(Long invoiceId, String remarks, String filePath);

    String sendExpress(RequestInvoice param);

    List<ResponseInvoice> getVoListByParam(RequestTrade param);

    Invoice getInvoiceByDownloadOrderId(Long downloadOrderId);
}
