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