# dacheng-reading **Repository Path**: xtmpfc/dacheng-reading ## Basic Information - **Project Name**: dacheng-reading - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-10 - **Last Updated**: 2026-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业书籍共读小程序 企业成员一起书籍共读、打卡,企业管理员管控阅读记录、查看阅读进度。支持**上传书籍(epub/mobi/txt/md)后全员在 App 内真正在线阅读**,阅读进度自动记录、自动打卡。 ## 功能特性 ### 成员功能 - 📚 浏览共读书籍列表 - 📖 **在线阅读**:在 App 内阅读整本书(章节目录、上一章/下一章、字体调节、夜间模式) - ⏰ 阅读即打卡:进入阅读器阅读,进度自动保存并自动完成当日打卡 - 📊 查看个人阅读进度(按章节 + 百分比) ### 管理员功能 - ➕ 上传新书籍(**支持上传 epub / mobi / txt / md 文件,自动解析正文成章节**) - 📖 **一键导入示例书籍**:内置《乌合之众》《万历十五年》《社会心理学》《大国崛起》4 本完整书籍 - 📊 查看所有成员的阅读进度(章节 + 百分比 + 最近阅读时间,按进度排序) - 👥 成员管理(设为管理员、移除成员) - ❌ 删除书籍(级联删除章节) ## 项目结构 ``` 企业书籍共读小程序/ ├── app.js / app.json / app.wxss # 入口 / 全局配置 / 全局样式 ├── pages/ │ ├── index/ # 首页(书籍列表 + 个人进度) │ ├── book-detail/ # 书籍详情(开始阅读 + 进度) │ ├── reader/ # ★ 阅读器(章节阅读/目录/进度保存) │ ├── clock-in/ # 打卡 │ ├── reading-progress/ # 个人阅读进度 │ └── admin/ │ ├── upload-book/ # 上传书籍(支持上传书籍文件) │ ├── manage-books/ # 书籍管理 + 一键导入示例书籍 │ ├── manage-members/ # 成员管理 │ └── view-progress/ # 查看全员进度 ├── components/ # book-card / progress-bar / clock-btn ├── cloudfunctions/ │ ├── getBooks/ # 书籍列表/详情/删除(级联删章节) │ ├── uploadBook/ # ★ 上传书籍 + 解析 epub/mobi/txt/md(jszip + 纯JS PalmDOC解压) │ ├── importBooks/ # ★ 一键导入内置 4 本示例书籍 │ ├── getBookContent/ # ★ 阅读器取章节内容/目录 │ ├── saveProgress/ # ★ 保存阅读进度 + 自动打卡 │ ├── clockIn/ # 手动打卡 │ ├── getProgress/ # 个人/全员进度(章节+百分比) │ ├── manageMembers/ # 成员管理 │ └── getRecords/ # 打卡记录 ├── books-content/ # 已解析好的 4 本示例书籍 JSON + 封面 └── tools/ # 本地解析/测试/数据生成脚本 ``` ## 数据库集合 | 集合名 | 说明 | 主要字段 | |--------|------|----------| | `books` | 书籍表 | title, author, publisher, totalPages, description, coverUrl, format, **hasContent, chapterCount, totalChars, chapters[]**, createTime, createBy, clockInCount | | `book_chapters` | ★ 章节内容表 | bookId, index, title, content, charCount, createTime | | `members` | 成员表 | openid, nickName, avatarUrl, department, role, createTime | | `admins` | 管理员表 | openid, createTime | | `clock_records` | 打卡记录 | openid, bookId, page, date, source, createTime | | `reading_progress` | 阅读进度 | openid, bookId, currentPage, **chapterIndex, progressPercent, readChars, lastReadAt**, lastClockDate, clockDays, createTime | ## 部署步骤 ### 1. 创建云开发环境 - 在微信公众平台开通云开发 - 将 `app.js` 中的 `env` 替换为你的环境 ID ### 2. 创建数据库集合 在云开发控制台创建集合: - `books`、`book_chapters`(新增)、`members`、`admins`、`clock_records`、`reading_progress` ### 3. 上传云函数 对以下每个云函数右键 → 「上传并部署:云端安装依赖」: - `getBooks`、`uploadBook`、`importBooks`、`getBookContent`、`saveProgress`、`clockIn`、`getProgress`、`manageMembers`、`getRecords`、`initAdmin` - 说明:`uploadBook` 依赖 `jszip`,`importBooks` 内含约 3MB 的示例书籍数据(首次部署稍慢属正常) ### 4. 设置权限 云开发控制台 → 数据库 → 集合权限:所有用户可读,仅创建者可写(数据读写主要走云函数,权限可收紧)。 ### 5. 添加管理员 两种方式: - 方式 A:小程序内 → 管理 Tab → 「一键设为管理员」 - 方式 B:手动在 `admins` 集合添加:`{ "openid": "你的openid", "createTime": "..." }` ### 6. 导入示例书籍(可选,推荐) 管理员在「管理」页 → 「导入示例书籍」,一键导入 4 本完整书籍,立即可在线阅读。 ### 7. 上传自己的书 管理员在「管理」页 → 「上传新书」→ 选择书籍文件(**epub / mobi / txt / md**)→ 系统自动解析章节;也可仅填写元数据(无正文,只能手动打卡)。 ### 8. 配置小程序 - 在 `project.config.json` 填入你的 `appid` - 在微信开发者工具导入项目 ## 权限说明 - 任何人进入小程序即成为成员(自动注册) - 仅 `admins` 集合中的用户拥有管理员权限 - 有正文的书籍(`hasContent=true`)在详情页/打卡页显示「开始阅读」,阅读即自动打卡;无正文的书籍保留手动打卡 ## 技术栈 - 微信小程序原生框架 - 微信云开发(云函数 + 数据库 + 文件存储) - 书籍解析:本地 Python 工具(`tools/prepare_books.py`)+ 云端 Node `jszip`(epub)