package com.chinaweal.aiccs.org.service;


import com.chinaweal.aiccs.org.entity.OauthAuthorizationCode;
import com.chinaweal.aiccs.org.entity.dto.AuthorizationRequestDTO;

/**
 * OAuth授权码服务接口
 *
 * @author lroyia
 * @since 2025/11/21
 */
public interface IOauthAuthorizationCodeService {

    /**
     * 创建授权码
     *
     * @param authorizationRequest 授权请求
     * @param userId 用户ID
     * @param userName 用户名
     * @return 授权码
     */
    String createAuthorizationCode(AuthorizationRequestDTO authorizationRequest, String userId, String userName);

    /**
     * 验证授权码
     *
     * @param code 授权码
     * @param clientId 客户端ID
     * @return 授权码信息
     */
    OauthAuthorizationCode validateAuthorizationCode(String code, String clientId);

    /**
     * 使用授权码
     *
     * @param code 授权码
     * @return 是否成功
     */
    boolean consumeAuthorizationCode(String code, String clientId);

    /**
     * 检查授权码是否有效
     *
     * @param code 授权码
     * @return 是否有效
     */
    boolean isAuthorizationCodeValid(String code);

    /**
     * 根据授权码获取信息
     *
     * @param code 授权码
     * @return 授权码信息
     */
    OauthAuthorizationCode getAuthorizationCode(String code);
}