Files
schoolNews/schoolNewsServ/README.md
2025-10-15 13:11:19 +08:00

268 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 校园思政新闻平台
> 基于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支持一下