菠菜的小窝(3.0.0)java后端工程
Find a file
likebocai 2ad72e5f91 docs: 精简开发计划,仅保留 Phase 级概要
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-09 18:16:50 +08:00
claude docs: 精简开发计划,仅保留 Phase 级概要 2026-07-09 18:16:50 +08:00
likebocai-app init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-common init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-admin init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-auth init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-blog init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-game fix: JDK 降级至 17,修复依赖版本不存在的问题 2026-07-09 18:12:14 +08:00
likebocai-module-mail init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-mailbox init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-shared init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-storage init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-worker init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
likebocai-module-www init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
.gitignore init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00
pom.xml fix: JDK 降级至 17,修复依赖版本不存在的问题 2026-07-09 18:12:14 +08:00
README.md init: 3.0.0.260708_Likebocai — 12 模块 Maven 多模块项目骨架 2026-07-08 22:59:25 +08:00

likebocai-java · 3.0.0.260708_Likebocai

门户网站后端服务 — 主站、博客、游戏、时光邮箱、管理后台的统一 API 层。

上一版2.0.0.231224_Likebocai · 前端Nuxt 4独立项目


技术栈

分类 选型 说明
JDK 21 LTS 虚拟线程
框架 Spring Boot 3.5.16 Spring Security 6.x
ORM MyBatis 3 + PageHelper 纯 MyBatis非 Plus
数据库 PostgreSQL 17 已部署
缓存 Redis 单机 已部署
MQ RabbitMQ 延迟消息 + 异步解耦
搜索 Meilisearch REST API100-300MB
文档 SpringDoc + Knife4j 4.5 GroupedOpenApi 分组 + OAuth2
文件 腾讯云 COS
邮件 腾讯云 SMTP
CI/CD Forgejo Actions 自托管
部署 物理机单体 JAR 8GB 内存

项目结构12 个 Maven 子模块)

likebocai-parent (3.0.0.260708_Likebocai)
│
├── 🔹 基础层
│   ├── likebocai-common            纯工具 — Result、异常、常量 ✅
│   └── likebocai-module-shared     公用实体+枚举 — User、Comment... ✅
│
├── 🔸 基础设施层
│   ├── likebocai-module-storage    腾讯云 COS 📁
│   └── likebocai-module-mail       腾讯云 SMTP 📁
│
├── 🟢 业务层
│   ├── likebocai-module-auth       认证JWT+Security 已写完DTO/Mapper 待写)
│   ├── likebocai-module-blog       博客 📁
│   ├── likebocai-module-game       游戏(依赖 storage + meilisearch + pac4j📁
│   ├── likebocai-module-mailbox    时光邮箱RabbitMQ 延迟投递)📁
│   ├── likebocai-module-admin      管理后台 📁
│   └── likebocai-module-www        主站聚合(依赖 blog+game+mailbox+Redis📁
│
├── 🔧 消费层
│   └── likebocai-module-worker     RabbitMQ 消费者(可独立部署)📁
│
└── 🚀 启动层
    └── likebocai-app               聚合全部 + Knife4j + SwaggerConfig ✅

= 代码已实现 · 📁 = 目录就绪待开发

依赖矩阵速查

模块 Web Security OAuth2 MyBatis AMQP Redis Meili 其他
auth jjwt, mail
blog storage
game storage, pac4j
mailbox storage, mail
admin
www blog+game+mailbox
worker mail
app聚合 Knife4j

模块职责与依赖

模块 做什么 依赖谁
common 工具层Result、异常、常量
shared 公用实体User、Comment、Tag... common
storage COS 文件服务 common
mail SMTP 邮件服务 common
auth 登录注册 + JWT + OAuth2 SSO common + shared + mail + mybatis
blog 文章·随手拍·友链·朋友圈 common + shared + storage + mybatis
game 游戏百科·论坛·成就·平台同步 common + shared + storage + mybatis + meilisearch + pac4j
mailbox 时光邮箱·延迟投递 common + shared + storage + mail + mybatis + amqp + meilisearch
admin 管理后台·数据看板·审核 common + shared + mybatis
www 首页聚合(依赖 blog+game+mailbox common + shared + redis + blog + game + mailbox
worker MQ 消费者(可独立部署) common + shared + mail + mybatis + amqp + meilisearch
app 启动层,聚合所有打 fat JAR 以上全部 + Knife4j

设计原则

  • 谁用谁引blog 不需要 AMQP就不引入
  • 基础设施复用storage 和 mail 作为独立模块,谁需要谁依赖
  • 单体/微服务双模app 聚合所有模块打 fat JARWorker 加启动类即可独立部署
  • Knife4j 只在 app:统一在启动层配置,按包名扫描各模块 Controller
  • common 不碰框架:只放纯 Java 工具,换了项目也能用

依赖链: app聚合全部→ 业务模块auth/blog/game/...)→ 基础设施storage/mail→ shared → common


快速开始

环境

  • JDK 21
  • Maven 3.8+
  • PostgreSQL 17 / Redis / RabbitMQ / Meilisearch需已启动

构建

cd likebocai-java
mvn clean package -pl likebocai-app -am -DskipTests

产物:likebocai-app/target/likebocai-3.0.0.260708_Likebocai.jar

运行

# 开发环境
java -jar likebocai-app/target/likebocai-3.0.0.260708_Likebocai.jar --spring.profiles.active=dev

# 生产环境
java -jar likebocai-app/target/likebocai-3.0.0.260708_Likebocai.jar --spring.profiles.active=prod

API 文档

启动后访问:http://localhost:8080/doc.html

右上角 "Authorize" 按钮 → 输入账号密码获取 Token → 可在线测试所有接口。


配置

敏感信息走环境变量,不写死在配置文件里:

变量 说明 默认值
DB_USERNAME PG 用户名 postgres
DB_PASSWORD PG 密码 postgres
REDIS_HOST Redis 地址 localhost
REDIS_PASSWORD Redis 密码
RABBITMQ_HOST RabbitMQ 地址 localhost
RABBITMQ_USERNAME RabbitMQ 用户 guest
RABBITMQ_PASSWORD RabbitMQ 密码 guest
MEILISEARCH_HOST Meilisearch 地址 http://localhost:7700
MEILISEARCH_API_KEY Meilisearch Key
COS_SECRET_ID 腾讯云 COS ID
COS_SECRET_KEY 腾讯云 COS Key
MAIL_USERNAME SMTP 用户名
MAIL_PASSWORD SMTP 密码

版本号规则

大版本.功能更新.Bug修复.日期_代号
3.0.0.260708_Likebocai

更新版本号时用 Maven 命令一键同步所有子模块:

mvn versions:set -DnewVersion=X.X.X.YYMMDD_Likebocai
mvn versions:commit

业务模块

模块 子域名 功能
www 主站 首页聚合各模块内容
admin 管理 内容审核、用户管理、数据看板
game 游戏 游戏百科、教程、论坛、Steam/PS/Xbox/NS 数据同步、成就系统、游戏墙
blog 博客 文章发布、随手拍、友链、朋友圈
时光邮箱 时光 写信给未来、三种可见性、定时邮件投递

时光邮箱

  • 用户写信设定未来发送时间
  • 三种可见性:公开新建 / 到达再公开 / 匿名
  • RabbitMQ 延迟消息触发腾讯云 SMTP 投递
  • 每封信有评论区

游戏数据同步

平台 认证方式 可获取数据
Steam OpenID 2.0 + Web API Key 游戏列表、时长、成就
Xbox OAuth2 (Microsoft) 成就、游戏列表、Gamerscore
Nintendo OAuth 2.0(非标准) 游戏列表、游玩时长
PSN 逆向 OAuth 奖杯、游戏列表

API 规范

  • 前缀:/api/v3/
  • 统一响应:Result<T> { code, message, data }
  • 分页响应:PageResult<T> { list, total, pageNum, pageSize, totalPages }
  • 认证JWT Bearer TokenHeader: Authorization: Bearer <token>

搜索架构

公开内容:  Nuxt 4 → Meilisearch 直连Tenant Token
私有内容:  Nuxt 4 → Java 后端 → MeilisearchSession 校验)
数据同步:  业务模块 → RabbitMQ → 消费者 → Meilisearch 写入

服务拆分指南

项目设计为 单体 / 微服务双模,可按需拆分。

拆分 Worker 到闲置机器

# 1. Worker 模块加启动类 WorkerApplication
# 2. Worker pom.xml 加 spring-boot-maven-plugin
# 3. 配置 application-worker.ymlweb-application-type: none

# 构建
mvn clean package -pl likebocai-module-worker -am -DskipTests

# 部署到闲置机器
scp likebocai-module-worker/target/likebocai-worker-*.jar user@闲置:/opt/likebocai/
ssh user@闲置 "java -jar /opt/likebocai/likebocai-worker-*.jar --spring.profiles.active=worker"

拆分通用步骤

步骤 操作
1 目标模块加 Spring Boot 启动类
2 pom.xml 加 spring-boot-maven-plugin
3 配置独立 YMLweb-application-type: none
4 主服务 pom 注释掉该模块依赖
5 分别构建,通过 RabbitMQ 通信

详见 claude/CLAUDE.md 完整拆分指南


后续规划

  • 游戏数据抓取服务独立部署MQ 解耦)
  • 邮件发送服务独立部署
  • Meilisearch 内存观察,必要时换 ZincSearch
  • PSN 数据同步调研