# Thinker
**Repository Path**: joelive/thinker
## Basic Information
- **Project Name**: Thinker
- **Description**: Thinker 开源、轻量、高效的在线答题小程序系统、Uniapp题库源码
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 35
- **Created**: 2025-12-13
- **Last Updated**: 2025-12-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Thinker 开源、轻量、高效的在线答题与网课学习小程序 (Uniapp版本) 🚀

---
## 项目演示 📸
为了帮助你快速了解 **Thinker** 的功能和界面设计,我们准备了一些关键的演示:
### 扫描微信小程序码,体验在线答题与网课学习系统
### 题库首页
### 题库搜索界面
### 考试类型选择界面
### 题库选择界面
### 答题页面
### 答题结果页面
### 网课详情页面
### 会员中心页面
---
## 一、项目简介 📚
**Thinker** 是一款开源的在线答题与网课学习系统,旨在为学习者和开发者提供一个轻量、高效且易于扩展的学习平台。它通过简洁的设计和强大的功能,满足学生备考、职场技能提升以及教育机构的需求。Thinker 采用现代化的技术栈构建,支持多平台部署,致力于推动教育公平和技术共享。
---
## 二、项目特色 🌟
### (一)轻量设计
- **无冗余代码**:采用精简的架构,去除不必要的功能模块,确保系统高效运行。
- **低资源占用**:即使在性能有限的服务器上也能轻松部署,适合多种运行环境。
- **快速部署**:支持一键部署,无论是本地开发环境还是云服务器,都能快速启动。
### (二)高效体验
- **智能题库管理**:支持多学科、多题型的题库管理,题目按难度和知识点分类,方便用户筛选和练习。
- **实时反馈与解析**:用户提交答案后,系统立即显示正确答案和详细解析,帮助用户及时巩固知识点。
- **错题回顾与强化**:自动记录错题,支持错题集功能,用户可以随时回顾并强化薄弱知识点。
- **后台导入题库**:支持通过 Excel 文件批量导入题库,方便管理员快速初始化和更新题库内容。
- **在线网课学习**:支持在线视频课程播放、课程进度记录、笔记功能,提供完整的网课学习体验。
### (三)开源与灵活
- **完全开源**:采用开源协议,开发者可以自由查看、修改和分发代码。
- **高度可定制**:支持自定义题库、网课内容、界面风格和功能模块,开发者可以根据需求进行二次开发。
- **社区支持**:提供活跃的开源社区,开发者可以在这里交流经验、解决问题。
---
## 三、技术架构 💻
### (一)前端
- **框架**:基于 **uni-app** 和 **Vue 2.0** 开发,支持微信小程序、H5页面、APP等多种运行环境,实现一次开发、多端部署。
- **性能优化**:利用 Vue 2.0 的响应式数据绑定和组件化开发,确保页面加载速度快、交互流畅。
- **视频播放**:集成高效的视频播放组件,支持多种格式视频流,保证网课播放流畅稳定。
### (二)后端
- **语言**:使用 **PHP 7.4** 开发,具备高性能和良好的兼容性。
- **数据库**:支持 **MySQL**,满足系统数据存储需求。
- **搜索引擎**:集成 **Elasticsearch**,提供全文搜索功能,提升题库与课程检索效率。
- **缓存**:使用 **Redis** 缓存系统,优化数据读取速度,提升用户体验。
### (三)部署
- **容器化**:支持 Docker 容器化部署,一键启动,方便开发和运维。
#### 1. Docker部署方式
```
# 进入docker目录
cd docker
# 启动所有服务
docker-compose up -d
```
启动后可通过Nginx反向代理访问:
- http://127.0.0.1:7474
如需设置域名访问,可在hosts文件中添加以下内容:
```
127.0.0.1 api.com
127.0.0.1 admin.com
```
或者使用宝塔面板等工具设置反向代理,代理地址分别为:
- API服务: http://127.0.0.1:7474 (对应域名 api.com)
- Admin服务: http://127.0.0.1:7474 (对应域名 admin.com)
设置反向代理时请确保携带Host头信息,以确保Nginx容器能正确路由请求到对应的后端服务。
#### 2. 原生部署方式
原生部署方式需要分别部署API和Admin两个项目:
- **API项目**:将 [api](file://D:\www\thinker\docker\nginx\conf.d\api.conf) 目录作为 ThinkPHP 6 项目进行部署
- **Admin项目**:将 [admin](file://D:\www\thinker\docker\nginx\conf.d\admin.conf) 目录作为 ThinkPHP 5 项目进行部署
- **数据库**:导入 [db/install.sql](file://D:\www\thinker\db\install.sql) 文件初始化数据库
无论使用哪种部署方式,都强烈建议使用 [Gitee发行版本](https://gitee.com/392223903/thinker/releases) 来运行,以确保代码与数据库结构匹配,避免因代码库更新速度快于 SQL 脚本更新导致的启动问题。
---
## 四、开源协议 📜
**Thinker** 采用 **Apache License 2.0** 开源协议。您可以自由使用、修改和分发代码,但需遵守协议条款。Apache License 是一种宽松的开源协议,允许您在商业项目中使用本项目代码,同时保留原作者的版权声明。
---
## 五、开源计划 📦
**Thinker** 的代码包含以下部分:
- **前端代码**:基于 uni-app 和 Vue 2.0 开发的用户界面代码,支持多平台运行。【已开源】
- **接口服务**:提供前后端交互的接口代码,支持高效的数据传输和交互。【已开源】
- **后台管理**:用于管理题库、网课、用户、权限等功能的后台管理代码【已开源】
- **数据结构**:用于初始化数据库的 SQL 脚本,帮助快速搭建数据库环境。【已开源】
由于开发团队人力有限,代码将**分批开源**。我们会逐步开放前端代码、后台管理系统代码、API 接口代码以及 SQL 初始化脚本。我们将尽力加快开源进度,感谢您的理解与支持!
---
## 六、开源目标 🎯
1. **推动知识共享**:通过开源,让更多人能够免费使用和学习 Thinker,降低学习门槛。
2. **促进技术交流**:欢迎开发者参与项目贡献,共同完善代码、修复漏洞、优化功能。
3. **助力教育公平**:开源项目可以被自由使用和二次开发,让更多人受益于优质的教育资源。
---
## 七、如何参与 🤝
### (一)项目部署
#### 1. 获取项目代码
- **推荐方式**:通过 Gitee 发行版下载稳定版本
```bash
# 访问 Gitee 发行版页面下载最新稳定版本
https://gitee.com/392223903/thinker/releases
```
> 注意:推荐使用发行版下载代码,确保代码与数据库结构匹配,避免因代码库更新速度快于 SQL 脚本更新导致的启动问题
- **备选方式**:如需最新开发版本,可克隆代码库(风险自负)
```bash
git clone https://gitee.com/392223903/thinker.git
```
#### 2. 环境要求
- PHP 7.4+
- MySQL 5.7+
- Redis 7.4+
- Elasticsearch 8.15.0+(可选,用于全文搜索功能)
#### 3. 后端部署
- 配置数据库连接(修改 `api/config/database.php` 文件)
- 导入初始化SQL脚本(使用 `db/install.sql`)
- 启动后端服务:`php think run`
- 启动定时任务:`php think task start`
#### 4. 前端部署
- 根据uni-app官方文档进行相应平台的部署
### (二)Docker部署
#### 1. 环境要求
- Docker
- Docker Compose
#### 2. 部署步骤
- 构建并启动容器:
```bash
docker-compose up -d
```
- 添加以下条目到hosts文件:
```
127.0.0.1 api.cn
127.0.0.1 admin.cn
```
* Windows系统:编辑 `C:\Windows\System32\drivers\etc\hosts`
* macOS/Linux系统:编辑 `/etc/hosts`
- 访问应用:
* API: http://api.cn:7474
* Admin: http://admin.cn:7474
#### 3. Docker环境详情
- PHP 7.4 环境已配置以下扩展:
* pdo_mysql、mysqli、mbstring、exif、pcntl
* bcmath、gd、opcache、zip、sockets
* calendar、soap、intl、fileinfo、redis、igbinary
- 包含服务:
- Nginx (端口 7474)
- Redis
- PHP-FPM
#### 4. 故障排查
如遇问题,请检查日志:
```bash
docker-compose logs
```
访问容器shell:
```bash
docker-compose exec thinker bash
```
### (三)贡献代码
- **提交问题**:在开源仓库的 Issues 页面提交问题或改进建议。
- **贡献代码**:按照贡献指南提交 Pull Request,帮助完善项目。
- **参与讨论**:加入开源社区,与其他开发者交流经验。
### (四)反馈与建议
- **社区交流**:加入我们的 QQ 群 💬 777241713 或通过邮箱 📧 392223903@qq.com 与我们联系,我们将及时回复。
---
## 八、商业支持 💼
如果您需要更专业的技术支持和定制化服务,我们提供以下商业支持方案:
### (一)功能定制开发
- **个性化需求**:根据您的具体业务需求,定制开发专属功能模块
- **界面定制**:个性化UI设计,打造符合品牌特色的用户界面
- **功能扩展**:在现有功能基础上,扩展更多实用功能
- **第三方集成**:集成支付、短信、邮件等第三方服务
### (二)运维技术支持
- **部署服务**:提供专业的系统部署和配置服务
- **性能优化**:系统性能调优,提升用户体验
- **安全加固**:系统安全评估和加固,保障数据安全
- **故障排查**:快速响应,及时解决系统运行中的问题
- **定期维护**:提供定期系统维护和更新服务
### (三)联系我们
- **微信咨询**:skr-web(请备注来意:功能定制/运维支持)
- **邮箱联系**:📧 392223903@qq.com
- **QQ交流群**:💬 777241713
> 💡 **温馨提示**:商业支持服务将根据项目复杂度和工作量进行合理定价,我们承诺提供专业、高效的技术服务,助力您的项目成功上线和稳定运行。
---
## 九、常见问题解答 ❓
### (一)部署版本选择
**Q: 我部署的时候应该用哪个版本?**
**A:** 强烈建议使用 **发行版本** 进行部署,而不是直接使用 master 分支的最新代码。
**原因说明:**
- **稳定性保障**:发行版本经过完整测试,代码与数据库结构完全匹配
- **数据库同步**:master 分支的数据库结构更新可能不及时,直接使用容易导致部署失败
- **完整性保证**:发行版本包含完整的代码和数据库脚本,确保系统能够正常启动运行
**推荐做法:**
访问 [Gitee 发行版页面](https://gitee.com/392223903/thinker/releases) 下载最新的稳定发行版本。
### (二)版本更新频率
**Q: 发行版本多久更新一次?**
**A:** 发行版本的更新采用 **商业化反哺社区** 的模式。
**更新机制:**
- 每次有商业客户购买源码时,我们会整理和清理项目数据
- 移除客户相关的私有数据,保留基础功能数据
- 同步更新数据库结构至最新状态
- 发布新的发行版本供社区使用
**特点:**
- **质量保证**:每个发行版本都经过商业项目验证
- **功能完善**:包含最新的功能特性和数据库结构
- **数据清理**:确保发布的代码和数据适合公开使用
### (三)后台登录信息
**Q: 后台的账号密码是多少?后台地址是什么?**
**A:**
**默认登录信息:**
- **账号**:`admin`(小写)
- **密码**:`123456`(小写)
**后台地址:**
后台地址由 `admin/public` 目录中的 PHP 入口文件决定,通常是 `域名/admin.php` 或类似格式。
**重要说明:**
- FastAdmin 框架的后台路径由 public 目录中的入口 PHP 文件名称决定(如 admin.php)
- 后台路径支持自定义配置,可根据安全需求修改入口文件名
- 为了安全考虑,建议部署后修改默认账号密码和后台入口路径
- 不同环境下后台路径可能有所不同,请根据实际部署情况访问
**安全建议:**
- 首次登录后请立即修改默认密码
- 定期更新密码,确保系统安全
- 合理配置后台访问权限