fxkh-txl-service/module-sms/README.md

156 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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. **配置保护**:短信服务认证信息应妥善保管
## 联系方式
如有问题请联系开发团队。