# workload-management **Repository Path**: gzgs-edu-workload-management/workload-management ## Basic Information - **Project Name**: workload-management - **Description**: 工作量,后台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-30 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Workload Management System ## 简介 本项目是基于 Spring Boot 3 的多模块专任教师工作量管理系统,适用于高校或企业的工作量统计与管理。采用标准分层架构,支持用户认证、权限管理、数据持久化、统一异常处理、验证码防刷、登录限流与安全监控等功能,具备良好的可扩展性和安全性。 ## 项目结构 ``` workload-management-master/ ├── workload-server # 主服务端应用(Web/API/业务逻辑) │ ├── controller # 控制器/接口层 │ ├── service # 业务服务层 │ ├── mapper # MyBatis数据访问层 │ ├── config # 配置(安全、AOP、限流等) │ ├── util # 工具类 │ ├── handler # 全局异常与处理 │ └── ... # 其他 ├── workload-common # 通用模块(工具、常量、异常、结果封装等) ├── workload-pojo # 数据对象模块(Entity/DTO/VO) └── pom.xml # 父模块Maven配置 ``` ## 开发环境 - JDK 17+ - Maven 3.6+ - MySQL 8+ - Redis 5+(用于验证码、限流、登录日志等) - IDEA/VSCode(推荐,支持Spring Boot和Maven多模块) - Apifox/Swagger(接口联调与测试) ## 快速开始 1. 克隆项目 ```bash git clone cd workload-management-master ``` 2. 数据库与Redis配置 - 新建数据库 `workload-management` - 启动 Redis 服务 - 修改 `workload-server/src/main/resources/application.yml` 中的数据库和Redis配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/workload-management?... username: root password: 123456 # 改为你的数据库密码 data: redis: host: localhost port: 6379 password: # 如有密码请填写 ``` 3. IDEA/VSCode 导入与运行 - 打开项目根目录(自动识别为Maven多模块项目) - 等待依赖下载完成 - 右键运行 `cn.edu.gzgs.WorkloadManagementApplication` 启动服务 4. 数据库自动建表 - 项目已配置实体自动建表,首次启动会自动根据实体类生成表结构。 5. 接口文档与测试 - 启动后访问 [http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html) 查看API文档 - 推荐使用 Apifox 导入Swagger/OpenAPI文档进行接口测试与调试 ## 主要功能亮点 - **用户认证与权限管理**:支持用户名/工号登录,基于JWT的无状态认证,通过 `@PreAuthorize` 实现细粒度的接口权限控制。 - **教师综合管理**: - 支持教师信息的增、删、改、查,包括基本信息、部门、职称、岗位、职务、学历等。 - 提供CSV/Excel模板下载和批量导入功能,简化大量教师数据的初始化工作。 - 接口层面进行权限校验,确保只有管理员可操作。 - **部门管理与数据完整性**: - 删除部门时自动校验是否存在子部门或教师,防止误删导致数据孤岛。 - 可扩展"强制删除"或"迁移到未分配部门"等高级操作。 - **批量操作能力**: - 支持批量启用/禁用教师账号。 - 支持批量为教师分配/取消角色。 - 批量操作接口均具备详细的参数校验和操作日志。 - **登录与安全**: - **验证码防刷**:登录接口集成图形验证码,防止自动化攻击。 - **登录限流**:对登录接口实现IP和账号双重限流,防止暴力破解。 - **登录日志与监控**:记录所有登录尝试,并对关键操作(如用户导入、删除)进行日志记录,便于审计追踪。 - **企业级特性**: - **统一异常处理**:全局捕获异常,返回统一、规范的错误响应。 - **统一结果封装**:所有API接口返回统一的 `ApiResponse` 格式。 - **接口文档自动生成**:基于OpenAPI规范,自动生成接口文档,便于前后端联调。 - **配置灵活**:验证码、限流等参数均可通过`application.yml`配置,无需改代码即可调整。 ## 关键接口说明(部分) - `PUT /api/user/status`:批量启用/禁用教师账号。 - `POST /api/user/roles/assign`:批量为教师分配角色。 - `POST /api/user/roles/unassign`:批量取消教师角色。 - `DELETE /api/dept/{id}`:删除部门,若部门下有教师或子部门则禁止删除。 更多接口请参考Swagger自动生成文档。 ## 关键配置说明 ### 验证码相关 ```yaml application: captcha: expiration-minutes: 3 # 验证码有效期(分钟) length: 5 # 验证码字符长度 width: 130 # 图片宽度 height: 48 # 图片高度 char-type: "DEFAULT" # 字符类型: DEFAULT, TYPE_ONLY_NUMBER, TYPE_ONLY_CHAR, TYPE_ONLY_UPPER, TYPE_ONLY_LOWER ``` ### 登录限流相关 ```yaml application: login-ratelimit: ip: limit: 5 # 同一IP每分钟允许的最大登录尝试次数 window-seconds: 60 # IP限流的时间窗口(秒) user: limit: 5 # 同一用户账号每分钟允许的最大登录尝试次数 window-seconds: 60 # 用户账号限流的时间窗口(秒) ``` ## 常用命令 ```bash # 全项目编译 mvn clean install # 启动服务端 cd workload-server mvn spring-boot:run ``` ## 主要技术栈 - Spring Boot 3.2.5 - Spring Security + JWT - MyBatis-Plus - MySQL - Redis - EasyCaptcha - Hutool、Fastjson、Lombok - OpenAPI (springdoc-openapi) ## 目录说明 - `workload-server`:控制器、服务、数据访问、配置、安全、工具等后端全部逻辑 - `workload-common`:通用工具、常量、配置、异常、结果封装 - `workload-pojo`:实体类、DTO、VO等数据对象 ## 贡献与反馈 欢迎提交 Issue 或 PR,完善功能与文档。 ## License MIT --- 如需详细接口文档、二次开发指引等,请参考各模块内注释或联系维护者。