重构了部分代码
This commit is contained in:
201
README.md
201
README.md
@@ -1,27 +1,194 @@
|
||||
# dailyLove
|
||||
|
||||
#### 介绍
|
||||
公众号每日问候推送
|
||||
## 公众号每日问候推送系统
|
||||
|
||||
#### 软件架构
|
||||
软件架构说明
|
||||
一个基于 Spring Boot 4 和响应式编程的微信公众号每日问候推送系统,可定时推送天气、节日、纪念日等个性化信息。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- **定时推送**:每日早上7:30推送早安问候,晚上22:00推送晚安问候
|
||||
- **天气信息**:实时获取并推送当地天气情况
|
||||
- **纪念日提醒**:自动计算恋爱纪念日、结婚纪念日及生日倒计时
|
||||
- **节日祝福**:支持农历节日和节气提醒
|
||||
- **个性化内容**:彩虹话、每日一言、贴心小提示等
|
||||
- **响应式架构**:使用 WebFlux 和 WebClient 实现高性能异步处理
|
||||
- **配置灵活**:支持外部配置和环境变量
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **后端框架**:Spring Boot 4.x
|
||||
- **响应式编程**:Spring WebFlux + WebClient
|
||||
- **JSON处理**:Jackson 3
|
||||
- **工具库**:Hutool
|
||||
- **构建工具**:Maven
|
||||
- **JDK版本**:JDK 25
|
||||
- **原生镜像**:GraalVM Native Image
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 环境要求
|
||||
|
||||
- JDK 25+
|
||||
- Maven 3.6+
|
||||
- 微信公众平台账号
|
||||
- 天行数据API密钥
|
||||
|
||||
### 配置说明
|
||||
|
||||
在 `application.yml` 中配置以下参数:
|
||||
|
||||
```yaml
|
||||
# 微信相关配置
|
||||
wechat:
|
||||
app-id: "your-app-id" # 微信公众号AppID
|
||||
app-secret: "your-app-secret" # 微信公众号AppSecret
|
||||
open-id: "user-open-id" # 接收推送的用户OpenID
|
||||
template-id-morning: "template-id-for-morning" # 早安模板消息ID
|
||||
template-id-night: "template-id-for-night" # 晚安模板消息ID
|
||||
|
||||
# 天行数据API配置
|
||||
daily-love:
|
||||
data:
|
||||
tianxin-key: "your-tianxin-api-key" # 天行数据API密钥
|
||||
city-id: "101270106" # 城市ID
|
||||
girl-birthday: "1995-06-28" # 女方生日
|
||||
boy-birthday: "1995-03-30" # 男方生日
|
||||
cat-birthday: "2022-10-23" # 宠物生日
|
||||
love-day: "2022-07-16" # 恋爱纪念日
|
||||
wedding-day: "2025-10-08" # 结婚纪念日
|
||||
```
|
||||
|
||||
### 启动应用
|
||||
|
||||
```bash
|
||||
# 编译项目
|
||||
mvn clean package
|
||||
|
||||
# 运行应用
|
||||
java -jar target/dailylove.jar
|
||||
|
||||
# 或使用Maven运行
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── main/
|
||||
│ ├── java/com/bamanker/dailylove/
|
||||
│ │ ├── config/ # 配置类
|
||||
│ │ ├── controller/ # 控制器
|
||||
│ │ ├── domain/ # 数据模型
|
||||
│ │ ├── service/ # 业务服务
|
||||
│ │ ├── utils/ # 工具类
|
||||
│ │ └── DailyLoveApplication.java
|
||||
│ └── resources/
|
||||
│ └── application.yml # 应用配置
|
||||
└── test/
|
||||
```
|
||||
|
||||
## 核心功能模块
|
||||
|
||||
### 1. 推送控制器
|
||||
|
||||
- [PushDailyController](file:///D:/myWork/dailyLove/src/main/java/com/bamanker/dailylove/controller/PushDailyController.java):处理早安/晚安推送逻辑
|
||||
- 支持 `/pushMorning` 和 `/pushNight` 接口手动触发推送
|
||||
|
||||
### 2. 定时任务
|
||||
|
||||
- [PushTask](file:///D:/myWork/dailyLove/src/main/java/com/bamanker/dailylove/config/PushTask.java):配置定时推送任务
|
||||
- Cron表达式:`0 30 7 * * ?` (早上7:30) 和 `0 0 22 * * ?` (晚上22:00)
|
||||
|
||||
### 3. 外部服务调用
|
||||
|
||||
- 使用 WebClient 调用微信API获取访问令牌
|
||||
- 调用天行数据API获取天气、彩虹话、每日一言等信息
|
||||
|
||||
## 配置项说明
|
||||
|
||||
|
||||
#### 安装教程
|
||||
| 配置项 | 描述 | 示例 |
|
||||
| --------------------------- | -------------------- | ----------- |
|
||||
| wechat.app-id | 微信公众号AppID | wx123456789 |
|
||||
| wechat.app-secret | 微信公众号AppSecret | abc123... |
|
||||
| wechat.open-id | 接收消息的用户OpenID | oABC123... |
|
||||
| daily-love.data.tianxin-key | 天行数据API密钥 | 123abc... |
|
||||
| daily-love.data.city-id | 城市ID | 101270106 |
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
## 自定义推送内容
|
||||
|
||||
#### 使用说明
|
||||
系统会根据以下情况进行智能提醒:
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
- **恋爱纪念日**:显示恋爱天数及特殊纪念日提醒
|
||||
- **生日提醒**:推送生日倒计时
|
||||
- **节日祝福**:农历节日、节气等
|
||||
- **天气预报**:当日/次日天气情况
|
||||
- **个性化内容**:彩虹话、每日一言等
|
||||
|
||||
#### 参与贡献
|
||||
## 部署方式
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 新建 Feat_xxx 分支
|
||||
3. 提交代码
|
||||
4. 新建 Pull Request
|
||||
### Docker部署
|
||||
|
||||
```bash
|
||||
# 构建Docker镜像
|
||||
docker build -t dailylove .
|
||||
|
||||
# 运行容器
|
||||
docker run -d -p 13145:13145 --name dailylove dailylove
|
||||
```
|
||||
|
||||
### 原生镜像部署
|
||||
|
||||
项目支持GraalVM原生镜像构建,启动速度更快:
|
||||
|
||||
```bash
|
||||
# 构建原生镜像
|
||||
./mvnw native:compile -Pnative
|
||||
|
||||
# 运行原生镜像
|
||||
./target/dailylove
|
||||
```
|
||||
|
||||
## 更新日志
|
||||
|
||||
### **v3.1.1-native**
|
||||
|
||||
- 优化了响应式编程实现,避免阻塞操作
|
||||
· 移除了 PushDailyController 中的 .block() 阻塞操作
|
||||
· 重构了异步数据处理逻辑,使用 Mono.zip 并发获取多个数据源
|
||||
· 改善了错误处理机制
|
||||
|
||||
- 重构了配置管理,使用@ConfigurationProperties替代静态字段
|
||||
· 创建了 DailyLoveProperties 类使用 @ConfigurationProperties 注解
|
||||
· 更新了配置文件结构,使用更清晰的层次结构
|
||||
· 添加了环境变量支持,提高了配置的灵活性
|
||||
- 修复了定时任务失效问题
|
||||
· 启用了 PushTask 定时任务类,使用 @Component 注解
|
||||
· 添加了日志记录以便跟踪任务执行
|
||||
- 改进了错误处理,增加全局异常处理器
|
||||
· 创建了专门的 PushException 异常类
|
||||
· 更新了全局异常处理器 GlobalExceptionHandler
|
||||
· 在关键位置添加了错误映射和处理
|
||||
- 增强了配置文件,支持环境变量
|
||||
· 更新了 application.yml 文件,采用新的配置结构
|
||||
· 添加了日志级别配置
|
||||
· 为配置项提供了默认值和环境变量支持
|
||||
|
||||
### **v2.4.0-native**
|
||||
|
||||
- 升级到Spring Boot 4
|
||||
- 使用WebClient替代OpenFeign
|
||||
- 支持原生镜像构建
|
||||
|
||||
## 贡献指南
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
|
||||
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
||||
5. 开启 Pull Request
|
||||
|
||||
## 许可证
|
||||
|
||||
此项目采用 MIT 许可证。
|
||||
|
||||
Reference in New Issue
Block a user