package com.zanxiang.game.module.sdk.service;

import com.zanxiang.game.module.base.pojo.enums.HttpStatusEnum;
import com.zanxiang.game.module.sdk.pojo.param.BindPhoneParam;
import com.zanxiang.game.module.sdk.pojo.param.SmsCheckParam;
import com.zanxiang.game.module.sdk.pojo.param.SmsSendParam;
import com.zanxiang.game.module.sdk.pojo.param.UserData;
import com.zanxiang.module.util.pojo.ResultVO;

import java.util.Map;

/**
 * @author : lingfeng
 * @time : 2022-06-13
 * @description :
 */
public interface ISmsService {

    /**
     * 获取用户绑定的手机号
     *
     * @param userData : 用户信息
     * @return : 返回是否绑定手机号
     */
    Map<String, Object> getBindPhone(UserData userData);

    /**
     * 绑定手机号发送验证码
     *
     * @param phone    : 手机号
     * @param userData : 用户信息
     * @return : 返回发送结果
     */
    Map<String, Object> bindPhoneSend(String phone, UserData userData);

    /**
     * 绑定手机号
     *
     * @param param    : 手机号验证码信息
     * @param userData : 用户信息
     * @return : 返回绑定结果
     */
    Map<String, Object> bindPhoneCheck(BindPhoneParam param, UserData userData);

    /**
     * 短信发送
     *
     * @param smsSendParam : 获取短信验证码参数
     * @param userData     : 用户信息
     * @return {@link ResultVO}<{@link Boolean}>
     */
    ResultVO<Boolean> smsSend(SmsSendParam smsSendParam, UserData userData);

    /**
     * 前端校验短信验证码
     *
     * @param smsCheckParam : 参数
     * @return {@link ResultVO}<{@link String}>
     */
    ResultVO<Boolean> smsCheck(SmsCheckParam smsCheckParam);

    /**
     * 校验短信验证码
     *
     * @param type   : 短信类型
     * @param mobile : 手机号
     * @param code   : 验证码
     * @return {@link HttpStatusEnum}
     */
    HttpStatusEnum smsCheck(Integer type, String mobile, String code);
}
