package cn.ey.biz.module.system.service.delegation;

import cn.ey.biz.module.system.api.delegation.dto.UserDelegationUnitDTO;
import cn.ey.biz.module.system.controller.admin.delegation.vo.UserDelegationUnitReqVO;
import cn.ey.biz.module.system.controller.admin.delegation.vo.UserDelegationUnitRespVO;
import cn.ey.biz.module.system.controller.admin.delegation.vo.UserDelegationUnitSaveReqVO;
import cn.ey.biz.module.system.controller.admin.delegation.vo.UserDelegationUnitVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 代理人代理单元 Service 接口
 * @author Jian.Yang
 * @date  2023-02-23
 */
public interface UserDelegationUnitService {

    /**
     * 获得代理人代理单元列表
     *
     * @param reqVO 查询请求
     * @return 代理人代理单元列表
     */
    List<UserDelegationUnitVO<UserDelegationUnitRespVO>> getUserDelegationUnit(UserDelegationUnitReqVO reqVO);

    /**
     * 授权代理人单元(多条)
     *
     * @param saveReqVO 代理信息
     */
    void saveUserDelegationUnitList(List<UserDelegationUnitVO<UserDelegationUnitSaveReqVO>> saveReqVO);

    /**
     * 取消授权代理人单元(多条)
     *
     * @param deleteReqVO 删除请求参数
     */
    void deleteUserDelegationUnitList(List<UserDelegationUnitVO<UserDelegationUnitSaveReqVO>> deleteReqVO);

    /**
     * 获得代理人代理单元列表明细
     *
     * @param app  查询请求
     * @param gpn  查询请求
     * @param type 查询请求
     * @return 代理人代理单元列表明细
     */
    List<UserDelegationUnitDTO> getDelegationUnit(String app, String gpn, String type);


    /**
     * 导出代理人代理单元列表明细
     *
     * @param response 请求响应
     * @param reqVO    查询参数
     */
    void export(HttpServletResponse response, UserDelegationUnitReqVO reqVO) throws IOException;
}
