一、pom文件引入阿里云短信依赖
1 2 3 4 5 |
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.3</version> </dependency> |
二、短信发送handler,分别有短信发送、短信批量发送、短信模板查询等功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.andong.insp.framework.core.utils.JsonUtil; import com.andong.insp.message.mail.dto.SendResponseDTO; import com.andong.insp.message.mail.dto.TemplateResponseDTO; import com.fasterxml.jackson.core.type.TypeReference; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * 短信服务 * @author 791202.com * @date 2020/8/14 */ @Component @Slf4j public class ShortMessageHandler { private final String DOMAIN = "dysmsapi.aliyuncs.com"; private final String SEND_ACTION = "SendSms"; private final String BATCH_SEND_ACTION = "SendBatchSms"; private final String QUERY_TEMPLATE_ACTION = "QuerySmsTemplate"; private final String VERSION = "2017-05-25"; @Value("${aliyun.shortMessage.regionId:''}") private String regionId; @Value("${aliyun.shortMessage.signName:''}") private String signName; @Autowired private IAcsClient client; /** * 发送短信 * 验证码类型短信,建议使用该接口 * @param phoneNumber 短信接收方 * @param serialNumber 业务流水号 * @param templateParam 短信模板变量对应的实际值 json字符串 如 {"code":"1111"} */ public void send(String templateCode, String phoneNumber, String serialNumber, String templateParam) { CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain(DOMAIN); request.setSysVersion(VERSION); request.setSysAction(SEND_ACTION); request.putQueryParameter("RegionId", regionId); request.putQueryParameter("PhoneNumbers", phoneNumber); request.putQueryParameter("SignName", signName); request.putQueryParameter("TemplateCode", templateCode); request.putQueryParameter("TemplateParam", templateParam); if (!StringUtil.isBlank(serialNumber)){ request.putQueryParameter("OutId", serialNumber); } try { CommonResponse response = client.getCommonResponse(request); log.info(response.getData()); } catch (ServerException e) { log.error("send short msg occur server error: {}", e.getMessage()); } catch (ClientException e) { log.error("send short msg occur client error: {}", e.getMessage()); } } /** * 批量发送短信 * 验证码类型短信,建议使用该接口 * signNames 短信签名名称,JSON数组格式,如 ["1111","2222"] * @param phoneNumbers 短信接收方, 数组json,如 ["18762666626","18762666627"] * @param templateParam 短信模板变量对应的实际值 json字符串 如 {"code":"1111"} */ public SendResponseDTO batchSend(String templateCode, String phoneNumbers, String templateParam, String signNames) { SendResponseDTO sendResponseDTO = null; CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain(DOMAIN); request.setSysVersion(VERSION); request.setSysAction(BATCH_SEND_ACTION); request.putQueryParameter("RegionId", regionId); request.putQueryParameter("PhoneNumberJson", phoneNumbers); request.putQueryParameter("SignNameJson", signNames); request.putQueryParameter("TemplateCode", templateCode); request.putQueryParameter("TemplateParamJson", templateParam); try { CommonResponse response = client.getCommonResponse(request); sendResponseDTO = JsonUtil.jsonToObject(response.getData(), new TypeReference<SendResponseDTO>() { }); log.info(response.getData()); } catch (ServerException e) { log.error("batch send short msg occur server error: {}", e.getMessage()); } catch (ClientException e) { log.error("batch send short msg occur client error: {}", e.getMessage()); } return sendResponseDTO; } /** * 查询短信模板 * @param templateCode 短信code ,例: SMS_205467017 * @return */ public TemplateResponseDTO querySmsTemplate(String templateCode){ TemplateResponseDTO responseDTO = null; CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain(DOMAIN); request.setSysVersion(VERSION); request.setSysAction(QUERY_TEMPLATE_ACTION); request.putQueryParameter("RegionId", regionId); request.putQueryParameter("TemplateCode", templateCode); try { CommonResponse response = client.getCommonResponse(request); log.info(response.getData()); responseDTO = JsonUtil.jsonToObject(response.getData(), new TypeReference<TemplateResponseDTO>() { }); } catch (Exception e) { log.error("querySmsTemplate occur error: {}", e.getMessage()); } return responseDTO; } } |
0