package com.copy.trade.service;

import com.copy.trade.entity.dto.ContractOrderEntrust;
import com.copy.trade.entity.dto.EntrustCallback;
import com.copy.trade.entity.dto.EntrustCancel;
import com.copy.trade.entity.dto.TraderOrder;
import com.copy.trade.entity.form.CopiedTradeForm;
import com.copy.trade.entity.po.CopiedTrade;
import com.copy.trade.entity.vo.CopiedTradeVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * 跟单记录表 服务类
 * </p>
 *
 * @author wz
 * @since 2022-11-08
 */
public interface ICopiedTradeService extends IService<CopiedTrade> {

    Integer TRADER_ORDER = 10;

    Integer COPY_ORDER = 20;

    /**
     * 跟单
     * @param traderOrder
     * @return
     */
    Boolean copyTrade(ContractOrderEntrust traderOrder);

    /**
     * 跟单回调
     * @param entrustCallback
     * @return
     */
    Boolean entrustCallback(ContractOrderEntrust entrustCallback);

    CopiedTrade getByContractOrderEntrustId(String contractOrderEntrustId);

    /**
     * 撤单
     * @param entrustCancel
     * @return
     */
    Boolean entrustCancel(EntrustCancel entrustCancel);
    
    
    Boolean entrustFollowOpenfail(ContractOrderEntrust entrustCallback);

    /**
     * 批量跟单回调（批量开仓完成后的DB操作，替代逐条调用 entrustCallback）
     */
    Boolean entrustCallbackBatch(List<ContractOrderEntrust> orders);
    
    Page<CopiedTradeVo> list(CopiedTradeForm copiedTradeForm);

}
