基于 Python 3.9 + Flask + Vue 3 的校内求职互助平台,面向高校学生提供求职互助、内推机会、面经分享、在线简历、私信沟通等功能,支持用户端与管理端双端操作。
目录
功能概览
| 端 | 功能 |
|---|---|
| 用户端 | 登录注册、互助广场(帖子列表/详情/发帖)、评论互动、在线简历、私信、个人中心 |
| 管理端 | 数据看板(统计卡片 + 可视化图表)、用户管理、帖子管理、分类管理、公告管理 |
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端 | Python 3.9 | 运行环境 |
| Flask 2.3 | Web 框架 | |
| SQLAlchemy 3.1 | ORM | |
| Flask-JWT-Extended | JWT 认证 | |
| Flask-CORS | 跨域支持 | |
| PyMySQL | MySQL 驱动 | |
| 前端 | Vue 3 | 框架 |
| Vue Router 4 | 路由 | |
| Vuex 4 | 状态管理 | |
| Element Plus | UI 组件库 | |
| Axios | HTTP 客户端 | |
| ECharts | 数据可视化 | |
| 数据库 | MySQL 5.7+ | 持久化存储 |
| 运行环境 | Node.js 16+ | 前端构建 |
项目结构
c71/
├── database/ # 数据库相关
│ ├── init.sql # 建库建表脚本(含初始分类)
│ ├── generate_seed.py # 生成测试数据脚本
│ └── seed_data.sql # 测试数据(需先执行 generate_seed 生成)
│
├── backend/ # Flask 后端
│ ├── run.py # 启动入口(支持 python run.py seed 生成 seed_data)
│ ├── requirements.txt # Python 依赖
│ ├── uploads/ # 上传文件目录(头像等)
│ └── app/
│ ├── __init__.py # 应用工厂、蓝图注册
│ ├── config.py # 配置(数据库、JWT、上传等)
│ ├── extensions.py # 扩展初始化(db、jwt、cors)
│ ├── models/ # 数据模型
│ │ ├── user.py # 用户
│ │ ├── post.py # 帖子
│ │ ├── comment.py # 评论
│ │ ├── category.py # 分类
│ │ ├── resume.py # 简历
│ │ ├── message.py # 私信
│ │ └── notice.py # 公告
│ ├── routes/ # API 路由
│ │ ├── auth.py # 认证(注册、登录、个人信息)
│ │ ├── post.py # 帖子
│ │ ├── comment.py # 评论
│ │ ├── notice.py # 公告
│ │ ├── user.py # 用户相关(个人资料等)
│ │ ├── resume.py # 简历
│ │ ├── message.py # 私信
│ │ └── admin.py # 管理端(统计、用户/帖子/分类/公告管理)
│ └── utils/ # 工具
│ ├── response.py # 统一响应格式
│ ├── jwt_helper.py # JWT 辅助
│ └── decorators.py # 权限装饰器
│
└── frontend/ # Vue 前端
├── package.json
├── vue.config.js # 开发代理(/api -> 5000, /uploads -> 5000)
└── src/
├── main.js
├── App.vue
├── api/ # 接口封装
│ ├── index.js # Axios 实例、拦截器
│ ├── auth.js
│ ├── post.js
│ ├── resume.js
│ ├── message.js
│ └── admin.js
├── router/index.js # 路由与导航守卫
├── store/index.js # Vuex 状态
├── components/ # 公共组件
├── views/
│ ├── Login.vue # 登录/注册页
│ ├── user/ # 用户端页面
│ │ ├── Layout.vue
│ │ ├── Home.vue
│ │ ├── PostList.vue
│ │ ├── PostDetail.vue
│ │ ├── CreatePost.vue
│ │ ├── Resume.vue
│ │ ├── Message.vue
│ │ └── Profile.vue
│ └── admin/ # 管理端页面
│ ├── Layout.vue
│ ├── Dashboard.vue # 数据看板(含 ECharts 图表)
│ ├── UserManage.vue
│ ├── PostManage.vue
│ └── NoticeManage.vue
└── assets/ # 静态资源
环境要求
-
Python 3.9+
-
Node.js 16+
-
MySQL 5.7+(或 MariaDB 10.2+)
-
npm 或 yarn
快速开始
1. 克隆项目
git clone <repository-url>
cd c71
2. 数据库初始化
在 MySQL 中执行建库建表脚本:
mysql -u root -p < database/init.sql
或在 MySQL 命令行中:
source /path/to/database/init.sql
脚本会创建数据库 job_platform、8 张表(用户、帖子、评论、分类、简历、私信、公告),并插入 8 个初始职位分类。
3. (可选)导入测试数据
如需快速体验,可先启动后端一次(让管理员自动创建),再生成并导入测试数据:
# 生成 seed_data.sql
cd backend && python run.py seed
# 导入数据库(需先 cd 回项目根目录)
mysql -u root -p --default-character-set=utf8mb4 job_platform < database/seed_data.sql
若在 MySQL 内用 source 导入,需先执行 SET NAMES utf8mb4; 再 source database/seed_data.sql。
测试数据包含:10 个普通用户(密码均为 123456)、12 篇帖子、12 条评论、6 条私信、5 份简历、3 条公告。
4. 后端启动
cd backend
pip install -r requirements.txt
修改 app/config.py 中的数据库连接信息(见下方 配置说明),然后:
python run.py
后端默认运行在 http://localhost:5000。首次启动会自动创建管理员账号(admin / admin123)。
5. 前端启动
cd frontend
npm install
npm run serve
前端默认运行在 http://localhost:8080,开发环境已配置代理到后端。访问 http://localhost:8080 即可使用。
配置说明
后端配置 backend/app/config.py
| 配置项 | 说明 | 默认值 |
|---|---|---|
MYSQL_HOST |
MySQL 主机 | localhost |
MYSQL_PORT |
MySQL 端口 | 3306 |
MYSQL_USER |
数据库用户名 | root |
MYSQL_PASSWORD |
数据库密码 | root |
MYSQL_DB |
数据库名 | job_platform |
SECRET_KEY |
Flask 密钥 | job-platform-secret-2026 |
JWT_SECRET_KEY |
JWT 密钥 | jwt-job-platform-2026 |
JWT_ACCESS_TOKEN_EXPIRES |
Token 有效期 | 7d |
ALLOWED_EXTENSIONS |
图片上传格式 | png, jpg, jpeg, gif, webp |
MAX_CONTENT_LENGTH |
单文件最大 5MB | 5MB |
前端代理 frontend/vue.config.js
开发时 /api 和 /uploads 会代理到 http://localhost:5000,无需修改后端端口即可联调。
默认账号
| 角色 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| 管理员 | admin | admin123 | 首次启动时自动创建 |
| 普通用户 | zhangsan、lisi、wangwu 等 | 123456 | 仅在使用 seed_data 导入后存在 |
功能模块详解
用户端
| 模块 | 路径 | 功能 |
|---|---|---|
| 登录注册 | /login |
登录、注册,支持 Tab 切换 |
| 首页 | /user/home |
互助广场入口、公告展示 |
| 帖子列表 | /user/posts |
按分类/类型筛选、分页 |
| 帖子详情 | /user/posts/:id |
查看、评论、回复 |
| 发帖 | /user/posts/create |
选择类型(求职互助/内推机会/面经分享)、填写标题、内容、可选公司/职位等 |
| 在线简历 | /user/resume |
编辑个人简历、在线预览 |
| 私信 | /user/messages |
收发私信、未读提醒 |
| 个人中心 | /user/profile |
修改昵称、头像、联系方式、毕业信息、修改密码 |
管理端
| 模块 | 路径 | 功能 |
|---|---|---|
| 数据看板 | /admin/dashboard |
统计卡片、近 7 天趋势折线图、帖子类型环形图、分类发帖柱状图、最新帖子/用户列表 |
| 用户管理 | /admin/users |
用户列表、搜索、启用/禁用、删除 |
| 帖子管理 | /admin/posts |
帖子列表、搜索、删除 |
| 公告管理 | /admin/notices |
公告列表、新增、删除 |
API 接口概览
| 模块 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 认证 | POST | /api/auth/register |
注册 |
| POST | /api/auth/login |
登录 | |
| GET | /api/auth/profile |
获取个人信息 | |
| PUT | /api/auth/profile |
更新个人信息 | |
| POST | /api/auth/avatar |
上传头像 | |
| 帖子 | GET | /api/posts |
帖子列表、分页 |
| GET | /api/posts/:id |
帖子详情 | |
| POST | /api/posts |
发帖 | |
| DELETE | /api/posts/:id |
删除帖子(仅管理员) | |
| 评论 | GET | /api/posts/:id/comments |
评论列表 |
| POST | /api/posts/:id/comments |
发表评论 | |
| 公告 | GET | /api/notices |
公告列表 |
| POST | /api/notices |
发布公告(管理员) | |
| DELETE | /api/notices/:id |
删除公告(管理员) | |
| 简历 | GET | /api/resume |
获取简历 |
| PUT | /api/resume |
更新简历 | |
| 私信 | GET | /api/messages |
收发私信、未读数 |
| POST | /api/messages |
发送私信 | |
| 管理 | GET | /api/admin/stats |
统计与图表数据 |
| GET | /api/admin/users |
用户列表 | |
| PUT | /api/admin/users/:id/status |
启用/禁用用户 | |
| DELETE | /api/admin/users/:id |
删除用户 | |
| GET | /api/admin/posts |
帖子列表 | |
| DELETE | /api/admin/posts/:id |
删除帖子 | |
| GET | /api/admin/categories |
分类列表 | |
| POST | /api/admin/categories |
新增分类 | |
| DELETE | /api/admin/categories/:id |
删除分类 |










