package com.ruoyi.hezhi.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.hezhi.domain.TbSmsCode;

import java.util.List;

/**
 * 短信验证码Service接口
 *
 * @author ruoyi
 * @date 2024-11-06
 */
public interface ITbSmsCodeService
{
    /**
     * 查询短信验证码
     *
     * @param smsCodeId 短信验证码主键
     * @return 短信验证码
     */
    public TbSmsCode selectTbSmsCodeBySmsCodeId(Long smsCodeId);

    /**
     * 查询短信验证码列表
     *
     * @param tbSmsCode 短信验证码
     * @return 短信验证码集合
     */
    public List<TbSmsCode> selectTbSmsCodeList(TbSmsCode tbSmsCode);

    /**
     * 新增短信验证码
     *
     * @param tbSmsCode 短信验证码
     * @return 结果
     */
    public int insertTbSmsCode(TbSmsCode tbSmsCode);

    /**
     * 修改短信验证码
     *
     * @param tbSmsCode 短信验证码
     * @return 结果
     */
    public int updateTbSmsCode(TbSmsCode tbSmsCode);

    /**
     * 批量删除短信验证码
     *
     * @param smsCodeIds 需要删除的短信验证码主键集合
     * @return 结果
     */
    public int deleteTbSmsCodeBySmsCodeIds(Long[] smsCodeIds);

    /**
     * 删除短信验证码信息
     *
     * @param smsCodeId 短信验证码主键
     * @return 结果
     */
    public int deleteTbSmsCodeBySmsCodeId(Long smsCodeId);

    /**
     * 生成验证码记录
     * @param phone 手机号
     * @param smsCode 验证码
     * @param type 类型（0-默认，1-手机号登录，2-修改个人资料，3-考试报名）
     * @return 结果
     */
    public AjaxResult sendSmsCodeInsert(String phone, String smsCode, Integer type);

    /**
     * 校验验证码
     * @param phone 手机号
     * @param smsCode 验证码
     * @param type 类型（0-默认，1-手机号登录，2-修改个人资料，3-考试报名）
     * @return 结果
     */
    public String checkSmsCode(String phone, String smsCode, Integer type);

    /**
     * 生成验证码记录
     * @param phone 手机号
     * @param smsCode 验证码
     * @param type 类型（0-默认，1-手机号登录，2-修改个人资料，3-考试报名）
     * @return 结果
     */
    public AjaxResult checkPhoneSmsCode(String phone, String smsCode, Integer type);
}
