阿里云短信代码

封装好的代码 复制黏贴就可以用

        <!-- 阿里云短信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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值