Scaffold-Boot-3.0框架使用文档Scaffold-Boot-3.0框架使用文档
首页
快速开始
变更记录
Source
首页
快速开始
变更记录
Source
  • 开始
  • 基础

    • 目录结构
    • 代码生成器
    • 增删改查
    • 异常处理
    • Knife4j(Swagger)文档
    • 登录&登出
    • 系统安全
    • 数据字典
    • Excel处理
    • 文件上传下载
    • 工具类
    • 定时任务
    • 微信集成
    • 短信服务
    • 参数配置
    • 接口限流
    • 日志审计
    • 数据脱敏
    • 网站管理
  • AI开发

    • AI项目工程结构
    • MCP服务
    • AI开发模式介绍
  • 开发规范
  • 常见问题
  • 深入

    • 配置详解-Config类
    • 配置详解-Yml配置文件
  • 生命周期

    • SonarQube代码质量保证
    • 部署到测试环境
    • 部署到正式环境
  • 优秀案例

    • Excel导入完整案例
  • 信创专区

    • 海量数据库
    • 神通数据库
    • 达梦数据库
    • 麒麟v10安装插件
  • 框架升级

短信服务

章节简介

本章节介绍如何在系统中发送短信,并详细介绍了SmsFacade接口的作用,以及其他短信平台接入的方式

统一SMS接口

项目在不同环境,不同时期使用的短信服务商是不一样的,比如开发环境用的是阿里云短信服务,测试环境和生产环境用的是腾讯云。项目后期客户又提供了自己的短信服务,这时又需要替换
如果让代码根据环境不同,或者按照需求动态切换短信服务商,则工作量非常大,且代码非常冗余,作为开发者,我们希望只需要调用一个方法即可发送短信。
此时框架提供了统一的SmsFacade门面类,让开发者无需关心底层实现,只需要调用SmsFacade即可发送短信

以下为SmsFacade门面类

  1. SmsFacadeResult是发送结果
  2. SmsFacadeMsg是短信内容
  3. 两个方法分别为单发和批量发送短信
  4. 如需项目需要实现自己的短信服务,则需要implementSmsFacade接口,并实现发送短信的方法。
package com.fykj.scaffold.sms;
/**
 * 短信门面接口
 */
public interface SmsFacade {
    /**
     * 给单一手机号发送短信
     */
    SmsFacadeResult sendSms(String phoneNumber, SmsFacadeMsg message);

    /**
     * 批量发送短信
     */
    List<SmsFacadeResult> sendSms(List<String> phoneNumber, SmsFacadeMsg message);
}

MockDev实现

由于开发时一般还没有接入真实的短信服务商,因此提供了一个Mock的实现类,模拟短信发送
发送后,短信内容会以红色字体显示在控制台中

移动云短信实现

公司申请了移动云的短信接口,且框架通过RanXinSmsImpl类集成,此方法会真实发送短信,会涉及到费用问题,请与项目经理沟通后使用

发送短信

  1. 确认短信配置 确认需要的实现类,确认签名
#短信配置,目前支持RanXinSms和MockDevSms两种方式。想要其他实现,自己写一个实现类即可
sms:
  impl: MockDevSms
  sign: 风云科技
  1. 创建模板
  • 新建SmsTemplate类,继承SmsTemplate。
  • 实现setTemplateId和setTemplateContent方法。前者是模板ID,后者是模板内容。注意模板ID需要全局唯一

提示

部分短信平台需要的参数是模板ID,及参数。这时templateId应该与短信平台保持一致

  • 可在此类内部新建SmsItem内部类,用于定义短信发送参数
  • 可以参考框架中已有的LoginSmsTemplate类
  1. 调用SmsFacade发送短信
@Autowired
private SmsFacade smsFacade;
//BillPushCallSuccessSmsTemplate 自定义的模版
SmsFacadeMsg params =
        SmsFacadeMsg
                .createMsg(new BillPushCallSuccessSmsTemplate())
                // 添加参数
                .addItem(BillPushCallSuccessSmsTemplate.SmsItem.AMOUNT, amount.setScale(2, RoundingMode.HALF_UP)
                .toString());
                // 发送短信
smsFacade.sendSms(linkUser.getPhoneNumber(), params);
在 GitLab 上编辑此页
最后更新: 2025/6/13 16:37
贡献者: xuew, guobenjia
Prev
微信集成
Next
参数配置