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

import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.module.system.api.delegation.dto.UserDelegationDTO;
import cn.ey.biz.module.system.api.delegation.dto.UserDelegationReqDTO;
import cn.ey.biz.module.system.controller.admin.delegation.vo.*;
import cn.ey.biz.module.system.dal.dataobject.delegation.UserDelegationDO;

import java.util.List;

/**
 * 代理人代理关系 Service 接口
 * @author Jian.Yang
 * @date  2023-02-24
 */
public interface UserDelegationService {

    /**
     * 获得代理人代理单元分页列表
     *
     * @param reqVO 分页请求
     * @return 代理人关系分页列表
     */

    PageResult<UserDelegationDO> getUserDelegationPage(UserDelegationPageReqVO reqVO);

    /**
     * 授权代理人关系(多条)
     *
     * @param saveReqVO 代理关系信息
     */
    void saveUserDelegationList(List<UserDelegationSaveReqVO> saveReqVO);

    /**
     * 取消授权字代理人关系
     *
     * @param ids 代理人关系主键list
     */
    void deleteUserDelegationList(List<Long> ids);

    /**
     * 获得代理人代理列表
     *
     * @param app 应用
     * @param gpn 代理人GPN
     * @return 代理人关系列表
     */
    List<UserDelegationDTO> getUserDelegation(String app, String gpn);

    /**
     * 获得代理人代理列表
     *
     * @param userDelegationReq 请求参数
     * @return 代理人关系列表
     */
    List<UserDelegationDO> listDelegation(UserDelegationReqDTO userDelegationReq);
}
