156 lines
4.1 KiB
Markdown
156 lines
4.1 KiB
Markdown
# SMS短信模块
|
||
|
||
## 模块概述
|
||
|
||
SMS模块提供生日短信和主题日短信的自动发送功能,包括:
|
||
|
||
- **生日短信**:自动检测当日生日的专家并发送祝福短信
|
||
- **主题日短信**:根据配置的主题日信息批量发送通知短信
|
||
- **短信日志**:记录所有短信发送状态和结果
|
||
- **定时任务**:自动化的发送和重置机制
|
||
|
||
## 重要:模块启用条件
|
||
|
||
SMS模块采用**双重条件控制**,必须同时满足以下条件才会启用:
|
||
|
||
### 1. 环境条件
|
||
```yaml
|
||
spring:
|
||
profiles:
|
||
active: prod
|
||
```
|
||
- **必须**在生产环境中(`prod` profile)
|
||
- 其他环境(dev、test等)不会加载SMS模块
|
||
|
||
### 2. 配置条件
|
||
```yaml
|
||
enableModules:
|
||
sms:
|
||
enable: true # 必须显式设置为true
|
||
```
|
||
- **必须**显式设置 `enableModules.sms.enable=true`
|
||
- 默认值为 `false`,未配置时不会启用
|
||
|
||
### 完整启用配置示例
|
||
```java
|
||
@SpringBootApplication
|
||
@Import({SmsModuleConfig.class})
|
||
public class Main {
|
||
public static void main(String[] args) {
|
||
SpringApplication.run(Main.class, args);
|
||
}
|
||
}
|
||
```
|
||
```yaml
|
||
enableModules:
|
||
sms:
|
||
enable: true
|
||
|
||
sms:
|
||
url: http://your-sms-service-url:port/smtp/http/submit
|
||
userName: your-username
|
||
serviceCode: your-service-code
|
||
userPassword: your-password
|
||
```
|
||
|
||
## 功能配置
|
||
|
||
### 生日短信配置
|
||
- **配置位置**:数据库表 `sms_birthday`
|
||
- **关键配置**:
|
||
- `status`: 启用状态(1=启用,0=禁用)
|
||
- `template`: 短信模板,支持 `{姓名}` 占位符
|
||
- `executionTmStr`: 执行时间(格式:HH:mm:ss)
|
||
|
||
### 主题日短信配置
|
||
- **配置位置**:数据库表 `sms_holiday`
|
||
- **关键配置**:
|
||
- `status`: 启用状态
|
||
- `subjectName`: 主题名称
|
||
- `template`: 短信模板,支持 `{姓名}` 和 `{主题}` 占位符
|
||
- `startDate` / `endDate`: 活动日期范围
|
||
- `executionTmStr`: 执行时间
|
||
|
||
## 开发注意事项
|
||
|
||
### 默认行为
|
||
- SMS模块在非生产环境**不会**被加载
|
||
- 定时任务默认**禁用**,需要显式配置启用
|
||
- 这是出于安全考虑,避免意外发送短信
|
||
|
||
### 验证模块是否启用
|
||
1. **查看启动日志**:
|
||
```
|
||
SMS定时任务状态: 已启用 # 或 "已禁用"
|
||
```
|
||
|
||
2. **检查Spring容器**:
|
||
- 启用:`SmsHelper`、`ScheduledTask` 等bean被加载
|
||
- 禁用:这些bean不会被实例化
|
||
|
||
3. **检查Controller**:
|
||
- 如果模块未启用,SMS相关的API接口将返回404
|
||
|
||
### 日志配置
|
||
建议在日志配置中添加SMS相关日志级别:
|
||
```xml
|
||
<!-- SMS模块日志 -->
|
||
<logger name="com.whdc.sms" level="INFO"/>
|
||
```
|
||
|
||
## 故障排查
|
||
|
||
### 常见问题
|
||
|
||
#### 1. SMS模块未启用
|
||
**症状**:启动时看不到SMS相关日志,API返回404
|
||
**排查**:
|
||
- 检查 `spring.profiles.active` 是否为 `prod`
|
||
- 检查 `enableModules.sms.enable` 是否为 `true`
|
||
|
||
#### 2. 定时任务未执行
|
||
**症状**:到达配置时间但未发送短信
|
||
**排查**:
|
||
- 确认 `ScheduledTask` bean被加载(查看启动日志)
|
||
- 检查任务执行时间配置格式
|
||
- 查看是否有异常日志
|
||
|
||
#### 3. 短信发送失败
|
||
**症状**:任务执行但短信未发送成功
|
||
**排查**:
|
||
- 检查短信服务配置(URL、认证信息)
|
||
- 查看短信日志表 `sms_log` 中的错误信息
|
||
- 检查手机号码格式和状态
|
||
|
||
### 调试方法
|
||
|
||
#### 1. 启用详细日志
|
||
```yaml
|
||
logging:
|
||
level:
|
||
com.whdc.sms: DEBUG
|
||
org.springframework.scheduling: DEBUG
|
||
```
|
||
|
||
#### 2. 手动触发测试
|
||
通过API接口手动测试短信发送功能:
|
||
- `POST /sms/birthday/get` - 获取生日短信配置
|
||
- `POST /sms/holiday/page` - 查看主题日配置
|
||
|
||
## 数据库表说明
|
||
|
||
- `sms_birthday` - 生日短信配置
|
||
- `sms_holiday` - 主题日短信配置
|
||
- `sms_specialist` - 专家信息(包含生日和手机号)
|
||
- `sms_log` - 短信发送日志
|
||
|
||
## 安全提醒
|
||
|
||
1. **生产环境专用**:SMS功能仅在生产环境启用
|
||
2. **显式配置**:必须显式配置才能启用,避免误操作
|
||
3. **短信监控**:定期检查短信发送日志,确保功能正常
|
||
4. **配置保护**:短信服务认证信息应妥善保管
|
||
|
||
## 联系方式
|
||
|
||
如有问题请联系开发团队。 |