1.項(xiàng)目中引入Maven
阿里云地址
不同編程語言都有對(duì)應(yīng)的SDK,你們下載自己需要的即可。
pom.xml中添加maven坐標(biāo)
<!--阿里云短信服務(wù)-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-dysmsapi20170525</artifactId>
<version>2.0.22</version>
</dependency>
2.業(yè)務(wù)代碼
接下來的代碼不是單純的使用短信服務(wù)商提供的發(fā)送代碼來完成短信的發(fā)送那樣子就太簡(jiǎn)單了,我想你們也不想看這樣的文章了CSDN一抓一大把,或者看官方文檔即可。為了通用短信服務(wù)商,可以是騰訊云,阿里云等提供的短信業(yè)務(wù)。
????????這篇文章已經(jīng)推遲更新十多天了,都沒時(shí)間來更新,業(yè)務(wù)代碼和項(xiàng)目已經(jīng)都是完成了我放在gitee上,到時(shí)候倉庫我會(huì)公共出來,這樣你們也可以拉取下來改成對(duì)應(yīng)的短信發(fā)送系統(tǒng)。
項(xiàng)目使用
下面就是開始講下項(xiàng)目需要配置那些數(shù)據(jù)就可以開箱即用。
系統(tǒng)需求
- JDK >= 1.8
- MySQL >= 5.7
- Maven >= 3.0
必要配置
- 修改數(shù)據(jù)庫連接,編輯
resources
目錄下的application-dev.yml
# 應(yīng)用服務(wù) WEB 訪問端口
server:
#應(yīng)用的端口號(hào)
port: 8080
servlet:
#應(yīng)用的訪問路徑
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
目錄下有準(zhǔn)備好使用的itmei-sms.sql
文件,到時(shí)候自己創(chuàng)建一個(gè)庫把sql導(dǎo)入
- 修改短信服務(wù)商配置信息,編輯
resources
目錄下的SmsParamsConfig.yml
## 配置短信
itmei-sms-config:
#是否開啟短信發(fā)送
sms_send_or_not: true
# 對(duì)接的短信服務(wù)商
aliyun_sms:
accessKeyId: xxx
accessKeySecret: xxx
signName: xxx
#場(chǎng)景
sms_scene:
#場(chǎng)景類型
appointment_success: xxx
will_arrive_store: xxx
send_it_the_night_before: xxx
verification_code_sms: xxx
# 騰訊云服務(wù)商
tencent_sms:
accessKeyId: #你自己的accessKeyId
accessKeySecret: #你自己的accessKeySecret
signName: #你自己的簽名
#場(chǎng)景
sms_scene:
#場(chǎng)景類型
appointment_success: #你自己的短信模板
will_arrive_store: #你自己的短信模板
send_it_the_night_before: #你自己的短信模板
verification_code_sms: #你自己的短信模板
注意:
??????對(duì)接的服務(wù)商名稱tencent_sms,aliyun_sms
可不是亂取的,每個(gè)服務(wù)商對(duì)應(yīng)一個(gè)service,這個(gè)service需要實(shí)現(xiàn)SmsInterface
接口
已經(jīng)完成的阿里云短信實(shí)現(xiàn)類:
關(guān)于場(chǎng)景類型名稱的key
需要配置到SmsSceneEnum
枚舉類中定義。
??????由于會(huì)把SmsParamsConfig.yml
配置的數(shù)據(jù)轉(zhuǎn)換成JSONObject對(duì)象來使用。這樣我們?cè)诤罄m(xù)的代碼中可以通過對(duì)應(yīng)服務(wù)商的特征來使用對(duì)應(yīng)的配置如下圖調(diào)用。
SmsSupplierConfig
類用于獲取我們定義的yml文件并且把數(shù)據(jù)轉(zhuǎn)成Map<String, Object>
在轉(zhuǎn)成JSONObject
對(duì)象。
短信服務(wù)商類
已我已經(jīng)完成的阿里云短信服務(wù)為例:
????在service包下imp創(chuàng)建對(duì)應(yīng)短信發(fā)服務(wù)類如SmsAliyunServiceImpl
后需要實(shí)現(xiàn)SmsInterface
接口重寫里面發(fā)方法sendSms
和getDepartmentTemplateParam
,對(duì)應(yīng)服務(wù)商都會(huì)提供示例代碼和對(duì)應(yīng)的jar包或者是maven坐標(biāo)我們引入到系統(tǒng)即可,把示例代碼寫到sendSms
方法中并且創(chuàng)建服務(wù)類中的唯一標(biāo)識(shí)并且添加到SmsSupplierEnum
短信服務(wù)商枚舉中
按照我寫好的阿里云示例代碼編寫好你們對(duì)接的短信服務(wù)商后,我們就開始組裝需要的參數(shù)并且發(fā)送信息。
發(fā)送短信測(cè)試
項(xiàng)目中引入了測(cè)試類,我在SmsApplicationTests類中編寫了發(fā)送測(cè)試的代碼
@Test
void testSmsSend() {
//配置需要使用的短信服務(wù)商信息等
SmsTemplateConfig config = new SmsTemplateConfig();
config.setSceneEnum(SmsSceneEnum.APPOINTMENT_SUCCESS.getCode());
config.setSupplierEnum(SmsSupplierEnum.ALIYUN_SMS.getCode());
config.setSourceEnum(SmsSendSourceEnum.PC.getCode());
//自己短信模板的對(duì)應(yīng)參數(shù)
Map<String, Object> templateParam = new HashMap<>();
templateParam.put("name", "itmei");
templateParam.put("date_time", DateUtil.now());
templateParam.put("address", "萬達(dá)廣場(chǎng)");
templateParam.put("customer_phone", "19999999999");
templateParam.put("landline", "wxid_itmei");
config.setTemplateParam(templateParam);
smsServiec.sendSms("19999999999", config, true);
}
完成
短信發(fā)送成功保存到數(shù)據(jù)庫中。文章來源:http://www.zghlxwxcb.cn/news/detail-483837.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-483837.html
到了這里,關(guān)于Sms多平臺(tái)短信服務(wù)商系統(tǒng)~完成阿里云短信服務(wù)發(fā)送可自行配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!