# 校园思政新闻平台

> 基于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支持一下！

