package com.hotent.portal.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.hotent.base.entity.URIEntity;
import com.hotent.base.manager.BaseManager;
import com.hotent.base.model.CommonResult;
import com.hotent.base.query.PageList;
import com.hotent.base.query.QueryFilter;
import com.hotent.portal.model.PortalBizSystem;

import java.util.List;
import java.util.Set;

/**
 *  外部系统管理
 *
 * @company 广州宏天软件股份有限公司
 * @author cola
 * @since 2021-08-25
 */
public interface PortalBizSystemManager  extends BaseManager<PortalBizSystem> {

    CommonResult<String> savePortalBizSystem(PortalBizSystem portalBizSystem);

    CommonResult<String> updatePortalBizSystem(PortalBizSystem portalBizSystem);

    CommonResult searchById(String id);

    CommonResult getOpenApiList();

    CommonResult checkSysCode(String sysCode,String secretKey) throws Exception;

    /**
     * 根据code获取外部系统对应的队列名
     * @param sysCode 外部系统编码
     * @return 队列名
     */
    CommonResult getPortalBizSystemBySysCode(String sysCode);

    /**
     * 根据code获取该外部系统登录跳转地址
     * @param sysCode 外部系统编码
     * @return 登录跳转地址
     */
    CommonResult getPortalBizSystemUrlBySysCode(String sysCode);

    /**
     * 根据code获取外部系统信息
     * @param code 外部系统编码
     * @return 外部系统信息
     */
    CommonResult getPortalBizSystemByCode(String code);

    CommonResult checkSysCodeAndUri(String sysCode, String secretKey, String uri,String tenantId);

    List<PortalBizSystem> getList();

    List<PortalBizSystem> getServiceList() throws JsonProcessingException;

    CommonResult getAuthUserBySystemCode(QueryFilter queryFilter);

    CommonResult deleteAuthByIds(String ids);

    CommonResult addAuthByUserIdAndSysCode(String userIds, String sysCode);

    CommonResult deleteBySysCode(String ids);

    PageList queryData(QueryFilter queryFilter);


    Set<URIEntity> getOpenApiListFromCacheOut();
}
