数字刊物系统概要设计说明书
版本:1.0
编写日期:2026-06-07
编写依据:当前项目代码、数据库初始化脚本及
doc目录已有专题设计文档适用范围:数字刊物系统后端服务、管理端前端、移动端前端及配套基础能力
1. 项目概述
数字刊物系统用于支撑电子书/数字刊物的内容生产、发布、移动端阅读、用户互动、数据统计和系统权限管理。系统由管理端、移动端、后端 API 服务、数据库、Redis、文件存储及若干扩展能力组成。
管理端面向平台运营人员和内容管理员,提供电子书管理、章节与内容编辑、分类管理、评论评分管理、数据统计、PDF 导出、用户与权限管理、系统配置和操作日志等能力。移动端面向读者用户,提供书刊浏览、搜索、阅读、评论、评分、收藏、划线标记、阅读历史、下载、头像上传和账号注销等能力。
系统采用前后端分离模式:管理端前端 ui-admin、移动端前端 ui-mobile 分别调用管理端后端服务 dp-admin-web 与移动端后端服务 dp-app-web。后端以多模块 Maven 工程组织,公共模型、Mapper 和业务服务由管理端与移动端复用。
2. 设计目标与边界
2.1 设计目标
- 提供数字刊物从创建、编辑、发布到移动端阅读的完整业务闭环。
- 管理端通过 RBAC 权限码实现菜单、按钮和接口级权限控制。
- 移动端通过登录态、用户状态和业务规则控制用户可访问能力。
- 支持用户行为、页面访问、评分、下载、分享和外链点击等统计数据采集与展示。
- 支持本地文件上传、文档解析、PDF 导出和 TTS 语音生成等内容生产辅助能力。
- 支持 Redis 会话绑定、短信验证码、移动端接口应用层加密等安全与体验能力。
- 通过模块化后端结构降低管理端与移动端之间的重复实现。
2.2 系统边界
系统当前覆盖以下边界内能力:
- 数字刊物内容管理与移动端访问。
- 平台用户、角色、权限、配置和操作日志管理。
- 本地文件系统上传与静态资源访问。
- 基于 MySQL 的业务数据持久化。
- 基于 Redis 的 token 活跃会话、验证码、权限缓存和部分移动端缓存。
- 基于后端服务生成 PDF 与 TTS 音频。
系统当前不直接覆盖以下能力:
- 对象存储、CDN 分发、文件生命周期管理和病毒扫描。
- 独立的工作流/审批流引擎。
- 多租户隔离设计。
- 明确的大模型问答服务调用链路;代码中存在 AI 使用记录实体与 AI 行为统计,但未见独立的大模型服务入口。
- 生产环境部署编排、CI/CD 流水线和容器化编排配置。
3. 总体架构设计
3.1 逻辑架构
text
┌──────────────────────┐ ┌──────────────────────┐
│ 管理端前端 │ │ 移动端前端 │
│ ui-admin │ │ ui-mobile │
│ Vue2 + Element UI │ │ Vue2 + Vant │
└──────────┬───────────┘ └──────────┬───────────┘
│ /admin/** │ /app/**
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ 管理端后端服务 │ │ 移动端后端服务 │
│ dp-admin-web │ │ dp-app-web │
│ Controller/Security │ │ Controller/Security │
└──────────┬───────────┘ └──────────┬───────────┘
│ │
└──────────────┬─────────────────┘
▼
┌────────────────────────────────────────────────────────┐
│ 业务服务层 dp-service │
│ 内容、用户、权限、统计、文件、PDF、TTS、短信等业务实现 │
└──────────────────────┬─────────────────────────────────┘
▼
┌────────────────────────────────────────────────────────┐
│ 数据访问层 dp-mapper + 模型层 dp-model │
│ MyBatis-Plus Mapper、实体、DTO、VO、枚举 │
└──────────┬─────────────────────┬───────────────────────┘
▼ ▼
MySQL 数据库 Redis 缓存/会话
│ │
▼ ▼
业务数据持久化 token、验证码、权限缓存、临时状态
3.2 后端模块职责
| 模块 | 职责 |
|---|---|
dp-common |
公共返回结构、分页结果、异常、通用配置和工具能力。 |
dp-model |
业务实体、DTO、VO、枚举定义,是服务层、Mapper 和 Web 层之间的数据模型基础。 |
dp-mapper |
MyBatis-Plus Mapper 与 XML SQL,负责数据库访问。 |
dp-service |
业务接口与实现,承载内容、用户、权限、统计、文件、PDF、TTS、短信等核心业务逻辑。 |
dp-admin-web |
管理端 Spring Boot 应用,提供 /admin/**、/preview/** 等接口,负责管理端认证、授权、接口暴露和静态资源访问。 |
dp-app-web |
移动端 Spring Boot 应用,提供 /app/** 接口,负责移动端认证、用户访问控制、接口加密和移动端静态资源访问。 |
3.3 前端模块职责
| 模块 | 技术栈 | 职责 |
|---|---|---|
ui-admin |
Vue 2.7、Vue Router、Vuex、Element UI、Axios、ECharts、wangeditor | 管理端后台界面,包括首页、电子书管理、系统管理、统计图表、内容编辑、PDF 导出等。 |
ui-mobile |
Vue 2.7、Vue Router、Vuex、Vant、Axios、amfe-flexible | 移动端读者界面,包括书刊列表、详情、阅读器、外部链接页、我的页面、收藏、评论、标记、历史、下载等。 |
3.4 技术栈
| 层次 | 技术/组件 |
|---|---|
| 后端框架 | Spring Boot 2.7.18、Java 8 |
| 安全认证 | Spring Security、JWT、Redis token 活跃会话 |
| 数据访问 | MyBatis-Plus、MySQL 8 驱动 |
| 缓存/会话 | Redis |
| API 文档 | Knife4j / Swagger |
| 工具库 | Lombok、MapStruct、Hutool、Jsoup |
| 短信 | sms4j |
| openhtmltopdf、PDFBox、Apache POI 等相关能力 | |
| TTS | sherpa-onnx / Kokoro 模型资源 |
| 管理端前端 | Vue2、Element UI、ECharts、wangeditor |
| 移动端前端 | Vue2、Vant、postcss-pxtorem、amfe-flexible |
4. 功能概要设计
4.1 管理端功能
4.1.1 登录认证与用户信息
管理端通过 /admin/auth 提供登录、当前用户信息和退出登录能力。管理员登录成功后,后端签发 userType=admin 的 JWT,并将 token 绑定到 Redis 活跃会话。后续请求通过 Authorization: Bearer <token> 传递 token。
主要接口:
| 功能 | 接口 |
|---|---|
| 管理员登录 | POST /admin/auth/login |
| 当前管理员信息 | GET /admin/auth/info |
| 退出登录 | POST /admin/auth/logout |
4.1.2 电子书与分类管理
电子书管理是系统核心管理能力,覆盖书刊创建、查询、编辑、发布、下架、删除、恢复、字段更新和回收站查询。电子书分类支持列表、创建、编辑、删除和排序。
主要接口:
| 功能 | 接口前缀/接口 |
|---|---|
| 电子书列表、详情、新增、编辑 | /admin/ebooks |
| 上架/下架 | POST /admin/ebooks/{id}/publish、POST /admin/ebooks/{id}/unpublish |
| 删除与恢复 | DELETE /admin/ebooks/{id}、POST /admin/ebooks/{id}/restore |
| 回收站 | GET /admin/ebooks/recycle-bin |
| 单字段更新 | PUT /admin/ebooks/{id}/field |
| 分类管理 | /admin/categories |
| 分类排序 | PUT /admin/categories/sort |
电子书实体支持标题、描述、封面、分类、年份、图书类型、阅读方向、下载模式、下载价格、排序权重、发布状态、PDF 信息、删除时间、评论开关和评分开关等字段。
4.1.3 章节与内容管理
章节管理支持按电子书查询章节、创建章节、编辑章节、删除章节、章节排序和章节锁定。内容管理支持章节内容读取、草稿保存、正式提交和 TTS 语音生成状态查询。
主要接口:
| 功能 | 接口 |
|---|---|
| 查询电子书章节 | GET /admin/chapters/ebook/{ebookId} |
| 新增/编辑/删除章节 | /admin/chapters、/admin/chapters/{id} |
| 章节排序 | PUT /admin/chapters/sort |
| 章节锁定/解锁/强制解锁 | POST /admin/chapters/{id}/lock、POST /admin/chapters/{id}/unlock、POST /admin/chapters/{id}/force-unlock |
| 查询章节内容 | GET /admin/contents/chapter/{chapterId} |
| 保存草稿 | POST /admin/contents/draft |
| 提交正式内容 | POST /admin/contents/submit |
| 生成 TTS | POST /admin/contents/chapter/{chapterId}/tts/generate |
| 查询 TTS 状态 | GET /admin/contents/chapter/{chapterId}/tts/status |
章节内容以 HTML 形式存储,区分正式内容和草稿内容。章节内容表同时保存 TTS 文件路径、内容哈希和生成状态,用于避免内容未变更时重复生成语音。
4.1.4 评论与评分管理
管理端可查询、删除和批量删除评论及评分数据。移动端是否允许评论或评分由电子书实体中的 commentEnabled、ratingEnabled 控制,管理端可通过电子书字段更新能力维护开关。
| 功能 | 接口 |
|---|---|
| 评论列表 | GET /admin/comments |
| 删除评论 | DELETE /admin/comments/{id} |
| 批量删除评论 | DELETE /admin/comments/batch |
| 评分列表 | GET /admin/ratings |
| 删除评分 | DELETE /admin/ratings/{id} |
| 批量删除评分 | DELETE /admin/ratings/batch |
4.1.5 文件上传与文档解析
系统提供管理端通用文件上传和文档解析能力。上传文件按业务类型和日期保存到本地文件系统,并通过静态资源映射对外访问。文档解析支持将 docx、doc、html、htm、txt 转换为 HTML 内容。
| 功能 | 接口 |
|---|---|
| 通用上传 | POST /admin/upload |
| 文档解析 | POST /admin/upload/document/parse |
详细设计见 doc/file-upload-design.md。
4.1.6 预览管理
预览功能用于生成电子书预览链接,并支持按电子书查询预览记录和对预览反馈进行审核。
| 功能 | 接口 |
|---|---|
| 创建预览 | POST /admin/previews |
| 查询电子书预览 | GET /admin/previews/ebook/{ebookId} |
| 预览审核 | PUT /admin/previews/{id}/review |
预览链接有效期由系统配置项控制,数据库初始化脚本中存在 preview_expire_hours 配置。
4.1.7 PDF 导出管理
PDF 能力支持手动导出、自动触发生成、导出记录查询和导出文件下载。移动端下载也复用 PDF 服务生成下载链接和下载记录。
| 功能 | 接口 |
|---|---|
| PDF 导出记录 | GET /admin/pdf/records |
| 手动导出 | POST /admin/pdf/export |
| 触发生成 | POST /admin/pdf/generate/{ebookId} |
| 下载导出文件 | GET /admin/pdf/download/{recordId} |
PDF 导出记录表记录电子书、触发类型、导出范围、章节 ID 列表、文件地址、文件大小、页数、状态、创建人和创建时间。
4.1.8 运营统计
统计模块采集移动端页面访问、用户行为、外链点击、下载、评分等数据,并在管理端提供总览、单书详情、趋势和行为统计。
| 功能 | 接口 |
|---|---|
| 统计总览 | GET /admin/stats/overview |
| 单书统计 | GET /admin/stats/book/{ebookId} |
| 趋势统计 | GET /admin/stats/trend |
| 行为统计 | GET /admin/stats/behaviors |
详细设计见 doc/statistics-design.md。
4.1.9 用户与权限管理
管理端系统管理能力包括管理员用户、移动端用户、角色、权限、系统配置和操作日志。
管理员用户管理支持列表、详情、新增、编辑、启停、重置密码和分配角色。移动端用户管理支持列表、详情、状态修改、禁言/解除禁言、注销审核、删除、重新激活和强制下线。角色管理支持角色 CRUD 和权限分配。权限管理提供权限树查询。
| 功能 | 接口前缀 |
|---|---|
| 管理员用户管理 | /admin/users |
| 移动端用户管理 | /admin/app-users |
| 角色管理 | /admin/roles |
| 权限树 | /admin/permissions/tree |
| 系统配置 | /admin/config |
| 操作日志 | /admin/logs |
权限详细设计见 doc/system-permission-design.md。
4.2 移动端功能
4.2.1 登录与用户资料
移动端支持短信验证码获取和登录。登录成功后,后端签发 userType=app 的 JWT,并将 token 绑定到 Redis。用户可查询个人信息、上传头像、发起账号注销和撤销注销申请。
| 功能 | 接口 |
|---|---|
| 获取短信验证码 | POST /app/auth/sms-code |
| 移动端登录 | POST /app/auth/login |
| 当前用户信息 | GET /app/user/info |
| 头像上传 | POST /app/user/avatar |
| 申请注销 | POST /app/user/cancel |
| 撤销注销 | POST /app/user/cancel/revoke |
4.2.2 书刊浏览、搜索与阅读
移动端提供分类、书刊列表、详情、全文/关键词搜索、章节内容读取和章节内容搜索。阅读器页面会触发页面访问统计和阅读行为统计。
| 功能 | 接口 |
|---|---|
| 分类列表 | GET /app/books/categories |
| 书刊列表 | GET /app/books |
| 书刊详情 | GET /app/books/{id} |
| 书刊搜索 | GET /app/books/search |
| 章节内容 | GET /app/chapters/{id}/content |
| 章节搜索 | GET /app/chapters/search |
| 章节 TTS 音频 | GET /app/chapters/{id}/tts |
移动端路由包括 /book、/book/:id、/reader/:bookId/:chapterId、/external-webview、/preview/:url 等页面。
4.2.3 评论、评分、收藏与划线
移动端支持按章节或书籍查看评论、提交评论、删除本人评论、查询本人评论列表;支持提交评分、查询评分汇总、查询本人评分;支持收藏书籍或章节、取消收藏、收藏状态检查、我的收藏书籍和章节;支持章节划线标记、删除标记、按章节查询标记和查询我的标记。
| 功能 | 接口前缀/接口 |
|---|---|
| 评论 | /app/comments |
| 评分 | /app/ratings |
| 收藏 | /app/favorites |
| 划线标记 | /app/highlights |
评论能力受用户登录态、禁言状态、账号状态和电子书评论开关约束;评分能力受登录态和评分开关约束。
4.2.4 阅读进度、历史与下载
移动端支持保存阅读进度、查询指定书刊阅读进度、查询阅读历史、清空阅读历史、下载电子书 PDF 和查询我的下载记录。
| 功能 | 接口 |
|---|---|
| 保存阅读进度 | POST /app/reading/progress |
| 查询阅读进度 | GET /app/reading/progress/{ebookId} |
| 阅读历史 | GET /app/reading/history |
| 清空阅读历史 | DELETE /app/reading/history |
| 获取下载链接 | GET /app/downloads/{ebookId} |
| 我的下载记录 | GET /app/downloads/mine |
4.2.5 移动端统计与配置
移动端通过统计接口上报页面访问、用户行为和第三方外链点击。移动端配置接口用于获取加密配置和业务配置。
| 功能 | 接口 |
|---|---|
| 页面访问统计 | POST /app/stat/page-view |
| 行为统计 | POST /app/stat/behavior |
| 外链点击统计 | POST /app/stat/external-link-click |
| 加密配置 | GET /app/config/crypto |
| 单配置查询 | GET /app/config/get |
| 批量配置查询 | POST /app/config/list |
移动端前端在路由切换时对书籍详情页和阅读页进行 PV/阅读统计采集,并在离开相关页面时结束停留时长统计。
5. 数据概要设计
5.1 核心数据分组
| 分组 | 数据表/实体 | 说明 |
|---|---|---|
| 内容数据 | ebook、ebook_category、ebook_chapter、ebook_chapter_content |
电子书、分类、章节树和章节 HTML 内容。 |
| 用户互动 | ebook_comment、ebook_rating、ebook_favorite、ebook_highlight |
评论、评分、收藏和划线标记。 |
| 阅读与下载 | ebook_reading_progress、ebook_reading_history、ebook_download_record |
阅读进度、阅读历史和下载记录。 |
| 预览与导出 | ebook_preview、ebook_preview_feedback、pdf_export_record |
预览链接、预览反馈审核和 PDF 导出记录。 |
| 统计数据 | stat_page_view、stat_user_behavior、stat_external_link_click、ai_usage_record |
PV/UV、用户行为、外链点击和 AI 使用记录。 |
| 移动端用户 | app_user |
手机号、头像、状态、禁言、注销状态、阅读偏好、登录信息。 |
| 权限与系统 | sys_admin_user、sys_role、sys_permission、sys_admin_user_role、sys_role_permission、sys_config、sys_operation_log |
管理员、角色、权限、配置和操作日志。 |
5.2 主要实体关系
- 一个电子书归属一个分类;一个分类可关联多本电子书。
- 一本电子书包含多个章节;章节支持父子层级结构和排序。
- 一个章节对应章节内容记录,内容记录保存正式内容、草稿内容和 TTS 状态。
- 一个移动端用户可产生多条评论、评分、收藏、划线标记、阅读历史、阅读进度和下载记录。
- 一个管理员用户可关联多个角色;一个角色可关联多个权限。
- 统计表通过
ebook_id、chapter_id、user_id关联书刊、章节和用户维度。 - PDF 导出记录通过
ebook_id关联电子书,并记录导出范围和生成状态。
5.3 状态与枚举
系统通过枚举类和状态字段表达核心业务状态:
| 枚举/状态 | 用途 |
|---|---|
EbookStatus |
电子书发布、下架等状态。 |
ChapterStatus |
章节状态。 |
BookType |
图书类型。 |
ReadDirection |
阅读方向。 |
DownloadMode |
下载模式。 |
CommentStatus |
评论状态。 |
ReviewStatus |
预览/审核状态。 |
AppUserStatus |
移动端用户启用、禁用等状态。 |
AppUserMuteStatus |
移动端用户禁言状态。 |
AppUserCancelStatus |
移动端用户注销状态。 |
PdfExportStatus |
PDF 导出状态。 |
PdfExportTriggerType |
PDF 导出触发类型。 |
PdfExportScope |
PDF 导出范围。 |
BehaviorType |
用户行为类型,包括阅读、下载、分享、AI 提问等。 |
OperationType |
操作日志类型。 |
SysAdminUserStatus |
管理员账号状态。 |
5.4 系统配置
系统配置表 sys_config 保存业务配置项,当前初始化脚本中可见的配置包括:
| 配置项 | 说明 |
|---|---|
ai_daily_limit |
AI 助学每日提问上限。 |
preview_expire_hours |
预览链接有效期。 |
recycle_bin_days |
回收站保留天数。 |
comment_max_length |
评论字数上限。 |
cancel_cooling_days |
用户注销冷静期。 |
pdf_regenerate_delay |
PDF 重新生成延迟。 |
default_password |
用户默认密码配置。 |
app_login_method |
移动端登录方式配置。 |
生产环境中,涉及密码、密钥、数据库、Redis、短信供应商等敏感配置应通过环境变量、密钥管理或安全配置中心注入,不应在文档、日志或代码提交中明文传播。
6. 安全与权限设计
6.1 管理端认证授权
管理端采用 Spring Security + JWT + Redis 活跃会话 + RBAC 权限码:
- 管理员登录成功后生成 JWT。
- 后端将 token 绑定到 Redis 活跃会话。
- 请求进入
AdminJwtAuthenticationFilter。 - 过滤器校验 JWT 签名、
userType=admin和 Redis token 活跃状态。 - 认证通过后加载用户权限码,并写入 Spring Security 上下文。
- Controller 方法通过
@PreAuthorize校验权限码。 - 管理端前端根据权限码过滤路由、菜单和按钮。
管理端前端权限只用于入口控制和用户体验,最终安全边界以后端接口认证与授权为准。
6.2 移动端认证与业务访问控制
移动端采用 JWT + Redis 活跃会话。移动端 token 的 userType 为 app,与管理端 token 隔离。移动端接口主要通过以下规则控制访问:
- 登录态校验:需要用户身份的接口必须携带有效 token。
- 用户状态校验:禁用、注销中、已注销等状态会影响接口访问。
- 禁言校验:评论等互动能力受禁言状态限制。
- 资源归属校验:删除评论、划线标记、阅读记录等仅允许操作本人资源。
- 业务开关校验:评论、评分、下载等能力受电子书配置和系统配置控制。
6.3 移动端接口加密
移动端支持 /app/** 接口应用层加密,方案为 RSA-OAEP + AES-GCM。客户端通过 /app/config/crypto 获取加密配置,每次请求生成一次性 AES key,并用 RSA 公钥加密后放入请求头。请求体、查询参数和响应体使用 AES-GCM 加密,时间戳和 nonce 用于降低重放风险。
详细设计见 doc/mobile-app-crypto-design.md。
6.4 会话、验证码和缓存
Redis 在系统中承担以下职责:
- 管理端和移动端 token 活跃状态绑定与 TTL 刷新。
- 管理端权限码缓存。
- 登录失败、短信验证码等临时状态保存。
- 移动端书刊列表、搜索等读多写少场景的缓存。
6.5 操作审计
系统通过操作日志记录管理端关键操作。操作日志接口支持查询和操作类型查询,权限配置中包含操作日志查看和导出权限。操作日志用于追踪后台管理行为、辅助排查和审计。
7. 接口概要设计
7.1 接口分组
| 分组 | 前缀 | 使用方 | 说明 |
|---|---|---|---|
| 管理端认证 | /admin/auth |
ui-admin |
登录、当前用户、退出登录。 |
| 管理端业务 | /admin/ebooks、/admin/chapters、/admin/contents 等 |
ui-admin |
内容管理、统计、用户、权限和系统配置。 |
| 管理端上传 | /admin/upload |
ui-admin |
文件上传和文档解析。 |
| 管理端预览 | /admin/previews |
ui-admin |
预览链接与审核。 |
| 管理端 PDF | /admin/pdf |
ui-admin |
PDF 导出记录、生成和下载。 |
| 移动端认证 | /app/auth |
ui-mobile |
短信验证码和登录。 |
| 移动端业务 | /app/books、/app/chapters、/app/comments 等 |
ui-mobile |
浏览、阅读、互动、下载、个人中心。 |
| 移动端统计 | /app/stat |
ui-mobile |
PV、行为和外链点击上报。 |
| 移动端配置 | /app/config |
ui-mobile |
加密配置与业务配置查询。 |
| 静态文件 | /files/** |
双端 | 上传文件、PDF、TTS 音频等访问。 |
7.2 返回结构
系统使用公共返回结构封装接口响应,通常包含状态码、消息和数据主体。分页查询使用分页结果结构返回列表、总数、页码和每页数量等信息。
7.3 API 文档
管理端与移动端后端均启用 Knife4j:
| 服务 | API 文档标题 |
|---|---|
dp-admin-web |
数字刊物系统 - 管理端 API |
dp-app-web |
数字刊物系统 - 移动端 API |
8. 关键业务流程
8.1 管理员登录与授权流程
text
管理员提交用户名密码
│
▼
AuthService 校验账号、密码、状态和锁定信息
│
▼
生成管理端 JWT,并绑定 Redis 活跃会话
│
▼
前端保存 token,后续请求携带 Authorization
│
▼
AdminJwtAuthenticationFilter 校验 token 与 Redis 会话
│
▼
加载权限码,写入 Spring Security 上下文
│
▼
@PreAuthorize 校验接口权限
8.2 内容编辑与发布流程
text
创建电子书
│
维护分类、封面、基础信息、下载模式等
│
创建章节树并排序
│
编辑章节内容,保存草稿
│
提交正式内容
│
按需生成 TTS / PDF / 预览链接
│
电子书上架发布
│
移动端用户浏览和阅读
8.3 移动端阅读与统计流程
text
用户打开书刊详情或阅读页
│
▼
移动端路由触发 PV / 阅读统计
│
▼
调用 /app/stat/page-view 或 /app/stat/behavior
│
▼
StatService 异步写入统计表
│
▼
管理端统计接口聚合展示总览、趋势、单书详情和行为数据
8.4 PDF 下载流程
text
管理端生成或导出 PDF
│
▼
PdfService 生成文件并写入 pdf_export_record
│
▼
移动端请求 /app/downloads/{ebookId}
│
▼
服务校验登录态、电子书状态和下载规则
│
▼
返回下载链接并记录下载行为/下载记录
8.5 用户注销流程
text
移动端用户提交注销申请
│
▼
系统记录 cancelStatus 与 cancelTime
│
▼
用户可在冷静期内撤销注销
│
▼
管理端可审核、删除、重新激活或强制下线用户
9. 配置与部署概要
9.1 服务端口
| 服务 | 默认端口 | 说明 |
|---|---|---|
dp-admin-web |
8080 |
管理端后端服务。 |
dp-app-web |
8081 |
移动端后端服务。 |
9.2 数据源与基础配置
管理端和移动端后端均配置 MySQL、Redis、MyBatis-Plus、Knife4j、JWT、文件上传和 TTS 等配置项。配置中的数据库账号、Redis 密码、JWT 密钥、移动端加密私钥、短信密钥等敏感值应通过环境变量注入。
关键配置分组:
| 配置分组 | 说明 |
|---|---|
spring.datasource |
MySQL 连接配置。 |
spring.redis |
Redis 连接配置。 |
jwt |
JWT 签名密钥和 token 过期时间。 |
file |
上传目录、URL 前缀、大小限制和允许文件类型。 |
pdf |
PDF 字体路径等配置。 |
preview |
预览链接基础地址。 |
tts |
TTS 启用状态、模型路径、输出路径、线程池等配置。 |
cms.sms / sms |
短信验证码和供应商配置。 |
app.crypto |
移动端接口加密开关、公私钥、时间窗口等配置。 |
9.3 文件与静态资源
系统默认使用本地文件系统保存上传文件、PDF 文件和 TTS 音频,并通过 /files/** 静态映射访问。生产环境应根据部署方式确认:
- 上传目录是否为持久化磁盘。
- 多实例部署时文件是否需要共享存储或对象存储替代。
- 静态文件 URL 前缀是否与网关、反向代理或 CDN 规则一致。
- 上传文件类型、大小限制和访问权限是否满足生产要求。
10. 非功能设计
10.1 性能设计
- 统计写入使用异步方式,降低移动端主业务接口响应耗时。
- 读多写少的移动端书刊列表和搜索场景存在缓存能力。
- 文件上传和文档解析按业务类型处理,避免非必要处理进入核心业务链路。
- TTS 生成采用异步任务和线程池配置,避免阻塞内容管理接口。
- PDF 生成通过导出记录维护状态,适合异步或后台生成模式。
10.2 可维护性设计
- 后端按公共、模型、Mapper、服务、管理端 Web、移动端 Web 分层拆分。
- 管理端和移动端复用
dp-service业务服务,减少重复逻辑。 - 前端按管理端和移动端独立维护,分别适配后台桌面端和移动端体验。
- 权限、上传、统计、移动端加密已有独立专题设计文档,可作为详细设计补充。
10.3 安全性设计
- 管理端和移动端 token 通过 JWT
userType隔离。 - token 必须同时满足 JWT 签名校验和 Redis 活跃会话校验。
- 管理端接口通过权限码实现后端强制授权。
- 移动端通过用户状态、禁言状态、资源归属和业务开关控制访问。
- 移动端接口可启用应用层加密,保护请求和响应业务数据。
- 上传文件按扩展名和大小限制校验,但当前设计不包含病毒扫描和真实 MIME 嗅探。
10.4 可观测性与审计
- 管理端操作日志用于记录后台关键操作。
- 统计模块采集用户行为、PV、UV、外链点击和下载等运营数据。
- Knife4j 提供接口文档和调试入口。
- 生产环境应结合日志平台、指标监控和告警系统补充运行态观测能力。
11. 已有专题文档
| 文档 | 内容 |
|---|---|
doc/system-permission-design.md |
管理端和移动端权限、认证、会话、RBAC、缓存和风险点。 |
doc/mobile-app-crypto-design.md |
移动端 /app/** 接口传输加解密方案。 |
doc/file-upload-design.md |
文件上传、文档解析、配置和静态资源映射。 |
doc/statistics-design.md |
统计数据采集、存储、聚合和前后端展示。 |
12. 风险与后续建议
| 风险/问题 | 影响 | 建议 |
|---|---|---|
| 部分配置文件存在敏感字段默认值或明文配置痕迹 | 可能造成凭据泄露风险 | 生产环境必须通过环境变量或密钥管理覆盖;仓库中不应继续新增明文凭据。 |
| 文件上传基于扩展名和大小校验 | 无法识别伪装文件或恶意内容 | 生产环境建议增加 MIME 嗅探、病毒扫描、图片重编码或对象存储安全策略。 |
| 本地文件系统存储 | 多实例部署下文件一致性和持久性受限 | 根据部署形态评估共享存储、对象存储或 CDN。 |
| AI 使用记录和 AI 行为统计存在,但未见完整 AI 服务入口 | AI 助学能力边界不清晰 | 如需上线 AI 功能,应补充服务调用、限流、审计和内容安全设计。 |
| 统计数据持续增长 | 长期可能影响查询性能和存储成本 | 建议补充分区、归档、离线聚合或索引优化策略。 |
| JWT、Redis、短信、加密密钥依赖运行环境配置 | 配置错误会影响登录、接口安全和短信能力 | 建议建立环境变量清单、启动前校验和部署检查项。 |
13. 结论
当前系统已具备数字刊物平台的主要业务闭环:管理端负责内容生产、运营管理、权限控制和统计分析;移动端负责读者访问、阅读互动和个人中心;后端通过多模块结构复用业务服务,并结合 MySQL、Redis、JWT、文件系统、PDF、TTS、短信和接口加密能力支撑完整功能。
本概要设计说明书用于系统级理解和交付说明;权限、接口加密、文件上传和统计等模块的详细规则应以对应专题设计文档和当前代码实现为准。