package com.qunzhixinxi.hnqz.admin.service;

import com.qunzhixinxi.hnqz.admin.entity.dto.CancellationScorePackageDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.ExecSettlementDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.PickUpScorePackageDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.ScorePackageDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.ScorePackageSettleNoteDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.SettlementDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAckBindingCardDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAddMemberDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAgreementSignatureDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperBindingCardCodeDTO;
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperTokenDTO;
import com.qunzhixinxi.hnqz.admin.entity.input.TaskSettleBatch;

import java.util.List;
import java.util.Map;

/**
 * {@code PartyAService} 甲方服务接口
 *
 * @author Hengchen.Sun
 * @version 1.0.0
 * @date 2021-05-17
 * @since ver.1.0.0
 */
public interface PartyAService {

	/**
	 * 税邦云增员
	 *
	 * @param taxHelperAddMemberDTO 增员DTO
	 * @return 增员信息
	 */
	Map<String, String> taxHelperAddMember(TaxHelperAddMemberDTO taxHelperAddMemberDTO);

	/**
	 * 获取税邦云H5 token
	 *
	 * @param taxHelperTokenDTO TOKEN DTO
	 * @return 获取结果
	 */
	Map<String, String> taxHelperH5Token(TaxHelperTokenDTO taxHelperTokenDTO);

	/**
	 * 获取税邦云绑卡验证码
	 *
	 * @param taxHelperBindingCardCodeDTO 绑卡验证码DTO
	 * @return 获取绑卡验证码
	 */
	Map<String, String> taxHelperBindingCardVerification(TaxHelperBindingCardCodeDTO taxHelperBindingCardCodeDTO);

	/**
	 * 税邦云绑卡确认
	 *
	 * @param taxHelperAckBindingCardDTO 确认绑卡DTO
	 * @return 绑卡结果
	 */
	Map<String, String> taxHelperAckBindingCard(TaxHelperAckBindingCardDTO taxHelperAckBindingCardDTO);

	/**
	 * 创建积分包
	 *
	 * @param scorePackageDTO 积分包DTO
	 * @return 创建结果
	 */
	Map<String, String> createScorePackage(ScorePackageDTO scorePackageDTO);

	/**
	 * 领取积分包
	 *
	 * @param pickUpScorePackageDTO 领包DTO
	 * @return 领取结果
	 */
	Map<String, String> pickUpScorePackage(PickUpScorePackageDTO pickUpScorePackageDTO);

	/**
	 * 关闭积分包
	 *
	 * @param cancellationScorePackageDTO 关闭积分包
	 * @return 关闭结果
	 */
	Map<String, String> cancelScorePackage(CancellationScorePackageDTO cancellationScorePackageDTO);

	/**
	 * 批量上传证据链
	 *
	 * @param taskSettleBatch 证据链批量
	 * @return 上传结果
	 */
	Map<String, String> submitEvidence(TaskSettleBatch taskSettleBatch);

	/**
	 * 提交结算
	 *
	 * @param scorePackageSettleNoteDTO 结算申请DTO
	 * @return 提交结果
	 */
	Map<String, String> submitSettlement(ScorePackageSettleNoteDTO scorePackageSettleNoteDTO);

	/**
	 * 结算
	 * @param execSettlementDTOList 结算DTO
	 * @return 提交结算结果
	 */
	Map<String, String> doSettlement(List<ExecSettlementDTO> execSettlementDTOList);

	/**
	 * 签署用户信息
	 * @return 签署结果
	 */
	Map<String, String> userAgreementAuthorization(TaxHelperAgreementSignatureDTO taxHelperAgreementSignatureDTO);
}
