package com.cico.nest.lcdp.boot.core.system.service.sms;

import com.cico.nest.lcdp.boot.api.system.sms.dto.code.SmsCodeSendReqDTO;
import com.cico.nest.lcdp.boot.api.system.sms.dto.code.SmsCodeUseReqDTO;
import com.cico.nest.lcdp.boot.api.system.sms.dto.code.SmsCodeValidateReqDTO;
import com.cico.nest.lcdp.framework.common.exception.ServiceException;
import jakarta.validation.Valid;


/**
 * 短信验证码 Service 接口
 *
 * @author zws
 */
public interface SmsCodeService {

    /**
     * 创建短信验证码，并进行发送
     *
     * @param reqDTO 发送请求
     */
    void sendSmsCode(@Valid SmsCodeSendReqDTO reqDTO);

    /**
     * 验证短信验证码，并进行使用
     * 如果正确，则将验证码标记成已使用
     * 如果错误，则抛出 {@link ServiceException} 异常
     *
     * @param reqDTO 使用请求
     */
    void useSmsCode(@Valid SmsCodeUseReqDTO reqDTO);

    /**
     * 检查验证码是否有效
     *
     * @param reqDTO 校验请求
     */
    void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO);

}
