package com.rj.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.rj.dto.LbThirdIntegrationCredentialUpdateRequest;
import com.rj.dto.hxr.HxrAdminOrderApiContext;
import com.rj.dto.hxr.HxrAdminUserApiContext;
import com.rj.dto.hxr.HxrGoodsApiContext;
import com.rj.entity.LbThirdIntegrationConfig;

import java.util.Map;
import java.util.Optional;

/**
 * 租户第三方集成配置服务
 */
public interface ILbThirdIntegrationConfigService extends IService<LbThirdIntegrationConfig> {

    Map<String, Object> add(LbThirdIntegrationConfig entity);

    Map<String, Object> update(LbThirdIntegrationConfig entity);

    Map<String, Object> deleteById(String id);

    Map<String, Object> pageQuery(Integer current,
                                  Integer size,
                                  String tenantId,
                                  String providerCode,
                                  Integer enabled);

    Map<String, Object> getDetailById(String id);

    /**
     * 按租户 id 查询凭证配置（解密后返回明文，便于管理查看）。
     */
    Map<String, Object> getCredentialStatusByTenantId(String tenantId);

    /**
     * 按租户 id 更新凭证列；至少需更新或清除一项凭证。
     */
    Map<String, Object> updateCredentialByTenantId(
            String tenantId, LbThirdIntegrationCredentialUpdateRequest request);

    /**
     * 按租户 id 解析货品 API 运行时配置（含解密凭证）；{@code tokenOverride} 非空时优先于库中 token。
     */
    Optional<HxrGoodsApiContext> resolveGoodsApiContext(String tenantId, String tokenOverride);

    /**
     * 按租户 id 解析后台用户 API 运行时配置（含 cookie/phpsid、URL、Referer）。
     */
    Optional<HxrAdminUserApiContext> resolveAdminUserApiContext(String tenantId);

    /**
     * 按租户 id 解析后台订单 API 运行时配置（含 cookie/phpsid、URL、Referer）。
     */
    Optional<HxrAdminOrderApiContext> resolveAdminOrderApiContext(String tenantId);
}
