package com.bonus.core.account.v3.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bonus.core.account.v3.api.dto.AccRechargeSumApiDTO;
import com.bonus.core.account.v3.api.vo.AccRechargeSumApiVO;
import com.bonus.core.account.v3.app.dto.AppTradeDetailListDTO;
import com.bonus.core.account.v3.app.vo.AppAccTradePageVO;
import com.bonus.core.account.v3.model.AccTrade;
import com.bonus.core.account.v3.model.AccTradeWalletDetail;
import com.bonus.core.account.v3.mq.send.model.RepAccMqModel;
import com.bonus.core.account.v3.po.AccTradeAddPO;
import com.bonus.core.account.v3.po.AccWalletPayPO;
import com.bonus.core.account.v3.web.vo.AccInfoVO;

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

public interface AccTradeService extends IService<AccTrade> {

   Page<AppAccTradePageVO> queryTradeAppPage(AppTradeDetailListDTO dto);

   Long insertAccTradeAndDetail(AccInfoVO accInfoVO, Integer tradeType, BigDecimal amount, String mchSn, List<AccWalletPayPO> walletPayList, Long orderNo, String remark, Integer payState, boolean updateWalletInfo);

   Long insertAccTrade(AccTradeAddPO addPo);

   void updateTradeById(AccTrade updateTrade);

   List<RepAccMqModel> listAccTradeForSend(List<Long> tradeIdList);

   void insertAccTradeForTradeId(AccTradeAddPO addPo);

   AccRechargeSumApiVO getAccRechargeSum(AccRechargeSumApiDTO accRechargeSumApiDTO);

   AppAccTradePageVO getOneTradeApp(Long accTradeId);

   List<AccTradeWalletDetail> listAccSubsidyTrade(Long custId, List<Integer> tradeTypeList);
}
