# 高校勤工助学管理系统 **Repository Path**: dm_team/University-Work-Study-Management-System ## Basic Information - **Project Name**: 高校勤工助学管理系统 - **Description**: 高校勤工助学管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高校勤工助学管理系统 基于 **Spring Boot 3 + Vue 3 + MySQL 8** 的前后端分离勤工助学一体化管理系统,包含 **前台门户**(公开访问)与 **后台管理系统**(按角色登录),覆盖 岗位发布 → 学生申请 → 审核录用 → 排班考勤 → 工资核算 → 模拟发放 → 评价统计 全业务闭环。 ## 一、功能总览 ### 前台门户(免登录,`/portal`) | 模块 | 说明 | | --- | --- | | 门户首页 | Banner 轮播、数据统计动效(在招岗位/在岗学生/累计发放/用工部门)、最新公告、在招岗位速览、政策制度、申请流程展示 | | 公告中心 | 公告列表 + 详情(阅读数统计) | | 在招岗位 | 公开查看招聘中的岗位(只读,申请需登录) | | 政策制度 | 管理办法 / 申请流程 / 使用指南 / 常见问题分类浏览 | | 注册 / 找回密码 | 学生自助注册(自动绑定学生角色),学号+手机号找回密码 | ### 后台管理系统(登录后,按角色显示菜单) - **学生端**:个人主页、岗位大厅(困难学生加权推荐 + 一键收藏)、我的收藏、我的申请、我的在岗、我的排班、打卡考勤(定位 + 签到码)、请假补签、我的工资(明细/申诉)、我的档案(银行卡 AES 加密)、意见反馈、消息中心、公告、登录日志 - **管理端**: - 待办中心(跨模块聚合待处理事项) - 岗位管理(需求申报 → 中心审核 → 发布/停止)、招聘管理(申请审核/面试登记/录用/拒绝)、在岗管理 - 排班考勤(班次、排班、考勤记录、异常处理)、请假/补签审批 - 工资管理(批次生成 → 部门确认 → 中心审核 → **财务模拟支付** → 预算占用)、预算管理 - 互动管理(评价、申诉处理、意见反馈回复) - 公告管理、消息群发(按角色/全体) - 门户管理(轮播图、政策制度 CRUD) - 系统管理(用户/角色/权限/部门/字典/参数/操作日志) - 仪表盘(ECharts 统计大屏:趋势/部门占比/困难生比例/转化漏斗/预算预警) ## 二、技术栈 | 层 | 技术 | | --- | --- | | 前端 | Vue 3 + TypeScript + Vite + Element Plus + Pinia + Vue Router + ECharts + Sass | | 后端 | Spring Boot 3.3 + Spring Security + JWT + MyBatis-Plus + Validation + AOP | | 数据库 | MySQL 8(34 张业务表 + 4 张门户扩展表 = 39 张) | 核心机制: - **RBAC 权限**:角色 + 权限点双轨,菜单动态路由,按钮级 `v-perm` 指令,接口 `@PreAuthorize` 校验 - **数据权限**:部门负责人仅见本部门数据,学生仅见本人数据(越权返回 403) - **状态机**:岗位 `DRAFT→PENDING→APPROVED→RECRUITING→CLOSED`;工资批次 `DRAFT→DEPT_CONFIRMED→CENTER_APPROVED→PAYING→PAID` - **推荐算法**:困难等级 35% + 技能匹配 25% + 空闲时间 20% + 历史评价 10% + 岗位距离 10%,权重可在系统参数调整 - **安全**:BCrypt 密码、JWT 无状态认证、银行卡 AES 加密存储 + 脱敏显示、图形验证码(可配置开关)、登录日志 ## 三、目录结构 ``` ├── init.sql # 一键初始化:建库建表 + 完整演示数据(39 表,日期相对当前时间) ├── backend/ # Spring Boot 后端(mvn 构建) │ └── src/main/java/com/workstudy/ │ ├── controller/ # 24 个控制器(含门户/待办/收藏/反馈/CMS) │ ├── service/ # 业务服务(推荐算法/工时核算/批次流转/消息推送) │ ├── security/ # JWT 认证链、验证码 │ ├── config/ common/ entity/ mapper/ dto/ vo/ aspect/ ├── frontend/ # Vue 3 前端(npm 构建) │ └── src/ │ ├── views/portal/ # 前台门户(首页/公告/岗位/政策) │ ├── views/login/ # 登录(登录/注册/忘记密码) │ ├── views/student/ # 学生端 15 个页面 │ ├── views/recruit|attendance|payroll|interaction|notice|system/ # 管理端页面 │ ├── views/todo/ # 待办中心 │ └── layout/ router/ store/ api/ components/ utils/ styles/ └── backend/tools/ # 开发辅助脚本(生成实体/闭环测试/安全测试) ``` ## 四、快速部署 ### 1. 初始化数据库(MySQL 8) ```sql -- 使用 root 或任意管理账号执行 source init.sql ``` 脚本自动创建数据库 `work_study`、专用账号 `workstudy / WorkStudy@2024` 并授权,随后建 39 张表并写入演示数据(日期基于当前时间生成,任何时间导入都有"新鲜"数据)。 ### 2. 启动后端(Java 17+ / Maven) ```bash cd backend mvn package -DskipTests java -jar target/work-study-backend-1.0.0.jar # 默认端口 8080;如数据库账号密码不同,用命令行参数覆盖: # java -jar target/work-study-backend-1.0.0.jar "--spring.datasource.username=root" "--spring.datasource.password=xxx" ``` ### 3. 启动前端(Node 18+) ```bash cd frontend npm install npm run dev # 访问 http://localhost:5173 ,门户首页;点击「登录」进入系统 ``` > 前端已配置代理转发 `/api` 到后端 8080;如后端端口不同,设置环境变量 `VITE_PROXY_TARGET=http://localhost:xxxx` 后重启。 ## 五、演示账号(密码均为 `123456`) | 账号 | 角色 | 说明 | | --- | --- | --- | | `admin` | 系统管理员 | 总控台:岗位/申请/录用/排班/考勤/工资/支付/评价/申诉/反馈/门户/系统管理全部功能 | | `student01` ~ `student12` | 学生 | 岗位申请、打卡、工资查看、申诉、评价、反馈(含不同困难等级) | > 系统采用**双角色**模式(学生端 + 管理员端)。后端保留 RBAC 多角色模型(可扩展),演示环境统一收敛为学生与管理员两种入口。 ## 六、10 步演示主线(推荐验收顺序) 1. **门户**:打开 `http://localhost:5173/portal` 查看轮播、统计动效、公告、在招岗位、政策 2. **注册**:门户右上角「注册」→ 用新学号注册 → 自动登录体验 3. **学生申请**:`student01` 登录 → 岗位大厅(看困难生推荐分)→ 收藏 → 申请岗位 4. **管理员录用**:`admin` 登录 → 待办中心 → 审核申请 → 录用 5. **排班打卡**:`admin` 排班 → `student01` 我的排班 → 定位签到(签到码见系统参数)→ 签退 6. **请假审批**:`student01` 申请请假 → `admin` 审批 7. **工资闭环**:`admin` 生成当月批次 → 确认 → 审核 → **模拟支付**(演示环境由管理员总控全流程,后端状态机保持完整) 8. **学生核验**:`student01` 我的工资(明细已发放)→ 发起申诉 → `admin` 处理 9. **评价反馈**:`admin` 评价学生;`student01` 提交意见反馈 → `admin` 回复 10. **数据大屏**:`admin` 仪表盘查看统计图表、消息群发 → `student01` 消息中心接收 ## 七、自动化闭环测试(模拟人工) 项目提供 `backend/tools/human_flow_test.py`,模拟"新学生从注册到工资发放"的 34 项人工操作闭环(注册/档案/收藏/申请/重复拦截/录用/排班/签到/签退/请假/批次生成/确认/审核/模拟支付/明细/申诉/评价/反馈/消息/找回密码/越权防护),全部断言通过: ``` python backend/tools/human_flow_test.py 结果:通过 34 项,失败 0 项 ``` > 运行前请先启动后端(8080)并将系统参数 `workstudy.captcha.enabled` 置为 `false` 以便脚本跳过图形验证码,测完可改回 `true`。 ## 八、常见问题 - **8080 被占用**:先停掉占用进程,或换端口启动后端并设置 `VITE_PROXY_TARGET` - **验证码刷新后仍提示过期**:验证码 5 分钟有效;联调可在「系统管理 → 参数管理」关闭 `workstudy.captcha.enabled` - **学生登录后菜单为空**:确认该用户已在「系统管理 → 用户」中分配角色(注册用户会自动绑定学生角色) - **签到码**:默认 `000000`,在「系统管理 → 参数管理」`attendance.checkin.code` 中修改,用工部门在排班页展示给学生