package com.iailab.module.system.service.sms; import com.iailab.module.system.mq.message.sms.SmsSendMessage; import java.util.List; import java.util.Map; /** * 短信发送 Service 接口 * * @author iailab */ public interface SmsSendService { /** * 发送单条短信给管理后台的用户 * * 在 mobile 为空时,使用 userId 加载对应管理员的手机号 * * @param mobile 手机号 * @param userId 用户编号 * @param templateCode 短信模板编号 * @param templateParams 短信模板参数 * @return 发送日志编号 */ Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map templateParams); /** * 发送单条短信给用户 APP 的用户 * * 在 mobile 为空时,使用 userId 加载对应会员的手机号 * * @param mobile 手机号 * @param userId 用户编号 * @param templateCode 短信模板编号 * @param templateParams 短信模板参数 * @return 发送日志编号 */ Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map templateParams); /** * 发送单条短信给用户 * * @param mobile 手机号 * @param userId 用户编号 * @param userType 用户类型 * @param templateCode 短信模板编号 * @param templateParams 短信模板参数 * @return 发送日志编号 */ Long sendSingleSms(String mobile, Long userId, Integer userType, String templateCode, Map templateParams); default void sendBatchSms(List mobiles, List userIds, Integer userType, String templateCode, Map templateParams) { throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); } /** * 执行真正的短信发送 * 注意,该方法仅仅提供给 MQ Consumer 使用 * * @param message 短信 */ void doSendSms(SmsSendMessage message); /** * 接收短信的接收结果 * * @param channelCode 渠道编码 * @param text 结果内容 * @throws Throwable 处理失败时,抛出异常 */ void receiveSmsStatus(String channelCode, String text) throws Throwable; }