package com.qianwen.core.sms; import java.util.Collection; import java.util.Collections; import com.qianwen.core.sms.constant.SmsConstant; import com.qianwen.core.sms.model.SmsCode; import com.qianwen.core.sms.model.SmsData; import com.qianwen.core.sms.model.SmsInfo; import com.qianwen.core.sms.model.SmsResponse; import org.springframework.util.StringUtils; public interface SmsTemplate { SmsResponse sendMessage(SmsData smsData, Collection phones); SmsCode sendValidate(SmsData smsData, String phone); boolean validateMessage(SmsCode smsCode); default String cacheKey(String phone, String id) { return SmsConstant.CAPTCHA_KEY + phone + ":" + id; } default boolean send(SmsInfo smsInfo) { return sendMulti(smsInfo.getSmsData(), smsInfo.getPhones()); } default boolean sendSingle(SmsData smsData, String phone) { if (StringUtils.isEmpty(phone)) { return Boolean.FALSE.booleanValue(); } return sendMulti(smsData, Collections.singletonList(phone)); } default boolean sendMulti(SmsData smsData, Collection phones) { SmsResponse response = sendMessage(smsData, phones); return response.isSuccess(); } }