package cn.novalon.gym.manage.auth.service;

import cn.novalon.gym.manage.auth.dto.PhoneLoginDto;
import cn.novalon.gym.manage.auth.dto.PhoneCodeLoginDto;
import cn.novalon.gym.manage.auth.vo.PhoneLoginVO;
import reactor.core.publisher.Mono;

/**
 * 手机号认证服务接口
 */
public interface PhoneAuthService {

    /**
     * 手机号一键登录（uniapp官方运营商认证）
     * 已注册则直接登录，未注册则自动注册后登录
     *
     * @param request 登录请求
     * @return 登录响应
     */
    Mono<PhoneLoginVO> oneClickLogin(PhoneLoginDto request);

    /**
     * 发送短信验证码（阿里云）
     *
     * @param phone 手机号
     * @return 是否发送成功
     */
    Mono<Boolean> sendSmsCode(String phone);

    /**
     * 手机号验证码登录（阿里云）
     *
     * @param request 登录请求
     * @return 登录响应
     */
    Mono<PhoneLoginVO> codeLogin(PhoneCodeLoginDto request);
}