# budaos-monolith
**Repository Path**: ossbar/budaos-monolith
## Basic Information
- **Project Name**: budaos-monolith
- **Description**: 布道师学习通教学实训云平台/服务端:向电脑端门户和教务管理端提供统一API服务
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: http://www.budao.com
- **GVP Project**: No
## Statistics
- **Stars**: 206
- **Forks**: 33
- **Created**: 2022-09-19
- **Last Updated**: 2026-04-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: SpringCloud, MyBatis, Dubbo, SpringSecurity, Shiro
## README
# BudaOS Monolith
[](LICENSE)
[](https://adoptium.net/)
[](https://spring.io/projects/spring-boot)
[](https://www.mysql.com/)
**BudaOS Monolith** 是布道师学习平台的单体架构开源版本,采用经典三层架构设计,为教育机构提供完整的企业级在线教学解决方案。
*100% 源代码开放 | 开箱即用 | 易于二次开发*
[](https://www.budaos.com)
[](#支持我们)
---
## 项目简介
BudaOS Monolith 是一个功能完备的在线学习管理平台(LMS),集成了教学管理、在线课堂、活动管理、社区互动、即时通讯等核心功能。系统采用前后端分离的架构设计,后端基于 Spring Boot 2.7 构建,支持快速部署和灵活扩展。
### 核心特性
- **模块化设计**:清晰的分层架构,易于维护和扩展
- **功能完备**:涵盖教学全流程,从课程管理到在线考试
- **社交学习**:内置社区论坛、即时通讯、学习圈
- **多端支持**:配套小程序、移动端 Web
- **安全可靠**:基于 Spring Security 的认证授权体系
- **实时交互**:WebSocket 支持实时课堂和消息推送
---
## 技术架构
### 技术栈
| 类别 | 技术选型 |
|------|----------|
| 基础框架 | Spring Boot 2.7.18 |
| 持久层 | MyBatis 2.3 + PageHelper 1.4 |
| 数据库 | MySQL 8.0 + Druid 连接池 |
| 缓存 | Redis (Session 存储) |
| 安全 | Spring Security + OAuth2 |
| 实时通信 | T-io WebSocket |
| 消息队列 | RabbitMQ / Redis MQ |
| 任务调度 | Quartz |
| API 文档 | Swagger 3.0 (SpringFox) |
| 微信生态 | weixin-popular SDK |
| 构建工具 | Maven |
### 项目结构
```
budaos-monolith/
├── budaos-parent/ # 父模块,统一定义依赖版本
│ └── pom.xml
├── budaos-common/ # 公共模块
│ └── src/main/java/ # 工具类、配置类、Domain实体
├── budaos-service/ # 服务模块
│ └── src/main/java/ # 业务服务实现、Mapper
├── budaos-web/ # Web模块
│ └── src/main/java/ # REST控制器
├── budaos-application/ # 应用模块(启动入口)
│ └── src/main/resources/ # 配置文件
├── database/ # 数据库脚本
│ └── db.sql
└── pom.xml # 项目根 POM
```
### 模块说明
| 模块 | 说明 |
|------|------|
| `budaos-parent` | 统一管理依赖版本、插件配置、公共属性 |
| `budaos-common` | 公共代码:工具类、枚举、常量、Domain实体、配置类 |
| `budaos-service` | 业务逻辑层:Service实现、Mapper接口、Mapper XML、定时任务 |
| `budaos-web` | 控制器层:REST API、拦截器、安全配置 |
| `budaos-application` | 应用打包模块,包含主启动类和配置 |
---
## 功能模块
### 教学管理
- **课堂管理**:创建/管理虚拟教室,设置课程表
- **活动管理**:支持签到、头脑风暴、投票问卷、问答讨论、课后作业、在线测试等多种教学活动
- **资源管理**:课程资源上传下载、云盘文件管理
- **成绩管理**:学生评分、作业批改
### 社区互动
- **博客论坛**:文章发布、评论互动、点赞收藏
- **好友系统**:关注好友、学习圈
- **即时通讯**:私信聊天、群组讨论(WebSocket 实时推送)
### 平台管理
- **用户管理**:教师/学生账号管理、第三方登录
- **微信集成**:微信登录、素材管理、消息推送
- **系统配置**:数据字典、站点设置、SEO优化
### 开发支持
- **API 文档**:Swagger UI 自动生成
- **日志管理**:统一日志记录、异常追踪
- **定时任务**:灵活的 Cron 表达式配置
---
## 快速开始
### 环境要求
| 软件 | 版本要求 | 说明 |
|------|----------|------|
| JDK | 1.8+ | 推荐 OpenJDK 11 |
| MySQL | 8.0+ | 支持 5.7+ |
| Redis | 3.0+ | 用于缓存和 Session |
| Maven | 3.0+ | 构建工具 |
### 部署步骤
#### 1. 准备数据库
```bash
# 登录 MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE budaos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 导入数据脚本
USE budaos;
SOURCE database/db.sql;
```
#### 2. 配置 Redis
确保 Redis 服务已启动,默认配置:
- 端口:6379
- 密码:在 `application.yml` 中配置
#### 3. 修改配置文件
编辑 `budaos-application/src/main/resources/application.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/budaos?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
redis:
host: your_redis_host
password: your_redis_password
```
#### 4. 构建项目
```bash
# 进入项目目录
cd budaos-monolith
# Maven 打包(跳过测试)
mvn clean package -DskipTests
```
#### 5. 启动服务
```bash
# Windows 环境
.\start.bat
# Linux/Mac 环境
java -jar budaos-application/target/budaos-monolith.jar --spring.profiles.active=dev
```
#### 6. 访问系统
启动成功后访问:
- 访问地址:http://localhost:9080
- Swagger 文档:http://localhost:9080/swagger-ui/index.html
---
## 默认账号
| 角色 | 账号 | 密码 |
|------|------|------|
| 管理员 | admin | 888888 |
| 教师 | 15886345118 | 123456 |
| 学生 | 18229962587 | 123456 |
> ⚠️ **注意**:首次使用请及时修改默认密码
---
## 配置说明
### 核心配置项
```yaml
server:
port: 9080 # 服务端口
spring:
datasource:
url: jdbc:mysql://... # 数据库连接
redis:
host: localhost # Redis 主机
port: 6379 # Redis 端口
com.budaos:
file-upload-path: /uploads # 文件上传路径
is-cors: true # 是否允许跨域
captcha-enabled: true # 验证码开关
```
### 微信配置
```yaml
# 第三方登录配置
com.budaos:
wxAppId: your_wx_appid # 微信 AppID
wxAppKey: your_wx_appkey # 微信 AppKey
```
---
## 开发指南
### 项目规范
1. **命名规范**
- Service 接口:`XxxService.java`
- Service 实现:`XxxServiceImpl.java`
- Mapper 接口:`XxxMapper.java`
- 控制器:`XxxController.java`
2. **分层结构**
```
Controller → Service → Mapper → Database
(处理请求) (业务逻辑) (数据访问) (存储数据)
```
3. **返回值规范**
- 使用统一返回类 `R`,包含 code、msg、data 字段
- 成功:`R.ok()` 或 `R.ok(data)`
- 失败:`R.error(msg)` 或 `R.error(code, msg)`
### API 开发示例
```java
@RestController
@RequestMapping("/api/example")
public class ExampleController {
@Autowired
private ExampleService exampleService;
@GetMapping("/list")
public R list(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
PageInfo page = exampleService.getPage(pageNum, pageSize);
return R.ok().put("data", page);
}
@PostMapping("/save")
public R save(@RequestBody Example example) {
exampleService.save(example);
return R.ok("保存成功");
}
}
```
### 添加新模块
1. 在 `budaos-common` 中添加 Domain 实体
2. 在 `budaos-service` 中添加 Mapper 和 Service
3. 在 `budaos-web` 中添加 Controller
4. 在 `database` 中添加对应的建表 SQL
---
## 常见问题
### Q: 启动报错 "Cannot connect to Redis"?
检查 Redis 服务是否启动,配置是否正确。
### Q: 文件上传失败?
1. 检查 `file-upload-path` 配置的目录是否存在
2. 确保目录有写入权限
### Q: 微信登录不生效?
配置微信开放平台的应用凭证(AppID 和 AppKey)
---
## 商业合作
如果您需要更强大的企业级功能,我们提供**原生微服务架构版本**,为您的业务增长提供坚实的技术底座。
### 微服务版本优势
| 对比项 | 开源单体版 | 商业微服务版 |
|--------|-------|-------------|
| 架构模式 | 单体架构 | 微服务架构(10+ 独立服务) |
| 部署方式 | 单机部署 | 集群/K8S 部署 |
| 扩展能力 | 垂直扩展 | 水平扩展,按需扩容 |
| 性能上限 | 千人级并发 | 十万级并发支持 |
| 运维成本 | 较低 | 自动化运维,持续集成 |
| 技术支持 | 社区支持 | 7×24 专业技术支持 |
| 功能更新 | 社区迭代 | 持续功能迭代,优先体验 |
| 数据安全 | 基础防护 | 企业级安全加固 |
### 技术栈对比
| 技术组件 | 开源版 | 微服务版 |
| -------- | ------ | -------- |
| **Java** | 1.8+ | 21 (LTS,支持到2031年) |
| **基础框架** | Spring Boot 2.7 | Spring Boot 3.5.10 |
| **微服务框架** | — | Spring Cloud 2025.0.1 |
| **微服务生态** | — | Spring Cloud Alibaba 2025.0.0.0 |
| **服务注册/配置** | — | Nacos 2.4.3 |
| **持久层** | MyBatis 2.3 | MyBatis Plus 3.5.7 |
| **数据库** | MySQL 8.0 | MySQL 8.0 / PostgreSQL |
| **缓存** | Redis | Redisson 3.50.0 |
| **安全框架** | Spring Security | Sa-Token 1.44.0 (轻量级) |
| **熔断降级** | — | Sentinel 1.8.8 |
| **分布式事务** | — | Seata 2.0.0 |
| **连接池** | Druid 1.2.25 | Druid 1.2.25 |
| **API 文档** | Swagger 3.0 | Knife4j 4.5.0 |
| **工具库** | Hutool | Hutool 5.8.39 |
> 💡 **微服务版采用 2024-2025 最新技术栈,性能更强、特性更多、生命周期更长**
### 商业版核心能力
- **弹性伸缩**:基于容器化部署,支持自动扩缩容,轻松应对流量高峰
- **高可用架构**:多副本部署、熔断降级、故障自动恢复,保障业务连续性
- **DevOps 流水线**:自动化构建、测试、部署,提升研发效率
- **全链路监控**:APM 链路追踪、日志聚合、告警通知
- **数据中台**:统一数据治理,BI 分析报表,用户行为洞察
- **私有化部署**:支持完全私有化,数据自主可控
- **定制开发**:根据业务需求深度定制,快速交付
### AI 智能教育(核心亮点)
微服务版本深度集成 **AI 大模型**能力,赋能教育全场景:
| AI 功能 | 说明 |
|---------|------|
| **智能出题** | 根据知识点自动生成选择题、填空题、简答题,支持难度分级 |
| **AI 阅卷** | 客观题自动批改,主观题 AI 辅助评分,准确率高达 95%+ |
| **智能辅导** | 24小时 AI 问答助手,个性化学习路径推荐,因材施教 |
| **教材生成** | 一键生成教学大纲、教案、课件,解放教师双手 |
| **学情分析** | AI 分析学习数据,生成学生画像,预警学习困难 |
| **智能排课** | 基于 AI 算法优化排课方案,提升教室资源利用率 |
| **内容审核** | 自动审核违规内容,营造健康学习环境 |
| **多模态支持** | 支持图文、音频、视频等多种格式的 AI 问答 |
> 🚀 **AI 加持,让教育更智能、更高效、更公平**
### 服务内容
- 源码授权(永久使用)
- 架构设计咨询
- 部署实施指导
- 技术培训服务
- 持续版本升级
- 专属技术支持
> 📞 **有意向?请联系我们获取详细的解决方案和报价**
>
> 官网:www.budaos.com | 邮箱:contact@budaos.com
>
>
>

>
---
## 支持我们
开源不易,如果这个项目对您有帮助,欢迎通过以下方式支持我们:
### 捐赠方式
| 方式 | 说明 |
|------|------|
| ☕ 喝杯咖啡 | 一杯咖啡,一份鼓励 |
| 💝 任意打赏 | 量力而行,感恩有你 |
> 捐赠时请备注「BudaOS 开源支持」,您的名字将出现在[致谢名单](SUPPORTERS.md)中(可选)。
### 感谢每一份支持
您的每一份捐赠都是对我们最大的鼓励,让我们能够持续维护和迭代开源项目,为社区提供更好的教育资源平台。
---
## 开源协议
本项目采用 [Apache License 2.0](LICENSE) 开源协议。
- 可免费用于个人和商业项目
- 需要保留版权声明
- 禁止直接使用本项目进行商业牟利(需获得授权)
---
## 参与贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add AmazingFeature'`)
4. 推送分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
---
## 联系方式
- **官网**:https://www.budaos.com
- **邮箱**:contact@budaos.com
- **社区**:https://www.ossbar.com
---
**如果这个项目对您有帮助,欢迎 Star!**