# 校园思政新闻平台 - 快速开始 ## 📦 项目结构 ``` 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 { } ``` 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缓存 - [ ] 性能优化 - [ ] 安全加固