Files
schoolNews/schoolNewsServ/.doc/快速开始.md
2025-10-15 13:11:19 +08:00

263 lines
5.9 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.

# 校园思政新闻平台 - 快速开始
## 📦 项目结构
```
school-news/
├── admin/ # 管理后台入口
├── api/ # API接口定义
│ ├── api-all/
│ ├── api-auth/
│ └── api-system/
├── auth/ # 认证模块
├── system/ # 系统管理模块(用户、权限、部门等)
├── news/ # 资源/新闻管理模块
├── study/ # 学习管理模块 🆕
├── usercenter/ # 个人中心模块 🆕
├── ai/ # 智能体模块 🆕
└── common/ # 公共模块
├── common-all/
├── common-annotation/
├── common-core/
├── common-dto/
├── common-exception/
├── common-jdbc/
├── common-redis/
└── common-util/
```
## 🚀 快速开始
### 1. 环境要求
- **JDK**: 21+
- **Maven**: 3.8+
- **MySQL**: 8.0+
- **Redis**: 6.0+ (可选)
### 2. 数据库初始化
#### Windows环境
```cmd
cd .bin/mysql
init-database.bat
```
#### Linux/Mac环境
```bash
cd .bin/mysql
chmod +x init-database.sh
./init-database.sh
```
#### 手动执行
```bash
cd .bin/mysql/sql
mysql -u root -p < createDB.sql
mysql -u root -p < createTableUser.sql
mysql -u root -p < createTablePermission.sql
mysql -u root -p < createTablePermissionControl.sql
mysql -u root -p < createTableResource.sql
mysql -u root -p < createTableCourse.sql
mysql -u root -p < createTableLearning.sql
mysql -u root -p < createTableUserCenter.sql
mysql -u root -p < createTableAI.sql
mysql -u root -p < createTableSystem.sql
```
### 3. 配置数据库连接
修改各模块的 `application.yml`
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/school_news
username: root
password: your_password
```
### 4. 编译项目
```bash
mvn clean install
```
### 5. 启动服务
各模块端口分配:
- **admin**: 8080 (管理后台入口)
- **auth**: 8082 (认证服务)
- **system**: 8081 (系统管理)
- **study**: 8084 (学习管理) 🆕
- **usercenter**: 8085 (个人中心) 🆕
- **ai**: 8086 (智能体) 🆕
启动顺序建议:
1. auth (认证服务)
2. system (系统管理)
3. 其他业务模块
### 6. 访问系统
- **管理后台**: http://localhost:8080
- **默认账号**: admin
- **默认密码**: 查看 `.bin/mysql/sql/createTableUser.sql`
## 📋 模块功能说明
### system (系统管理) - 已有
- 用户管理
- 部门管理
- 角色管理
- 权限管理
- 菜单管理
### news (资源/新闻) - 待扩展
- 资源管理
- 分类管理
- Banner管理
- 推荐管理
- 标签管理
- 数据采集
### study (学习管理) - 新建 🆕
- 学习任务
- 任务分配
- 学习记录
- 学习统计
- 课程管理
- 章节管理
- 课程标签
- 权限控制
### usercenter (个人中心) - 新建 🆕
- 用户收藏
- 成就系统
- 积分系统
- 浏览记录
### ai (智能体) - 新建 🆕
- AI对话
- 知识库
- 文件问答
- 对话历史
## 🔧 开发指南
### 新增接口步骤
1. **定义API接口** (在api模块)
```java
// api-course/src/main/java/org/xyzh/api/course/CourseApi.java
public interface CourseApi {
@GetMapping("/course/list")
Object getCourseList(...);
}
```
2. **创建DTO** (在common-dto)
```java
// common/common-dto/src/main/java/org/xyzh/common/dto/course/TbCourse.java
public class TbCourse extends BaseDTO {
private String courseID;
private String name;
// ...
}
```
3. **创建Mapper** (在业务模块)
```java
// course/src/main/java/org/xyzh/course/mapper/CourseMapper.java
@Mapper
public interface CourseMapper extends BaseMapper<TbCourse> {
}
```
4. **创建Service** (在业务模块)
```java
// course/src/main/java/org/xyzh/course/service/CourseService.java
public interface CourseService {
}
// course/src/main/java/org/xyzh/course/service/impl/CourseServiceImpl.java
@Service
public class CourseServiceImpl implements CourseService {
}
```
5. **创建Controller** (在业务模块)
```java
// course/src/main/java/org/xyzh/course/controller/CourseController.java
@RestController
@RequestMapping("/course")
public class CourseController implements CourseApi {
}
```
### 权限控制使用
详见:[权限控制使用说明](.bin/mysql/sql/权限控制使用说明.md)
基本用法:
```java
// 检查用户对资源的权限
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 = '用户部门')
AND (role_id IS NULL OR role_id IN ('用户角色'))
AND deleted = 0;
```
## 📚 参考文档
### 数据库相关
- [表结构详细说明](.bin/mysql/sql/README.md)
- [表结构汇总](.bin/mysql/sql/表结构汇总.md)
- [ER关系图](.bin/mysql/sql/ER关系图.md)
- [使用说明](.bin/mysql/使用说明.md)
### 开发相关
- [模块创建完整指南](.doc/模块创建完整指南.md)
- [模块创建进度](.doc/模块创建进度.md)
- [需求文档](.doc/需求文档.md)
## ⚠️ 注意事项
1. **数据库编码**: 使用 utf8mb4
2. **主键生成**: 使用 UUID
3. **软删除**: 所有表使用 deleted 字段
4. **日志**: 使用 Log4j2不要用 Logback
5. **权限**: 所有资源需配置权限控制
## 🐛 常见问题
### Q1: 启动时提示端口被占用
**A**: 修改对应模块的 `application.yml` 中的 `server.port`
### Q2: 数据库连接失败
**A**: 检查 MySQL 服务是否启动,用户名密码是否正确
### Q3: MyBatis找不到Mapper
**A**: 检查 `mybatis-plus.mapper-locations` 配置是否正确
### Q4: 权限检查失败
**A**: 确保在 `tb_resource_permission` 表中配置了相应的权限记录
## 📞 技术支持
遇到问题请参考:
1. 项目根目录下的 `.doc/` 文档
2. 数据库 SQL 脚本中的注释
3. 代码中的 JavaDoc 注释
## 🎯 后续计划
- [ ] 完成所有模块的业务代码
- [ ] 添加单元测试
- [ ] 集成Swagger文档
- [ ] 添加Redis缓存
- [ ] 性能优化
- [ ] 安全加固