refactor: 后端标识统一为 FruitShorts,并落地 05 离线下载

为什么:
1) 产品已定名 FruitShorts,但后端仍是 reelshort 系列标识 —— Java 包 com.reelshort、
   模块名与 jar 名 reelshort-*、spring.application.name、配置前缀 reelshort.*,
   这些会出现在启动日志、命令行和 IDE 里,与产品名不一致。本次整体替换为 fruitshorts,
   数据库连接名上一轮已改名,保持不变。
2) 第一阶段下一批第 1 步(05 离线下载)要求把下载授权(设备绑定/有效期/吊销)、
   下载任务与断点续传、配额与过期清理、仅 Wi-Fi 规则做成完整接口,本提交一并落地。
3) 顺带修复:schema-phase1.sql 里 playback_ticket / order_event 仍按普通表定义唯一索引,
   表分区化之后重跑脚本必定报错(分区表的唯一索引必须包含分区键)。改为在本脚本里就
   按分区表定义,并验证脚本可重复执行。
This commit is contained in:
Vicky committed 2026-10-15 11:44:26 +08:00
1 parent a4aa749cc6
commit b3179fc836
251 files changed
+7261 -767

No files matched your search

+23 -23
View File
@@ -1,4 +1,4 @@
# ReelShort 短剧服务 · 后端架构设计
# FruitShorts 短剧服务 · 后端架构设计
> 技术栈:JDK 21(LTS,编译目标 Java 17)+ Spring Boot 3.2 + PostgreSQL 18 + Redis
>
@@ -94,26 +94,26 @@
```
java/
├── pom.xml # 聚合父 POM,统一依赖版本
├── reelshort-common/ # 统一响应/异常/常量/枚举/工具
├── reelshort-framework/ # 安全、MyBatis、Redis、日志、限流、OSS、MQ 客户端
├── reelshort-module-system/ # 管理员、角色、权限、菜单、配置、操作日志
├── reelshort-module-content/ # 短剧、剧集、分类标签、审核发布
├── reelshort-module-media/ # 媒资上传、转码、播放地址签名
├── reelshort-module-member/ # C 端用户、登录、设备、资料
├── reelshort-module-interaction/ # 收藏、点赞、评论、观看历史
├── reelshort-module-trade/ # 金币、流水、解锁、订单、VIP
├── reelshort-module-stat/ # 数据看板、日聚合
├── reelshort-admin-api/ # B 端接口,/admin/**
├── reelshort-app-api/ # C 端接口,/app/**
└── reelshort-job/ # 定时任务与异步消费者
├── fruitshorts-common/ # 统一响应/异常/常量/枚举/工具
├── fruitshorts-framework/ # 安全、MyBatis、Redis、日志、限流、OSS、MQ 客户端
├── fruitshorts-module-system/ # 管理员、角色、权限、菜单、配置、操作日志
├── fruitshorts-module-content/ # 短剧、剧集、分类标签、审核发布
├── fruitshorts-module-media/ # 媒资上传、转码、播放地址签名
├── fruitshorts-module-member/ # C 端用户、登录、设备、资料
├── fruitshorts-module-interaction/ # 收藏、点赞、评论、观看历史
├── fruitshorts-module-trade/ # 金币、流水、解锁、订单、VIP
├── fruitshorts-module-stat/ # 数据看板、日聚合
├── fruitshorts-admin-api/ # B 端接口,/admin/**
├── fruitshorts-app-api/ # C 端接口,/app/**
└── fruitshorts-job/ # 定时任务与异步消费者
```
起步阶段若不想铺这么开,可先合并为 `reelshort-common` + `reelshort-server`(含 system/content/media)+ `reelshort-app-api`,但包结构仍按域划分(`com.reelshort.content.*`),后续拆模块零成本。
起步阶段若不想铺这么开,可先合并为 `fruitshorts-common` + `fruitshorts-server`(含 system/content/media)+ `fruitshorts-app-api`,但包结构仍按域划分(`com.fruitshorts.content.*`),后续拆模块零成本。
模块内部结构保持一致:
```
com.reelshort.content
com.fruitshorts.content
├── controller/ # 仅 admin-api / app-api 暴露
├── service/ # 接口 + impl
├── dal/
@@ -126,7 +126,7 @@ com.reelshort.content
命名约定:
- 包名 `com.reelshort.<module>.<layer>`
- 包名 `com.fruitshorts.<module>.<layer>`
- 实体 `Drama`、`DramaEpisode`、`AppUser`
- 请求对象 `XxxCreateReqVO` / `XxxUpdateReqVO` / `XxxPageReqVO`,响应对象 `XxxRespVO`
- 表名 `<域前缀>_<业务>`,如 `drama`、`drama_episode`、`sys_role`、`app_user`、`stat_drama_daily`
@@ -769,9 +769,9 @@ POST /app/pay/callback/{channel}
```
Nginx
├── reelshort-admin-api (/admin)
├── reelshort-app-api (/app)
└── reelshort-job (定时任务、异步消费)
├── fruitshorts-admin-api (/admin)
├── fruitshorts-app-api (/app)
└── fruitshorts-job (定时任务、异步消费)
PostgreSQL(主从) / Redis / OSS(或 MinIO) / 转码 Worker(独立容器,可多实例水平扩容)
```
@@ -849,9 +849,9 @@ server:
spring:
datasource:
url: jdbc:postgresql://127.0.0.1:5432/reelshort
username: ${DB_USER:reelshort}
password: ${DB_PASSWORD:reelshort}
url: jdbc:postgresql://127.0.0.1:5432/fruitshorts
username: ${DB_USER:fruitshorts}
password: ${DB_PASSWORD:fruitshorts}
data:
redis:
host: 127.0.0.1
@@ -861,7 +861,7 @@ spring:
max-file-size: 2GB
max-request-size: 2GB
reelshort:
fruitshorts:
jwt:
admin-secret: ${JWT_ADMIN_SECRET}
app-secret: ${JWT_APP_SECRET}