Sms多平台短信服务商系统~完成阿里云短信服务发送可自行配置

1.项目中引入Maven

阿里云地址

不同编程语言都有对应的SDK,你们下载自己需要的即可。

在这里插入图片描述
pom.xml中添加maven坐标

    <!--阿里云短信服务-->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-dysmsapi20170525</artifactId>
        <version>2.0.22</version>
    </dependency>

在这里插入图片描述

2.业务代码

接下来的代码不是单纯的使用短信服务商提供的发送代码来完成短信的发送那样子就太简单了,我想你们也不想看这样的文章了CSDN一抓一大把,或者看官方文档即可。为了通用短信服务商,可以是腾讯云,阿里云等提供的短信业务。


        这篇文章已经推迟更新十多天了,都没时间来更新,业务代码和项目已经都是完成了我放在gitee上,到时候仓库我会公共出来,这样你们也可以拉取下来改成对应的短信发送系统。

项目使用

下面就是开始讲下项目需要配置那些数据就可以开箱即用。

系统需求

  • JDK >= 1.8
  • MySQL >= 5.7
  • Maven >= 3.0

必要配置

  • 修改数据库连接,编辑resources目录下的application-dev.yml
# 应用服务 WEB 访问端口
server:
  #应用的端口号
  port: 8080
  servlet:
    #应用的访问路径
    context-path: /

# DataSource Config
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/itmei-sms?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true
    username: root
    password: root
  • doc目录下有准备好使用的itmei-sms.sql文件,到时候自己创建一个库把sql导入
    在这里插入图片描述
  • 修改短信服务商配置信息,编辑resources目录下的SmsParamsConfig.yml
## 配置短信
itmei-sms-config:
  #是否开启短信发送
  sms_send_or_not: true
  # 对接的短信服务商
  aliyun_sms:
    accessKeyId: xxx
    accessKeySecret: xxx
    signName: xxx
    #场景
    sms_scene:
      #场景类型
      appointment_success: xxx
      will_arrive_store: xxx
      send_it_the_night_before: xxx
      verification_code_sms: xxx
  # 腾讯云服务商
  tencent_sms:
    accessKeyId: #你自己的accessKeyId
    accessKeySecret: #你自己的accessKeySecret
    signName: #你自己的签名
    #场景
    sms_scene:
      #场景类型
      appointment_success: #你自己的短信模板
      will_arrive_store: #你自己的短信模板
      send_it_the_night_before: #你自己的短信模板
      verification_code_sms: #你自己的短信模板
      

注意:
      对接的服务商名称tencent_sms,aliyun_sms可不是乱取的,每个服务商对应一个service,这个service需要实现SmsInterface接口

在这里插入图片描述
已经完成的阿里云短信实现类:

在这里插入图片描述

关于场景类型名称的key需要配置到SmsSceneEnum枚举类中定义。

在这里插入图片描述
      由于会把SmsParamsConfig.yml配置的数据转换成JSONObject对象来使用。这样我们在后续的代码中可以通过对应服务商的特征来使用对应的配置如下图调用。
在这里插入图片描述

SmsSupplierConfig类用于获取我们定义的yml文件并且把数据转成Map<String, Object>在转成JSONObject对象。

短信服务商类

已我已经完成的阿里云短信服务为例:
    在service包下imp创建对应短信发服务类如SmsAliyunServiceImpl后需要实现SmsInterface接口重写里面发方法sendSmsgetDepartmentTemplateParam,对应服务商都会提供示例代码和对应的jar包或者是maven坐标我们引入到系统即可,把示例代码写到sendSms方法中并且创建服务类中的唯一标识并且添加到SmsSupplierEnum短信服务商枚举中
在这里插入图片描述

在这里插入图片描述
按照我写好的阿里云示例代码编写好你们对接的短信服务商后,我们就开始组装需要的参数并且发送信息。

发送短信测试

项目中引入了测试类,我在SmsApplicationTests类中编写了发送测试的代码

    @Test
    void testSmsSend() {
    
    
        //配置需要使用的短信服务商信息等
        SmsTemplateConfig config = new SmsTemplateConfig();
        config.setSceneEnum(SmsSceneEnum.APPOINTMENT_SUCCESS.getCode());
        config.setSupplierEnum(SmsSupplierEnum.ALIYUN_SMS.getCode());
        config.setSourceEnum(SmsSendSourceEnum.PC.getCode());
        //自己短信模板的对应参数
        Map<String, Object> templateParam = new HashMap<>();
        templateParam.put("name", "itmei");
        templateParam.put("date_time", DateUtil.now());
        templateParam.put("address", "万达广场");
        templateParam.put("customer_phone", "19999999999");
        templateParam.put("landline", "wxid_itmei");
        config.setTemplateParam(templateParam);
        smsServiec.sendSms("19999999999", config, true);
    }

完成

短信发送成功保存到数据库中。
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45502336/article/details/128844490