package com.kingdee.eas.custom.integration.base.service;

import com.kingdee.eas.custom.integration.base.config.AppConfig;

/**
 * 平台 OAuth 策略接口
 *
 * 各平台（钉钉、飞书等）实现此接口，通过 Spring {@code List<PlatformOAuthStrategy>}
 * 自动收集所有策略 Bean，OAuthService 按 platform() 路由，消除 switch-case。
 *
 * 新增平台：实现此接口并注册为 Spring Bean 即可，无需修改任何现有代码。
 */
public interface PlatformOAuthStrategy {

    /** 平台标识，与配置中的 platform 字段一致，如 "dingtalk"、"feishu" */
    String platform();

    /** 构造 OAuth 授权跳转 URL */
    String buildAuthUrl(AppConfig config, String state);

    /** 用授权码换取用户身份标识（userId / openId / unionId） */
    String getUserId(AppConfig config, String code);
}
