package com.friday.custody.service.trustService;

import com.friday.base.common.response.DubboResult;
import com.friday.custody.dto.TenantEscrowAuthorizationInfoDto;
import com.friday.custody.utils.R;

import java.util.List;


public interface OutsourceService {

    /**
     * 授权时初始化数据的接口
     *
     * @param tenants
     * @return
     */
    R initTenantData(List<TenantEscrowAuthorizationInfoDto> tenants);

    /**
     * 授权时初始化数据的接口:单个托管方
     *
     * @param tenant
     * @return
     */
    R initTenantDataSingle(TenantEscrowAuthorizationInfoDto tenant);


    /**
     * 每天定时器更新数据接口
     *
     * @param tenants
     * @return
     */
    R updateDataDaily(List<TenantEscrowAuthorizationInfoDto> tenants);

    /**
     * 每天定时器更新数据接口:单个托管方
     *
     * @param tenant
     * @return
     */
    R updateSingleDataDaily(TenantEscrowAuthorizationInfoDto tenant);

    R PullRemoteDataFirstQueueJob();

    /**
     * 后续标准表的初始化数据
     * @param tenants
     * @return
     */
    R initLaterTenantData(String versionStr,List<TenantEscrowAuthorizationInfoDto> tenants);

    R initLaterSingleTenantData(String versionStr,TenantEscrowAuthorizationInfoDto tenant);

    R initByAppointedTrustNoAndMouth(TenantEscrowAuthorizationInfoDto tenant,int month);

    R updateData20min(List<TenantEscrowAuthorizationInfoDto> data);

    R updateSingleData20min(TenantEscrowAuthorizationInfoDto tenant);

    /**
     * 每天定时器每小时更新一次数据接口
     * @param data
     * @return
     */
    R updateData1h(List<TenantEscrowAuthorizationInfoDto> data);

    /**
     * 每天定时器单个托管方每小时更新一次数据接口
     * @param tenant
     * @return
     */
    R updateSingleData1h(TenantEscrowAuthorizationInfoDto tenant);

    R updateDataCJ(String date,String flag,TenantEscrowAuthorizationInfoDto tenant);

    R updateNetValueData(List<TenantEscrowAuthorizationInfoDto> tenants);

    R updateSingleNetValueData(TenantEscrowAuthorizationInfoDto tenant);
    /**
     * @author GuoW
     * @date 2023/12/12 16:33
     * @description 更新募集户余额数据
     **/
    DubboResult updateMJBalanceData(TenantEscrowAuthorizationInfoDto tenant);

    /**
     * @author GuoW
     * @date 2023/12/12 16:33
     * @description 更新募集户流水数据
     **/
    DubboResult updateMJSeqData(TenantEscrowAuthorizationInfoDto tenant);

    /**
     * @author GuoW
     * @date 2023/12/12 16:33
     * @description 更新托管户余额数据
     **/
    DubboResult updateTGBalanceData(TenantEscrowAuthorizationInfoDto tenant);

    /**
     * @author GuoW
     * @date 2023/12/12 16:33
     * @description 更新托管户流水数据
     **/
    DubboResult updateTGSeqData(TenantEscrowAuthorizationInfoDto tenant);

}
