{{wikiTitle}}
短信发送
目录:
一、功能概述
本模块基于一号通服务平台实现短信发送能力,支持以下核心业务场景:
1.验证码发送(用户注册/登录验证)
2.订单状态通知(支付成功、发货提醒、改价通知)
3.管理端提醒(新订单提醒、退款申请通知)
4.模板管理(申请/修改短信模板)
核心特性:
多业务场景短信模板支持
发送频率控制(Redis缓存限制)
与服务商解耦设计
异步发送保障系统稳定性
二、接口说明
1. 公共验证码发送
@ApiOperation("发送通用验证码")
public CommonResult<Boolean> sendCommonCode(
@RequestParam @Pattern(regexp = "^1[3-9]\\d{9}$") String phone
)
2. 业务短信接口
方法名 | 业务场景 | 关键参数 |
---|---|---|
sendPaySuccess | 支付成功通知 | 订单号、金额 |
sendOrderDeliverNotice | 发货提醒 | 用户昵称、商品名称、订单号 |
sendOrderEditPriceNotice | 改价通知 | 订单号、新价格 |
sendCreateOrderNotice | 新订单管理员提醒 | 管理员名称、订单号 |
三、核心流程
1. 验证码发送流程
start
:接收手机号;
:校验手机号格式;
if (Redis存在发送记录?) then (是)
:返回"操作频繁"错误;
stop
endif
:生成6位随机验证码;
:调用一号通发送接口;
if (发送成功?) then (是)
:写入Redis缓存(5分钟有效期);
else (否)
:记录错误日志;
endif
:返回操作结果;
2. 服务调用流程
// 核心发送逻辑
private Boolean commonSendSms(SendSmsVo sendSmsVo) {
// 1. 获取认证令牌
String token = onePassUtil.getToken();
// 2. 构建请求头
HashMap<String, String> header = onePassUtil.getCommonHeader(token);
// 3. 封装请求参数
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("phone", sendSmsVo.getMobile());
param.add("temp_id", sendSmsVo.getTemplate());
// 4. 发送POST请求
String result = restTemplateUtil.postFromUrlencoded(
OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_SEND_URI,
param, header
);
// 5. 校验响应结果
return checkResult(result);
}
3. 配置加载示例
// 获取验证码有效期
String expire = systemConfigService.getValueByKey(Constants.CONFIG_KEY_SMS_CODE_EXPIRE);
// 获取API地址
String apiUrl = OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_SEND_URI;
四、二开策略
1. 新增短信模板
实现步骤:
控制台申请模板:
public Boolean applyTempMessage(SmsApplyTempRequest request) {
// 参数封装
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("title", request.getTitle());
param.add("content", request.getContent());
// 调用一号通API
return postFrom(OnePassConstants.ONE_PASS_TEMP_APPLY_URI, param);
}
同步模板ID:
# 模板ID配置
sms.template.pay_success=1001
sms.template.deliver_notice=1002
2. 更换服务商
适配器模式改造:
public interface SmsAdapter {
Boolean send(SendSmsVo vo);
}
@Service("onePassAdapter")
public class OnePassAdapterImpl implements SmsAdapter {
// 现有一号通实现
}
@Service("aliyunAdapter")
public class AliyunAdapterImpl implements SmsAdapter {
// 新服务商实现
}




评论({{cateWiki.comment_num}})
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
{{cateWiki.page_view_num}}人看过该文档


评论(0)
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
207人看过该文档




{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除




搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:{{path.name}} {{(i+1) == item.catalogue.path_data.length ? '':'/'}}


