# java-ai-web **Repository Path**: liuyong-byte/java-ai-web ## Basic Information - **Project Name**: java-ai-web - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学校管理系统 ## 项目简介 这是一个基于 Spring Boot + MyBatis Plus 的学校管理系统,支持**单体应用**和**微服务**两种架构模式。系统包含了学生、教师、教职工、食堂、宿舍、官网、活动、消息等全方位的管理功能,并支持国际化多区域部署。 ## 🚀 快速开始 ### 单体应用模式(推荐新手) ```bash # 1. 确保已安装 JDK 17 java -version # 2. 启动单体应用 # Windows start-standalone.bat # Linux/Mac ./start-standalone.sh # 3. 访问应用 # 应用地址: http://localhost:8080 # API文档: http://localhost:8080/doc.html ``` ### 微服务模式 ```bash # 1. 启动 Nacos docker-compose up -d nacos # 2. 启动所有微服务 # Windows start-services.bat # Linux/Mac ./start-services.sh # 3. 访问应用(通过网关) # 网关地址: http://localhost:8080 # Nacos控制台: http://localhost:8848/nacos ``` 详细说明请查看 [SINGLETON-VS-MICROSERVICE.md](./SINGLETON-VS-MICROSERVICE.md) ## 技术栈 - **后端框架**: Spring Boot 3.1.5 - **持久层**: MyBatis Plus 3.5.5 - **数据库**: MySQL 8.0+ - **缓存**: Redis - **对象存储**: MinIO - **工具类**: Hutool 5.8.26 - **构建工具**: Maven - **服务注册**: Nacos(微服务模式) - **网关**: Spring Cloud Gateway(微服务模式) ## 架构模式 ### 单体应用模式 - ✅ 所有模块在一个 JVM 中运行 - ✅ 统一配置文件,无需 Nacos - ✅ 启动快速,开发调试方便 - ✅ 适合小型项目和快速开发 ### 微服务模式 - ✅ 每个服务独立部署 - ✅ 每个服务独立数据库 - ✅ 使用 Nacos 服务发现 - ✅ 支持水平扩展 - ✅ 适合大型项目和高并发场景 详细对比请查看 [SINGLETON-VS-MICROSERVICE.md](./SINGLETON-VS-MICROSERVICE.md) ## 功能模块 - **认证授权 (school-auth)** - 登录、注册、JWT - **系统管理 (school-system)** - 用户、角色、权限、菜单、部门 - **教学管理 (school-edu)** - 学生、教师、课程、班级、专业、院系 - **宿舍管理 (school-dorm)** - 宿舍楼、房间、床位、入住申请 - **生活管理 (school-life)** - 食堂、菜品、订单、饭卡、充值 - **文件管理 (school-file)** - MinIO 文件上传下载、分片上传 - **消息管理 (school-message)** - 消息模板、发送记录、站内信 - **数据中心 (school-data-center)** - 数据统计、报表、数据同步 - **AI服务 (school-ai)** - 智能问答、数据分析 ## 国际化支持 项目支持多区域国际化部署,支持以下国家/地区: - 中国 (CN) - 中文简体、CNY、Asia/Shanghai - 美国 (US) - 英文、USD、America/New_York - 英国 (GB) - 英文、GBP、Europe/London - 日本 (JP) - 日文、JPY、Asia/Tokyo - 韩国 (KR) - 韩文、KRW、Asia/Seoul 详细配置请查看各个 `application-region-*.yml` 配置文件 ## 项目结构 ``` school-management/ ├── school-common/ # 公共模块 ├── school-common-config/ # 公共配置模块 ├── school-common-util/ # 公共工具模块 ├── school-auth/ # 认证授权服务 ├── school-system/ # 系统管理服务 ├── school-edu/ # 教学管理服务 ├── school-dorm/ # 宿舍管理服务 ├── school-life/ # 生活管理服务 ├── school-file/ # 文件管理服务 ├── school-message/ # 消息管理服务 ├── school-data-center/ # 数据中心服务 ├── school-ai/ # AI智能服务 ├── school-gateway/ # 网关服务(微服务) ├── school-api/ # API接口模块 └── school-standalone/ # 单体应用模块 ⭐ ``` ## 数据库设计 ### 单体应用模式 使用统一的数据库 `school_management_system`,所有表在一个数据库中。 ### 微服务模式 每个服务使用独立的数据库: - `school_auth` - 认证授权 - `school_system` - 系统管理 - `school_edu` - 教学管理 - ... 等等 数据库初始化脚本:`school_management_system.sql` ## API 文档 - **单体应用**: http://localhost:8080/doc.html - **微服务**: http://localhost:8080/doc.html(通过网关访问) ## 监控和运维 ### 单体应用 - **监控端点**: http://localhost:8080/actuator - **Druid监控**: http://localhost:8080/druid - **日志文件**: `logs/school-standalone.log` ### 微服务 - **Nacos控制台**: http://localhost:8848/nacos - **各服务监控**: http://localhost:{port}/actuator - **日志文件**: 各服务独立日志文件 ## 环境要求 - **Java**: JDK 17+ - **Maven**: 3.6+ - **MySQL**: 8.0+ - **Redis**: 5.0+ - **Nacos**: 2.2.3+(微服务模式) - **MinIO**: 8.x+ ## 开发指南 ### 环境准备 ```bash # 1. 安装 JDK 17 # 下载地址: https://adoptium.net/ # 2. 配置环境变量 # JAVA_HOME = JDK 安装路径 # Path 添加 %JAVA_HOME%\bin # 3. 验证安装 java -version javac -version ``` ### 编译项目 ```bash # 编译整个项目 mvnw clean compile # 编译单体应用 mvnw clean compile -pl school-standalone -am # 编译所有模块并跳过测试 mvnw clean package -DskipTests ``` ### 运行测试 ```bash # 运行所有测试 mvnw test # 运行指定模块测试 mvnw test -pl school-auth ``` ## 常见问题 ### Q1: Java 版本不匹配 **问题**: 编译失败,提示需要 Java 17 **解决**: 安装 JDK 17 并配置 JAVA_HOME 环境变量 ### Q2: 端口冲突 **问题**: 启动失败,提示端口被占用 **解决**: 修改 `application.yml` 中的端口配置 ### Q3: 数据库连接失败 **问题**: 启动失败,无法连接数据库 **解决**: 检查数据库是否启动,连接配置是否正确 ### Q4: 单体应用和微服务如何切换? **解决**: 查看 [SINGLETON-VS-MICROSERVICE.md](./SINGLETON-VS-MICROSERVICE.md) 文档 ## 文档 - [单体应用与微服务切换指南](./SINGLETON-VS-MICROSERVICE.md) - [单体应用迁移状态](./SINGLETON-MIGRATION-STATUS.md) - [微服务架构说明](./MICROSERVICE-README.md) - [微服务迁移指南](./MICROSERVICE-MIGRATION.md) - [部署文档](./docker.md) - [API文档](./API.md) - [测试指南](./TESTING.md) ## 贡献指南 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 许可证。 ## 联系方式 - 项目地址: https://github.com/your-username/school-management - 问题反馈: https://github.com/your-username/school-management/issues - 邮箱: support@school-management.com --- **注意**: 当前项目同时支持单体应用和微服务两种架构模式,可根据实际需求选择使用。单体应用更适合快速开发和测试,微服务更适合生产环境和高并发场景。 │ ├── service/ # 服务层 │ ├── I*Service.java # 服务接口 │ └── impl/ # 服务实现 │ └── util/ # 工具类 ├── StringUtil.java # 字符串工具 ├── DateUtil.java # 日期工具 └── JsonUtil.java # JSON工具 ``` ## 数据库表 系统共包含65张表,主要分为以下模块: ### 1. 系统管理(7张表) - `sys_user` - 用户表 - `sys_role` - 角色表 - `sys_menu` - 菜单权限表 - `sys_dept` - 部门组织架构表 - `sys_file` - 文件资源表 - `sys_job` - 定时任务表 - `sys_job_log` - 定时任务日志表 ### 2. 教学管理(10张表) - `edu_student` - 学生信息表 - `edu_teacher` - 教师信息表 - `edu_staff` - 教职工信息表 - `edu_college` - 院系表 - `edu_major` - 专业表 - `edu_class` - 班级表 - `edu_course` - 课程表 - `edu_class_schedule` - 上课安排表 - `edu_attendance` - 考勤表 - `edu_leave_application` - 请假申请表 ### 3. 生活管理(6张表) - `cafeteria` - 食堂表 - `cafeteria_window` - 食堂窗口表 - `dish` - 菜品表 - `cafeteria_order` - 食堂订单表 - `meal_card` - 饭卡表 - `meal_card_recharge` - 饭卡充值记录表 ### 4. 宿舍管理(5张表) - `dormitory_building` - 宿舍楼表 - `dormitory_room` - 宿舍房间表 - `dormitory_bed` - 宿舍床位表 - `dormitory_application` - 宿舍申请表 - `dormitory_hygiene` - 宿舍卫生检查表 ### 5. 活动管理(5张表) - `festival_activity` - 节日活动表 - `festival_participant` - 活动参与人员表 - `festival_vote` - 活动投票表 - `festival_vote_option` - 投票选项表 - `festival_vote_record` - 投票记录表 ### 6. 官网管理(6张表) - `cms_news` - 官网新闻表 - `cms_news_category` - 新闻分类表 - `cms_banner` - 官网轮播图表 - `cms_page` - 官网页面表 - `school_profile` - 学校概况表 - `school_scenery` - 校园风光表 ### 7. 消息管理(5张表) - `sys_msg_platform_config` - 消息平台配置表 - `sys_msg_template` - 消息模板表 - `sys_msg_send_log` - 消息发送记录表 - `sys_internal_msg` - 站内信表 - `sys_internal_msg_receiver` - 站内信接收人表 ### 8. 系统管理(8张表) - `sys_user_role` - 用户角色关联表 - `sys_role_menu` - 角色菜单关联表 - `sys_user_dept` - 用户部门关联表 - `sys_oper_log` - 操作日志表 - `sys_login_log` - 登录日志表 - `sys_dict_type` - 字典类型表 - `sys_dict_data` - 字典数据表 - `sys_config` - 参数配置表 ## 快速开始 ### 1. 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ ### 2. 数据库初始化 执行SQL脚本创建数据库和表: ```bash mysql -u root -p < school_management_system.sql ``` ### 3. 修改配置 修改 `application.yml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/school_management?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: your_password ``` ### 4. 启动项目 ```bash mvn clean package java -jar target/demo2-0.0.1-SNAPSHOT.jar ``` 或直接在IDE中运行 `Demo2Application` ## API接口说明 所有控制器继承自 `BaseController`,自动提供以下通用接口: ### 基础CRUD接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/page` | 分页查询 | | GET | `/{id}` | 根据ID查询 | | GET | `/list` | 查询所有 | | POST | `/` | 新增 | | POST | `/batch` | 批量新增 | | POST | `/query` | 条件查询 | | PUT | `/` | 修改 | | PUT | `/batch` | 批量修改 | | DELETE | `/{id}` | 删除 | | DELETE | `/batch` | 批量删除 | | GET | `/count` | 统计数量 | ### 分页查询示例 ```bash GET /api/edu/student/page?current=1&size=10&keyword=张三 ``` ### 根据ID查询 ```bash GET /api/edu/student/1 ``` ### 新增数据 ```bash POST /api/edu/student Content-Type: application/json { "userId": 1, "studentNo": "2024001", "realName": "张三", "classId": 1, "grade": "2024" } ``` ### 修改数据 ```bash PUT /api/edu/student Content-Type: application/json { "id": 1, "studentNo": "2024001", "realName": "张三", "classId": 1 } ``` ### 删除数据 ```bash DELETE /api/edu/student/1 ``` ### 批量删除 ```bash DELETE /api/edu/student/batch Content-Type: application/json [1, 2, 3] ``` ## 响应格式 ### 成功响应 ```json { "code": 200, "message": "操作成功", "data": {}, "timestamp": 1234567890000 } ``` ### 分页响应 ```json { "code": 200, "message": "操作成功", "data": { "current": 1, "size": 10, "total": 100, "pages": 10, "records": [] }, "timestamp": 1234567890000 } ``` ### 失败响应 ```json { "code": 500, "message": "操作失败", "data": null, "timestamp": 1234567890000 } ``` ## 扩展开发 ### 创建新控制器 ```java @RestController @RequestMapping("/your/module") public class YourController extends BaseController, YourEntity> { @Override protected void buildKeywordQuery(QueryWrapper queryWrapper, String keyword) { if (StringUtil.isNotEmpty(keyword)) { queryWrapper.like("field_name", keyword); } } // 自定义业务接口 @GetMapping("/custom") public Result customMethod() { // 自定义逻辑 return Result.success(); } } ``` ### 重写钩子方法 ```java @Override protected void beforeSave(T entity) { // 新增前的处理 // 可以进行数据校验、设置默认值等 } @Override protected void afterSave(T entity) { // 新增后的处理 // 可以进行关联数据保存等 } ``` ## 工具类使用 ### StringUtil ```java StringUtil.isEmpty(str) // 判断是否为空 StringUtil.isNotEmpty(str) // 判断是否不为空 StringUtil.hidePhone(phone) // 隐藏手机号 StringUtil.hideIdCard(idCard) // 隐藏身份证号 ``` ### DateUtil ```java DateUtil.now() // 当前日期时间字符串 DateUtil.today() // 当前日期字符串 DateUtil.format(dateTime) // 格式化日期时间 DateUtil.parseDateTime(str) // 解析日期时间 DateUtil.daysBetween(start, end) // 计算天数差 ``` ### JsonUtil ```java JsonUtil.toJsonString(obj) // 对象转JSON字符串 JsonUtil.parseObject(json, clazz) // JSON字符串转对象 JsonUtil.isValidJson(json) // 判断是否有效JSON ``` ## 注意事项 1. 所有实体类使用 `@TableName` 注解指定表名 2. 使用 `@TableId(type = IdType.AUTO)` 标注自增主键 3. 时间字段使用 `LocalDateTime` 或 `LocalDate` 类型 4. JSON字段使用 `String` 类型存储 5. 所有Controller继承 `BaseController` 即可获得完整CRUD功能 ## 许可证 MIT License