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.agent.vo.AgentVo;
import com.fdkankan.platform.agent.vo.ResponseAgentCamera;
import com.fdkankan.platform.order.entity.VirtualOrder;
import com.fdkankan.platform.order.vo.ResponseExpansionOrder;
import com.fdkankan.platform.user.request.*;
import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
import com.fdkankan.platform.user.vo.ResponseIncrementOrder;
import com.fdkankan.platform.user.vo.ResponseVirtualOrder;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 充值订单表（双目相机点数充值、消费） 服务类
 * </p>
 *
 * @author 
 * @since 2021-12-24
 */
public interface IVirtualOrderService extends IService<VirtualOrder> {

    void saveVirtualOrderByAgent(Long cameraId);

    void getByStatusAndCameraId(AgentVo agentVo, String startDate, String endDate);

    ResponseAgentCamera getPointsByCameraId(Long cameraId, String startDate, String endDate);

    ResponseVirtualOrder saveByCamera(Long id, RequestCamera param);

    Page<ResponseVirtualOrder> chargeList(RequestVirtualOrder param, String token);

    Page<ResponseExpansionOrder> expansionList(RequestCamera param, String token);

    Page<ResponseIncrementOrder> incrementOrderList(RequestIncrementOrder param, String token);

    Page<ResponseDownloadOrder> downloadOrderList(RequestDownloadOrder param, String token);

    VirtualOrder getByOrderSn(String orderSn);

    boolean paySuccessVirtualOrder(String orderSn, String tradeNo, int paymentTypeName);

    List<VirtualOrder> getAllByParam(RequestCamera param);

    Page<ResponseVirtualOrder> getPageVoByParam(RequestCamera param);
    Page<ResponseVirtualOrder> getPageVoByParam(RequestTrade param);

    boolean addVirtualOrder(RequestVirtualOrder vo);

    String modifyPoints(RequestCamera param);

    int queryRechargeByCameraIdAndStatus(Long cameraId, int status);

    Integer queryOrderCountByToday();

    BigDecimal queryTurnoverByToday(int i);

    BigDecimal queryTurnoverByMonth();

    BigDecimal queryTurnoverByLastMonth();

    Integer queryAllCount();

    BigDecimal selectAllTurnover(int i);

    List<ResponseVirtualOrder> queryTrendRechargeOrder(int i);

    ResponseVirtualOrder getVoById(Long virtualOrderId);

    void insertVirtualOrderBigScene(Long cameraId, String num, Long userId, Integer country);
}
