# 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-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学校管理系统 ## 项目简介 这是一个基于Spring Boot + MyBatis-Plus的学校管理系统,包含了学生、教师、教职工、食堂、宿舍、官网、活动、消息等全方位的管理功能。 ## 技术栈 - **后端框架**: Spring Boot 3.5.9 - **持久层**: MyBatis-Plus 3.5.7 - **数据库**: MySQL 8.0+ - **工具类**: Hutool 5.8.26 - **构建工具**: Maven ## 项目结构 ``` src/main/java/com/example/demo/ ├── common/ # 通用模块 │ ├── BaseController.java # 基础控制器(提供通用CRUD) │ ├── Result.java # 统一响应结果 │ ├── PageResult.java # 分页响应结果 │ ├── BusinessException.java # 业务异常 │ └── GlobalExceptionHandler.java # 全局异常处理器 │ ├── config/ # 配置类 │ ├── MyBatisPlusConfig.java # MyBatis-Plus配置 │ ├── CorsConfig.java # 跨域配置 │ └── WebMvcConfig.java # Web MVC配置 │ ├── controller/ # 控制器层 │ ├── sys/ # 系统管理 │ ├── edu/ # 教学管理 │ ├── life/ # 生活管理 │ ├── dorm/ # 宿舍管理 │ ├── festival/ # 活动管理 │ ├── cms/ # 官网管理 │ └── message/ # 消息管理 │ ├── entity/ # 实体类 │ ├── sys/ # 系统实体 │ ├── edu/ # 教学实体 │ ├── life/ # 生活实体 │ ├── dorm/ # 宿舍实体 │ ├── festival/ # 活动实体 │ ├── cms/ # 官网实体 │ └── message/ # 消息实体 │ ├── mapper/ # 数据访问层 │ └── *Mapper.java # 各实体Mapper接口 │ ├── 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