268 lines
7.4 KiB
Markdown
268 lines
7.4 KiB
Markdown
# 校园思政新闻平台
|
||
|
||
> 基于Spring Boot 3.x + MyBatis Plus + MySQL的校园思政学习管理系统
|
||
|
||
## 📖 项目简介
|
||
|
||
校园思政新闻平台是一个集资源管理、课程学习、任务管理、智能问答于一体的综合性思政学习平台,支持多部门、多角色的细粒度权限控制。
|
||
|
||
## ✨ 核心功能
|
||
|
||
### 🔐 基础模块
|
||
- **用户管理**: 用户信息、登录认证、权限管理
|
||
- **组织管理**: 部门层级、角色分配、权限配置
|
||
- **菜单管理**: 动态菜单、权限关联
|
||
|
||
### 📰 资源模块
|
||
- **资源管理**: 新闻文章发布、编辑、分类
|
||
- **Banner管理**: 轮播图配置、排序、跳转链接
|
||
- **资源推荐**: TOP资源配置、排序调整
|
||
- **标签管理**: 标签创建、资源标签关联
|
||
- **数据采集**: 自动采集配置、采集日志
|
||
|
||
### 🎓 课程模块
|
||
- **课程管理**: 课程创建、编辑、状态管理
|
||
- **章节管理**: 课程章节、内容编辑、视频上传
|
||
- **权限控制**: 基于部门/角色的课程访问权限
|
||
|
||
### 📚 学习模块
|
||
- **任务管理**: 学习任务创建、人员分配、进度跟踪
|
||
- **学习记录**: 详细的学习行为记录
|
||
- **学习统计**: 多维度学习数据统计分析
|
||
|
||
### 👤 个人中心
|
||
- **我的收藏**: 资源/课程收藏管理
|
||
- **成就系统**: 学习成就、勋章、等级
|
||
- **积分系统**: 积分获取、消费记录
|
||
- **学习记录**: 个人学习数据可视化
|
||
|
||
### 🤖 智能体
|
||
- **AI对话**: 基于知识库的智能问答
|
||
- **知识库**: 知识库管理、内容维护
|
||
- **文件问答**: 上传文件进行智能解读
|
||
- **对话历史**: 历史对话记录管理
|
||
|
||
## 🏗️ 技术架构
|
||
|
||
### 后端技术栈
|
||
- **框架**: Spring Boot 3.5.6
|
||
- **微服务**: Spring Cloud 2025.0.0
|
||
- **ORM**: MyBatis Plus 3.5.14
|
||
- **数据库**: MySQL 8.0+
|
||
- **缓存**: Redis 6.0+ (可选)
|
||
- **认证**: JWT
|
||
- **日志**: Log4j2
|
||
|
||
### 前端技术栈 (规划中)
|
||
- Vue 3
|
||
- Element Plus
|
||
- Axios
|
||
- Echarts
|
||
|
||
## 📦 项目结构
|
||
|
||
```
|
||
school-news/
|
||
├── admin/ # 管理后台入口 (8080)
|
||
├── api/ # API接口定义
|
||
│ ├── api-all/ # 全部API聚合
|
||
│ ├── api-auth/ # 认证API
|
||
│ ├── api-system/ # 系统管理API
|
||
│ ├── api-course/ # 课程API 🆕
|
||
│ ├── api-learning/ # 学习API 🆕
|
||
│ ├── api-usercenter/ # 个人中心API 🆕
|
||
│ └── api-ai/ # 智能体API 🆕
|
||
├── auth/ # 认证服务 (8082)
|
||
├── system/ # 系统管理 (8081)
|
||
├── news/ # 资源管理 (8087)
|
||
├── course/ # 课程管理 (8083) 🆕
|
||
├── learning/ # 学习管理 (8084) 🆕
|
||
├── usercenter/ # 个人中心 (8085) 🆕
|
||
├── ai/ # 智能体 (8086) 🆕
|
||
├── common/ # 公共模块
|
||
│ ├── common-all/ # 全部依赖聚合
|
||
│ ├── common-annotation/ # 注解
|
||
│ ├── common-core/ # 核心工具
|
||
│ ├── common-dto/ # 数据传输对象
|
||
│ ├── common-exception/ # 异常处理
|
||
│ ├── common-jdbc/ # JDBC配置
|
||
│ ├── common-redis/ # Redis配置
|
||
│ └── common-util/ # 工具类
|
||
├── .bin/ # 工具脚本
|
||
│ └── mysql/ # 数据库脚本
|
||
│ ├── init-database.bat/sh # 初始化脚本
|
||
│ └── sql/ # SQL文件
|
||
└── .doc/ # 项目文档
|
||
```
|
||
|
||
## 🗄️ 数据库设计
|
||
|
||
### 数据库统计
|
||
- **总表数**: 50张表
|
||
- **用户管理**: 3张表
|
||
- **权限管理**: 9张表(含统一权限表)
|
||
- **资源管理**: 8张表
|
||
- **课程管理**: 3张表
|
||
- **学习管理**: 6张表
|
||
- **个人中心**: 6张表
|
||
- **智能体**: 6张表
|
||
- **系统管理**: 8张表
|
||
|
||
### 核心表
|
||
- `tb_sys_user` - 用户表
|
||
- `tb_resource_permission` - 统一资源权限控制表 ⭐
|
||
- `tb_resource` - 资源/新闻表
|
||
- `tb_course` - 课程表
|
||
- `tb_learning_task` - 学习任务表
|
||
- `tb_user_collection` - 用户收藏表
|
||
- `tb_ai_conversation` - AI对话表
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 环境准备
|
||
```bash
|
||
# 需要
|
||
JDK 21+
|
||
Maven 3.8+
|
||
MySQL 8.0+
|
||
|
||
# 可选
|
||
Redis 6.0+
|
||
```
|
||
|
||
### 2. 克隆项目
|
||
```bash
|
||
git clone <repository-url>
|
||
cd schoolNewsServ
|
||
```
|
||
|
||
### 3. 初始化数据库
|
||
```bash
|
||
# Windows
|
||
cd .bin/mysql
|
||
init-database.bat
|
||
|
||
# Linux/Mac
|
||
cd .bin/mysql
|
||
chmod +x init-database.sh
|
||
./init-database.sh
|
||
```
|
||
|
||
### 4. 修改配置
|
||
修改各模块的 `application.yml`:
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
url: jdbc:mysql://localhost:3306/school_news
|
||
username: root
|
||
password: your_password
|
||
```
|
||
|
||
### 5. 编译运行
|
||
```bash
|
||
# 编译
|
||
mvn clean install
|
||
|
||
# 运行(根据需要启动)
|
||
cd admin
|
||
mvn spring-boot:run
|
||
```
|
||
|
||
### 6. 访问系统
|
||
- 管理后台: http://localhost:8080
|
||
- 默认账号: admin
|
||
- 默认密码: 见 `.bin/mysql/sql/createTableUser.sql`
|
||
|
||
## 📚 文档目录
|
||
|
||
### 快速入门
|
||
- [快速开始](.doc/快速开始.md) - 项目启动指南
|
||
- [模块创建进度](.doc/模块创建进度.md) - 当前开发进度
|
||
|
||
### 开发文档
|
||
- [模块创建完整指南](.doc/模块创建完整指南.md) - 详细开发指南
|
||
- [新模块创建说明](.doc/新模块创建说明.md) - 模块说明
|
||
|
||
### 数据库文档
|
||
- [数据库表结构说明](.bin/mysql/sql/README.md) - 详细表结构
|
||
- [表结构汇总](.bin/mysql/sql/表结构汇总.md) - 表清单
|
||
- [ER关系图](.bin/mysql/sql/ER关系图.md) - 关系图解
|
||
- [权限控制使用说明](.bin/mysql/sql/权限控制使用说明.md) - 权限使用 ⭐
|
||
- [数据库使用说明](.bin/mysql/使用说明.md) - 初始化说明
|
||
|
||
### 需求文档
|
||
- [需求文档](.doc/需求文档.md) - 功能需求
|
||
|
||
## 🔑 权限控制
|
||
|
||
本系统采用**统一权限表**设计,支持灵活的权限控制:
|
||
|
||
### 权限模型
|
||
- **Owner(所有者)**: 资源创建者,通常拥有全部权限
|
||
- **Group(组)**: 部门或角色,可配置不同权限
|
||
- **Others(其他人)**: 公开访问权限
|
||
|
||
### 权限类型
|
||
- **读权限(4)**: 查看、浏览、阅读
|
||
- **写权限(2)**: 编辑、修改、删除
|
||
- **执行权限(1)**: 发布、审核、归档
|
||
|
||
### 使用示例
|
||
```sql
|
||
-- 查询用户对课程的权限
|
||
SELECT can_read, can_write, can_execute
|
||
FROM tb_resource_permission
|
||
WHERE resource_type = 2 -- 课程
|
||
AND resource_id = 'course_001'
|
||
AND (dept_id IS NULL OR dept_id = '用户部门ID')
|
||
AND (role_id IS NULL OR role_id IN ('用户角色ID列表'))
|
||
AND deleted = 0;
|
||
```
|
||
|
||
详见:[权限控制使用说明](.bin/mysql/sql/权限控制使用说明.md)
|
||
|
||
## 🎯 开发进度
|
||
|
||
- [x] 数据库设计(100%)
|
||
- [x] Maven项目结构(70%)
|
||
- [x] 基础模块(system, auth)
|
||
- [x] 新模块基础结构(course, learning, usercenter, ai)
|
||
- [ ] DTO实体类创建(0%)
|
||
- [ ] Mapper层开发(0%)
|
||
- [ ] Service层开发(0%)
|
||
- [ ] Controller层开发(0%)
|
||
- [ ] 前端开发(0%)
|
||
|
||
**当前总体完成度:约30%**
|
||
|
||
## 🤝 贡献指南
|
||
|
||
1. Fork 本仓库
|
||
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
||
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
||
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
||
5. 提交 Pull Request
|
||
|
||
## 📄 开源协议
|
||
|
||
本项目采用 MIT 协议
|
||
|
||
## 👥 开发团队
|
||
|
||
- 后端开发: [@yslg]
|
||
- 数据库设计: [@system]
|
||
|
||
## 📞 联系方式
|
||
|
||
- Email: 3223905473@qq.com
|
||
- 项目地址: [GitHub](your-github-url)
|
||
|
||
## 🙏 致谢
|
||
|
||
感谢所有为本项目做出贡献的开发者!
|
||
|
||
---
|
||
|
||
⭐ 如果这个项目对你有帮助,请给个Star支持一下!
|
||
|