package com.vetti.hotake.service;

import com.vetti.common.core.domain.entity.SysUser;
import com.vetti.hotake.domain.HotakeSocialUser;
import com.vetti.hotake.domain.dto.HotakeSocialLoginRequestDto;
import com.vetti.hotake.domain.dto.HotakeSocialLoginResultDto;

import java.util.List;

/**
 * 社交用户服务接口
 *
 * @author vetti
 */
public interface IHotakeSocialUserService {

    /**
     * 社交登录（登录或自动注册）
     *
     * @param requestDto 社交登录请求
     * @return 登录结果
     */
    HotakeSocialLoginResultDto socialLogin(HotakeSocialLoginRequestDto requestDto);

    /**
     * 获取OAuth授权URL
     *
     * @param provider 平台类型
     * @param state    state参数
     * @return 授权URL
     */
    String getAuthorizationUrl(String provider, String state);

    /**
     * 根据用户ID查询绑定的社交账号
     *
     * @param userId 用户ID
     * @return 社交账号列表
     */
    List<HotakeSocialUser> listByUserId(Long userId);

    /**
     * 解绑社交账号
     *
     * @param userId   用户ID
     * @param provider 平台类型
     */
    void unbind(Long userId, String provider);
}
