封装好的代码 复制黏贴就可以用
<!-- 阿里云短信jar包 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
service层
import com.aliyuncs.CommonResponse;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
/**
* 发送短信服务层 这里不写业务
*
* @author sunrise
* @version 1.0
* @date 2023/08/08 16:25
*/
public interface ISmsSendService {
/**
* 单发短信
*
* @param smsRequestVo 对象
* @return 结果
*/
CommonResponse smsSend(SmsRequestVo smsRequestVo);
/**
* 群发短信
*
* @param smsBatchRequestVo 对象
* @return 结果
*/
CommonResponse smsSendBatch(SmsBatchRequestVo smsBatchRequestVo);
/**
* 查询短信
*
* @param smsQueryDetailsVo 对象
* @return 结果
*/
QuerySendDetailsResponse selectSendSms(SmsQueryDetailsVo smsQueryDetailsVo);
//*********************************************************************************************************
/**
* 申请短信模板
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
SmsTemplateResponseVo addSmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo);
/**
* 删除短信模板
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
SmsTemplateResponseVo deleteSmsTemplate(String smsTemplateRequestVo);
/**
* 修改审批未通过的短信模板
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
SmsTemplateResponseVo updateSmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo);
/**
* 查询短信模板的审核状态
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
SmsTemplateResponseVo querySmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo);
/**
* 查询短信模板列表
*
* @param pageInfo 分页
* @return 结果
*/
SmsTemplateQueryResponseVo querySmsTemplateList(PageParameter pageInfo);
}
service层实现类
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
import org.springframework.stereotype.Service;
/**
* @author sunrise
* @version 1.0
* @date 2023/08/08 16:30
*/
@Service
public class SmsSendServiceImpl implements ISmsSendService {
/**
* 单发短信
*
* @param smsRequestVo 对象
* @return 结果
*/
@Override
public CommonResponse smsSend(SmsRequestVo smsRequestVo) {
if (ObjectUtil.isEmpty(smsRequestVo)) {
throw new RuntimeException("参数错误");
}
// 调用短信工具类
CommonResponse commonResponse = AliYunSmsUtils.aliyunSendSms(smsRequestVo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("发送失败");
}
return commonResponse;
}
/**
* 群发短信
*
* @param smsBatchRequestVo 对象
* @return 结果
*/
@Override
public CommonResponse smsSendBatch(SmsBatchRequestVo smsBatchRequestVo) {
if (ObjectUtil.isEmpty(smsBatchRequestVo)) {
throw new RuntimeException("参数错误");
}
// 调用短信工具类
CommonResponse commonResponse = AliYunSmsUtils.aliyunSendBatchSms(smsBatchRequestVo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("发送失败");
}
return commonResponse;
}
/**
* 查询短信
*
* @param smsQueryDetailsVo 对象
* @return 结果
*/
@Override
public QuerySendDetailsResponse selectSendSms(SmsQueryDetailsVo smsQueryDetailsVo) {
if (ObjectUtil.isEmpty(smsQueryDetailsVo)) {
throw new RuntimeException("参数错误");
}
if (StrUtil.isEmpty(smsQueryDetailsVo.getPhoneNumber())) {
throw new RuntimeException("手机号为空");
}
if (StrUtil.isEmpty(smsQueryDetailsVo.getBizId())) {
throw new RuntimeException("流水号为空");
}
if (StrUtil.isEmpty(smsQueryDetailsVo.getSendDate())) {
throw new RuntimeException("日期为空");
}
if (ObjectUtil.isEmpty(smsQueryDetailsVo.getCurrentPage())) {
smsQueryDetailsVo.setCurrentPage(1L);
}
if (ObjectUtil.isEmpty(smsQueryDetailsVo.getPageSize())) {
smsQueryDetailsVo.setPageSize(10L);
}
QuerySendDetailsResponse querySendDetailsResponse = AliYunSmsUtils.aliyunSelectSendSms(smsQueryDetailsVo);
if (!querySendDetailsResponse.getCode().equals("OK")) {
throw new RuntimeException(querySendDetailsResponse.getMessage());
}
return querySendDetailsResponse;
}
// *****************************************************************************************************
/**
* 申请短信模板
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
public SmsTemplateResponseVo addSmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateName())) {
throw new RuntimeException("模板名称不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getSmsTemplateType())) {
throw new RuntimeException("模板类型不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateContent())) {
throw new RuntimeException("模板格式内容不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getRemark())) {
throw new RuntimeException("说明不能为空");
}
CommonResponse commonResponse = AliYunSmsUtils.aliyunAddSmsTemplate(smsTemplateRequestVo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("添加模板失败");
}
// 判断阿里云返回的值
isAliyunCode(commonResponse.getData());
// 阿里云返回来的JSON转成对象返回
return JSONUtil.toBean(commonResponse.getData(), SmsTemplateResponseVo.class);
}
/**
* 删除短信模板
*
* @param templateCode 短信模板请求实体类
* @return 结果
*/
@Override
public SmsTemplateResponseVo deleteSmsTemplate(String templateCode) {
if (CharSequenceUtil.isEmpty(templateCode)) {
throw new RuntimeException("模板Code不能为空");
}
CommonResponse commonResponse = AliYunSmsUtils.aliyunDeleteSmsTemplate(templateCode);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("删除模板失败");
}
// 判断阿里云返回的值
isAliyunCode(commonResponse.getData());
// 阿里云返回来的JSON转成对象返回
return JSONUtil.toBean(commonResponse.getData(), SmsTemplateResponseVo.class);
}
/**
* 修改审批未通过的短信模板
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
@Override
public SmsTemplateResponseVo updateSmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateName())) {
throw new RuntimeException("模板名称不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getSmsTemplateType())) {
throw new RuntimeException("模板类型不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateContent())) {
throw new RuntimeException("模板格式内容不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateCode())) {
throw new RuntimeException("模板code不能为空");
}
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getRemark())) {
throw new RuntimeException("说明不能为空");
}
CommonResponse commonResponse = AliYunSmsUtils.aliyunModifySmsTemplate(smsTemplateRequestVo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("模板审批失败");
}
// 判断阿里云返回的值
isAliyunCode(commonResponse.getData());
// 阿里云返回来的JSON转成对象返回
return JSONUtil.toBean(commonResponse.getData(), SmsTemplateResponseVo.class);
}
/**
* 查询短信模板的审核状态
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
@Override
public SmsTemplateResponseVo querySmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
if (CharSequenceUtil.isEmpty(smsTemplateRequestVo.getTemplateCode())) {
throw new RuntimeException("模板code不能为空");
}
CommonResponse commonResponse = AliYunSmsUtils.aliyunQuerySmsTemplate(smsTemplateRequestVo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("更新模板失败");
}
// 判断阿里云返回的值
isAliyunCode(commonResponse.getData());
// 阿里云返回来的JSON转成对象返回
return JSONUtil.toBean(commonResponse.getData(), SmsTemplateResponseVo.class);
}
/**
* 查询短信模板列表
*
* @param pageInfo 分页
* @return 结果
*/
public SmsTemplateQueryResponseVo querySmsTemplateList(PageParameter pageInfo) {
CommonResponse commonResponse = AliYunSmsUtils.aliyunQuerySmsTemplateList(pageInfo);
//参数配置校验未通过错误
if (commonResponse.getHttpStatus() != 200) {
throw new RuntimeException("查询模板审核失败");
}
// 判断阿里云返回的值
isAliyunCode(commonResponse.getData());
// 阿里云返回来的JSON转成对象返回
return JSONUtil.toBean(commonResponse.getData(), SmsTemplateQueryResponseVo.class);
}
// 判断阿里云返回的值
public void isAliyunCode(String data) {
// 解析阿里云返回来的JSON
JSON json = JSONUtil.parse(data);
Object code1 = json.getByPath("Code");
if (!CharSequenceUtil.equalsIgnoreCase("OK", code1 + "")) {
throw new RuntimeException(json.getByPath("Message").toString());
}
}
}
最底层阿里云发送短信代码工具类
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import java.util.Map;
/**
* 阿里云短信请求工具类
*
* @author zhangzeyu
*/
public class AliYunSmsUtils {
// 产品名称:云通信短信API产品,开发者无需替换
private static final String PRODUCT = "Dysmsapi";
//阿里云短信请求地址 产品域名,开发者无需替换
private static final String ALIYUN_IP = "dysmsapi.aliyuncs.com";
//阿里云短信服务器区域类型
private static final String REGION_ID = "cn-hangzhou";
//阿里云短信服务版本号
private static final String VERSION = "2017-05-25";
// 阿里云AccessKeyId
private static final String AccessKeyId = "****";
// 阿里云AccessKeySecret
private static final String AccessKeySecret = "****";
/**
* 发送短信
*
* @param smsRequestVo 通用短信发送参数
* @return 结果
*/
public static CommonResponse aliyunSendSms(SmsRequestVo smsRequestVo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.SEND_SMS);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置接收短信的手机号码
commonRequest.putQueryParameter("PhoneNumbers", smsRequestVo.getPhoneNumber());
//设置阿里云短信模板签名
commonRequest.putQueryParameter("SignName", smsRequestVo.getSignName());
//设置阿里云短信模板code
commonRequest.putQueryParameter("TemplateCode", smsRequestVo.getTemplateCode());
if (CollUtil.isNotEmpty(smsRequestVo.getMapContent())) {
//设置短信内容
commonRequest.putQueryParameter("TemplateParam", parsingKeyValue(smsRequestVo.getMapContent()));
}
try {
//确认发送短信
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
return commonResponse;
}
return commonResponse;
}
/**
* 批量发送短信
*
* @param smsBatchRequestVo 通用短信发送参数
* @return 结果
*/
public static CommonResponse aliyunSendBatchSms(SmsBatchRequestVo smsBatchRequestVo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.BATCH_SEND_SMS);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置接收短信的手机号码
commonRequest.putQueryParameter("PhoneNumberJson", JSONUtil.toJsonStr(smsBatchRequestVo.getPhoneNumber()));
//设置阿里云短信模板签名
commonRequest.putQueryParameter("SignNameJson", JSONUtil.toJsonStr(smsBatchRequestVo.getSignName()));
//设置阿里云短信模板code
commonRequest.putQueryParameter("TemplateCode", smsBatchRequestVo.getTemplateCode());
if (CollUtil.isNotEmpty(smsBatchRequestVo.getMapContent())) {
//设置短信内容
commonRequest.putQueryParameter("TemplateParamJson", JSONUtil.parseArray(smsBatchRequestVo.getMapContent()).toString());
}
try {
//确认发送短信
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
return commonResponse;
}
return commonResponse;
}
/**
* 已发送短信查询方法
*
* @param smsQueryDetailsVo
* @return 结果
*/
public static QuerySendDetailsResponse aliyunSelectSendSms(SmsQueryDetailsVo smsQueryDetailsVo) {
//初始化ascClient
IClientProfile profile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
try {
DefaultProfile.addEndpoint(REGION_ID, REGION_ID, PRODUCT, ALIYUN_IP);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("短信查询错误");
}
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
QuerySendDetailsRequest request = new QuerySendDetailsRequest();
//必填-号码
request.setPhoneNumber(smsQueryDetailsVo.getPhoneNumber());
//可选-调用发送短信接口时返回的BizId
if (smsQueryDetailsVo.getBizId() != null) {
request.setBizId(smsQueryDetailsVo.getBizId());
}
//必填-短信发送的日期 支持30天内记录查询(可查其中一天的发送数据),格式yyyyMMdd
request.setSendDate(smsQueryDetailsVo.getSendDate());
//必填-页大小
request.setPageSize(smsQueryDetailsVo.getPageSize());
//必填-当前页码从1开始计数
request.setCurrentPage(smsQueryDetailsVo.getCurrentPage());
//hint 此处可能会抛出异常,注意catch
QuerySendDetailsResponse querySendDetailsResponse = null;
try {
querySendDetailsResponse = acsClient.getAcsResponse(request);
} catch (ClientException e) {
throw new RuntimeException(e.getMessage());
}
//获取返回结果
if (querySendDetailsResponse.getCode() != null && querySendDetailsResponse.getCode().equals("OK")) {
//代表请求成功
}
return querySendDetailsResponse;
}
/**
* 申请短信模板
* 一个自然日最多可以提交100次短信模板申请。建议每次申请至少间隔30秒。通过控制台申请短信模板,提交次数无限制。
*
* @param smsTemplateRequestVo 短信模板实体类
* @return 结果
*/
public static CommonResponse aliyunAddSmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.ADD_SMS_TEMPLATE);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置阿里云短信模板申请类型
commonRequest.putQueryParameter("TemplateType", smsTemplateRequestVo.getSmsTemplateType());
//设置阿里云短信模板申请名称
commonRequest.putQueryParameter("TemplateName", smsTemplateRequestVo.getTemplateName());
//设置阿里云短信模板申请格式内容
commonRequest.putQueryParameter("TemplateContent", smsTemplateRequestVo.getTemplateContent());
//设置阿里云短信模板签名
commonRequest.putQueryParameter("SignName", smsTemplateRequestVo.getSignName());
//设置阿里云短信模板申请说明
commonRequest.putQueryParameter("Remark", smsTemplateRequestVo.getRemark());
try {
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("网络错误");
}
return commonResponse;
}
/**
* 根据模板code删除短信模板
*
* @param templateCode 短信模板Code
* @return 结果
*/
public static CommonResponse aliyunDeleteSmsTemplate(String templateCode) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.DELETE_SMS_TEMPLATE);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置阿里云短信模板code
commonRequest.putQueryParameter("TemplateCode", templateCode);
try {
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("网络错误");
}
return commonResponse;
}
/**
* 修改审批未通过的短信模板
*
* @param smsTemplateRequestVo 短信模板请求实体类
* @return 结果
*/
public static CommonResponse aliyunModifySmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.MODIF_SMS_TEMPLATE);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置阿里云短信模板类型
commonRequest.putQueryParameter("TemplateType", smsTemplateRequestVo.getSmsTemplateType());
//设置阿里云短信模板名称
commonRequest.putQueryParameter("TemplateName", smsTemplateRequestVo.getTemplateName());
//设置阿里云短信模板code
commonRequest.putQueryParameter("TemplateCode", smsTemplateRequestVo.getTemplateCode());
//设置阿里云短信模板内容
commonRequest.putQueryParameter("TemplateContent", smsTemplateRequestVo.getTemplateContent());
//设置阿里云短信模板申请说明
commonRequest.putQueryParameter("Remark", smsTemplateRequestVo.getRemark());
try {
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("网络错误");
}
return commonResponse;
}
/**
* 查询指定code的短信模板的审核状态
*
* @param smsTemplateRequestVo 短信模板实体类
* @return 结果
*/
public static CommonResponse aliyunQuerySmsTemplate(SmsTemplateRequestVo smsTemplateRequestVo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.QUERY_SMS_TEMPLATE);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置阿里云短信服务器区域类型
commonRequest.putQueryParameter("RegionId", REGION_ID);
//设置阿里云短信模板code
commonRequest.putQueryParameter("TemplateCode", smsTemplateRequestVo.getTemplateCode());
try {
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("网络错误");
}
return commonResponse;
}
/**
* 查询短信模板列表
*
* @param pageInfo 分页
* @return 结果
*/
public static CommonResponse aliyunQuerySmsTemplateList(PageParameter pageInfo) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.QUERY_SMS_TEMPLATE_LIST);
//初始化阿里云短信接收结果消息体
CommonResponse commonResponse = null;
//初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, AccessKeyId, AccessKeySecret);
IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
//设置阿里云短信服务器区域类型
commonRequest.putQueryParameter("RegionId", REGION_ID);
//设置要查询的分页数据
commonRequest.putQueryParameter("PageIndex", pageInfo.getPageNum() + "");
commonRequest.putQueryParameter("PageSize", pageInfo.getPageSize() + "");
try {
commonResponse = iAcsClient.getCommonResponse(commonRequest);
} catch (ClientException e) {
e.printStackTrace();
throw new RuntimeException("网络错误");
}
return commonResponse;
}
// *****************************************************************************************************
/**
* 把短信内容进行排版,排成阿里云要求的格式
*
* @param mapContent
* @return 结果
*/
private static String parsingKeyValue(Map<String, String> mapContent) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("{");
for (String key : mapContent.keySet()) {
stringBuilder.append("'" + key + "':'" + mapContent.get(key) + "',");
}
return stringBuilder.substring(0, stringBuilder.length() - 1) + "}";
}
/**
* 所有请求通用参数
*
* @param smsInterfaceType
* @return 结果
*/
private static CommonRequest getCommonRequest(SmsInterfaceType smsInterfaceType) {
//初始化设置阿里云短信发送消息体
CommonRequest commonRequest = new CommonRequest();
//设置阿里云短信消息体请求类型
commonRequest.setMethod(MethodType.POST);
//设置阿里云短信消息体接口调用ip地址
commonRequest.setDomain(ALIYUN_IP);
//设置阿里云短信服务版本
commonRequest.setVersion(VERSION);
//设置阿里云短信请求接口类型
commonRequest.setAction(smsInterfaceType.getType());
//设置阿里云短信服务器区域类型
commonRequest.putQueryParameter("RegionId", REGION_ID);
return commonRequest;
}
}
所用到的实体类
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Map;
/**
* 单发短信请求参数
*
* @author zhouhz
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(description = "单发短信")
public class SmsRequestVo {
private static final long serialVersionUID = 1L;
/**
* 手机号
*/
@Schema(description = "手机号")
private String phoneNumber;
/**
* 签名
*/
@Schema(description = "签名")
private String signName;
/**
* 模板code
*/
@Schema(description = "模板code")
private String templateCode;
/**
* 短信内容,key是对应短信模板的参数字段,value是字段对应的内容
*/
@Schema(description = "短信内容")
private Map<String, String> mapContent;
}
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
/**
* 批量短信请求参数
*
* @author zhangzyue
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(description = "群发短信")
public class SmsBatchRequestVo {
private static final long serialVersionUID = 1L;
/**
* 列表名称
*/
@Schema(description = "短信列表主键")
private String rowinfoId;
/**
* 手机号
*/
@Schema(description = "手机号")
private List<String> phoneNumber;
/**
* 签名
*/
@Schema(description = "签名")
private List<String> signName;
/**
* 模板code
*/
@Schema(description = "模板code")
private String templateCode;
/**
* 短信内容,key是对应短信模板的参数字段,value是字段对应的内容
*/
@Schema(description = "短信内容")
private List<Map<String, String>> mapContent;
}
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 查询短信
*
* @author sunrise
* @version 1.0
* @date 2023/08/08 10:43
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(description = "查询短信")
public class SmsQueryDetailsVo {
private static final long serialVersionUID = 1L;
/**
* 接收短信的手机号码
*/
@Schema(description = "手机号")
private String phoneNumber;
/**
* 发送回执ID
*/
@Schema(description = "回执ID")
private String bizId;
/**
* 短信发送日期,支持查询最近30天的记录。格式为yyyyMMdd,例如20181225。
*/
@Schema(description = "短信发送日期,格式为yyyyMMdd")
private String sendDate;
/**
* 分页查看发送记录,指定每页显示的短信记录数量。取值范围为1~50
*/
@Schema(description = "每页多少条")
private Long pageSize;
/**
* 分页查看发送记录,指定发送记录的当前页码。
*/
@Schema(description = "当前页")
private Long currentPage;
}
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 短信模板请求实体类
*
* @author sunrise
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(description = "短信模板请求实体类")
public class SmsTemplateRequestVo {
private static final long serialVersionUID = 1L;
/**
* id
*/
@Schema(description = "id主键")
private String id;
/**
* 模板类型(推荐对外使用)。取值:0:验证码短信。1:通知短信。2:推广短信。3:国际/港澳台短信。7:数字短信。
*/
@Schema(description = "模板类型(推荐对外使用)。取值:0:验证码短信。1:通知短信。2:推广短信。3:国际/港澳台短信。7:数字短信。")
private String smsTemplateType;
/**
* 模板名称
*/
@Schema(description = "模板名称")
private String templateName;
/**
* 模板code
*/
@Schema(description = "模板code")
private String templateCode;
/**
* 模板内容,长度不超过500个字符。示例:您正在申请手机注册,验证码为:${code},5分钟内有效!
*/
@Schema(description = "模板内容,长度不超过500个字符。示例:您正在申请手机注册,验证码为:${code},5分钟内有效!")
private String templateContent;
/**
* 短信模板申请说明
*/
@Schema(description = "短信模板申请说明")
private String remark;
/**
* 签名
*/
@Schema(description = "签名")
private String signName;
}
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* 短信模板返回实体类
*
* @author sunrise
* @version 1.0
* @date 2023/08/18 12:12
*/
@Data
@Schema(description = "短信模板返回实体类")
public class SmsTemplateResponseVo extends SmsResponseBaseVo {
/**
* 短信模板Code。示例:SMS_15255****
*/
@Schema(description = "短信模板Code。示例:SMS_15255****")
private String TemplateCode;
/**
* 模板内容。示例:亲爱的会员!阿里云短信服务祝您新年快乐!
*/
@Schema(description = "模板内容。示例:亲爱的会员!阿里云短信服务祝您新年快乐!")
private String TemplateContent;
/**
* 模板审核状态。取值:0:审核中。1:审核通过。2:审核未通过,请在返回参数Reason中查看审核失败原因。10:取消审核。
*/
@Schema(description = "模板审核状态。取值:0:审核中。1:审核通过。2:审核未通过,请在返回参数Reason中查看审核失败原因。10:取消审核。")
private String TemplateStatus;
/**
* 短信类型。取值:0:验证码。1:短信通知。2:推广短信。3:国际/港澳台消息。
*/
@Schema(description = "短信类型。取值:0:验证码。1:短信通知。2:推广短信。3:国际/港澳台消息。")
private String TemplateType;
/**
* 模板名称。示例:阿里云短信测试模板
*/
@Schema(description = "模板名称。示例:阿里云短信测试模板")
private String TemplateName;
/**
* 短信模板的创建时间。2019-06-04 11:42:17
*/
@Schema(description = "短信模板的创建时间。2019-06-04 11:42:17")
private String CreateDate;
/**
* 审核备注。非验证码类型短信,请选择短信通知类型为推广短信。如果审核状态为审核通过或审核中,
* 参数Reason显示为“无审批备注” 如果审核状态为审核未通过,
* 参数Reason显示审核的具体原因。
*/
@Schema(description = "审核备注。非验证码类型短信,请选择短信通知类型为推广短信。如果审核状态为审核通过或审核中,参数Reason显示为“无审批备注” 如果审核状态为审核未通过,参数Reason显示审核的具体原因。")
private String Reason;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 短信请求接口类型
*
* @author sunrise
*/
@Getter
@AllArgsConstructor
public enum SmsInterfaceType {
// 发送短信
SEND_SMS("SendSms"),
// 批量发送短信
BATCH_SEND_SMS("SendBatchSms"),
// 申请短信模板
ADD_SMS_TEMPLATE("AddSmsTemplate"),
// 删除短信模板
DELETE_SMS_TEMPLATE("DeleteSmsTemplate"),
// 修改未审核通过的短信模板,重新申请审核
MODIF_SMS_TEMPLATE("ModifySmsTemplate"),
// 查询短信模板列表
QUERY_SMS_TEMPLATE_LIST("QuerySmsTemplateList"),
// 查询短信模板的审核状态
QUERY_SMS_TEMPLATE("QuerySmsTemplate");
private final String type;
}