2022-12-26 10:49:00 +08:00
2026-01-14 00:06:59 +08:00
2026-01-08 13:59:30 +08:00
2022-12-26 10:49:00 +08:00
2022-12-26 10:49:00 +08:00
2026-01-14 00:09:09 +08:00
2026-01-14 00:06:59 +08:00

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 中配置以下参数:

# 微信相关配置
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"          # 结婚纪念日

启动应用

# 编译项目
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:处理早安/晚安推送逻辑
  • 支持 /pushMorning/pushNight 接口手动触发推送

2. 定时任务

  • PushTask:配置定时推送任务
  • 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

自定义推送内容

系统会根据以下情况进行智能提醒:

  • 恋爱纪念日:显示恋爱天数及特殊纪念日提醒
  • 生日提醒:推送生日倒计时
  • 节日祝福:农历节日、节气等
  • 天气预报:当日/次日天气情况
  • 个性化内容:彩虹话、每日一言等

部署方式

Docker部署

# 构建Docker镜像
docker build -t dailylove .

# 运行容器
docker run -d -p 13145:13145 --name dailylove dailylove

原生镜像部署

项目支持GraalVM原生镜像构建启动速度更快

# 构建原生镜像
./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 许可证。

Description
No description provided
Readme 122 MiB
v3.0.4-native Latest
2026-01-06 00:31:27 +08:00
Languages
Java 99.6%
Dockerfile 0.4%