Files
schoolNews/schoolNewsServ/README.md

268 lines
7.4 KiB
Markdown
Raw Permalink Normal View History

2025-10-15 13:11:19 +08:00
# 校园思政新闻平台
> 基于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支持一下