package com.hzs.system.sys;

import com.hzs.common.core.domain.R;
import com.hzs.system.sys.dto.*;

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

/**
 * 审批服务接口
 */
public interface IApprovalServiceApi {

    /**
     * 查询审批配置
     *
     * @param approvalBusinessList 审批业务类型列表
     * @param pkCountry            国家ID
     * @return
     */
    R<Map<Integer, ApprovalInfoDTO>> queryApprovalInfo(List<Integer> approvalBusinessList, Integer pkCountry);

    /**
     * 提交审批
     *
     * @param approvalSubmitDTO 审批提交DTO
     * @param loginUser         当前用户
     * @return
     */
    R<String> submit(ApprovalSubmitDTO approvalSubmitDTO, LoginUser loginUser);

    /**
     * 批量提交审批
     *
     * @param approvalSubmitDTOList 批量审批提交DTO
     * @param loginUser             当前用户
     * @return
     */
    R<String> submitBatch(List<ApprovalSubmitDTO> approvalSubmitDTOList, LoginUser loginUser);

    /**
     * 提交订单审批（带有后续处理业务）
     *
     * @param approvalSubmitDTO 审批提交DTO
     * @param loginUser         当前用户
     * @param obj               特殊业务实体
     * @return
     */
    R<String> submitOrder(ApprovalSubmitDTO approvalSubmitDTO, LoginUser loginUser, Object obj);

    /**
     * 查询用户审核中业务数量
     *
     * @param pkMemberList 会员ID列表
     * @param pkCountry    国家ID
     * @return
     */
    R<Map<Long, ApprovalMemberNumDTO>> queryProcessingApproval(List<Long> pkMemberList, Integer pkCountry);

}
