package com.dobbinsoft.fw.support.sms;
|
|
import com.dobbinsoft.fw.core.exception.CoreExceptionDefinition;
|
import com.dobbinsoft.fw.core.exception.ServiceException;
|
import com.dobbinsoft.fw.core.exception.ThirdPartServiceException;
|
import com.dobbinsoft.fw.support.properties.FwSMSProperties;
|
import com.github.qcloudsms.SmsSingleSender;
|
import com.github.qcloudsms.SmsSingleSenderResult;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
/**
|
* Created by rize on 2019/7/1.
|
*/
|
public class QCloudSMSClient implements SMSClient,InitializingBean {
|
|
private SmsSingleSender sender;
|
|
@Autowired
|
private FwSMSProperties properties;
|
|
private static final Logger logger = LoggerFactory.getLogger(QCloudSMSClient.class);
|
|
@Override
|
public void afterPropertiesSet() throws Exception {
|
sender = new SmsSingleSender(properties.getQcloudAppId(), properties.getQcloudAppKey());
|
}
|
|
public SMSResult sendMsg(String phone, int templateId, String ...params) throws ServiceException {
|
try {
|
SmsSingleSenderResult smsSingleSenderResult = sender.sendWithParam("86", phone, templateId, params, properties.getQcloudSignature(), "", "");
|
if (smsSingleSenderResult.result == 0) {
|
SMSResult smsResult = new SMSResult();
|
smsResult.setSucc(true);
|
smsResult.setMsg("成功");
|
return smsResult;
|
} else {
|
logger.info("[腾讯短信发送] 回复与预期不一致 result=" + smsSingleSenderResult.result + ";errMsg=" + smsSingleSenderResult.errMsg);
|
throw new ThirdPartServiceException(smsSingleSenderResult.errMsg, smsSingleSenderResult.result);
|
}
|
} catch (ServiceException e) {
|
throw e;
|
} catch (Exception e) {
|
logger.error("[腾讯短信发送] 异常", e);
|
throw new ThirdPartServiceException("腾讯云短信发送未知异常", CoreExceptionDefinition.THIRD_PART_SERVICE_EXCEPTION.getCode());
|
}
|
}
|
|
|
@Override
|
public SMSResult sendRegisterVerify(String phone, String verifyCode) throws ServiceException {
|
return sendMsg(phone, properties.getQcloudRegisterTemplateId(), verifyCode);
|
}
|
|
@Override
|
public SMSResult sendBindPhoneVerify(String phone, String verifyCode) throws ServiceException {
|
return sendMsg(phone, properties.getQcloudBindPhoneTemplateId(), verifyCode);
|
}
|
|
@Override
|
public SMSResult sendResetPasswordVerify(String phone, String verifyCode) throws ServiceException {
|
return sendMsg(phone, properties.getQcloudResetPasswordTemplateId(), verifyCode);
|
}
|
|
@Override
|
public SMSResult sendAdminLoginVerify(String phone, String verifyCode) throws ServiceException {
|
return sendMsg(phone, properties.getQcloudAdminLoginTemplateId(),verifyCode);
|
}
|
}
|