社区活动管理系统 — 三端功能与实现说明
本文按 普通成员 / 社团干部 / 系统管理员 三个端介绍功能与代码实现,

目录
- 一、项目概述
- 二、技术栈与工程结构
- 三、角色划分与路由壳层
- 四、普通成员端(前台)
- 五、社团干部端(/manage)
- 六、系统管理员端(/admin)
- 七、认证、权限与安全
- 八、核心业务流程
- 九、数据库与后端分层
- 十、环境搭建与演示账号
一、项目概述
社区活动管理系统面向高校或社区场景:成员浏览活动、加入社团、报名与签到;社团干部维护社团资料、发布活动、审核报名、发起签到;系统管理员审核社团与活动上架、管理用户、查看全站统计。
系统采用 前后端分离:后端 Spring Boot 单体 API(端口 8080),前端 Vue 3 + Element Plus(开发端口 5173,代理 /api → 8080)。
二、技术栈与工程结构
| 后端 | JDK 17、Spring Boot 3.2.5、Spring Security、JWT、MyBatis-Plus、MySQL 8 |
| 前端 | Vue 3、TypeScript、Vite、Pinia、Vue Router、Element Plus、ECharts |
| 数据库 | community_activity,字符集 utf8mb4 |
目录结构(核心)
├── backend/ # Spring Boot 后端
│ └── src/main/java/com/community/activity/
│ ├── controller/ # REST 接口
│ ├── service/ # 业务逻辑
│ ├── mapper/ # MyBatis-Plus
│ ├── entity/ # 实体
│ ├── dto/ # 请求/响应 DTO
│ └── security/ # JWT 过滤器、UserDetails
├── frontend/
│ └── src/
│ ├── layouts/ # MainLayout / OfficerLayout / AdminLayout
│ ├── views/ # 页面组件
│ ├── api/ # axios 封装
│ └── router/index.ts # 路由与守卫
├── sql/
│ ├── schema.sql # 建表
│ └── data.sql # 种子数据
└── init-db.bat # 一键初始化数据库
统一响应:Result<T>,code=0 表示成功;日期时间 JSON 格式为 yyyy-MM-dd HH:mm:ss。
三、角色划分与路由壳层
系统角色存于 sys_user + sys_user_role + sys_role,编码为:
| USER | 普通成员 | / 活动广场 |
| OFFICER | 社团干部 | /manage 干部工作台 |
| ADMIN | 系统管理员 | /admin 管理控制台 |
种子账号角色 互斥(一人一角):member / officer / admin,密码均为 password。
三端壳层(Layout)
| 成员前台 | /、/clubs、/my | MainLayout.vue | 未登录访客 + USER;管理员可浏览前台 |
| 干部工作台 | /manage/** | OfficerLayout.vue | OFFICER(及兼干部身份的管理员) |
| 管理后台 | /admin/** | AdminLayout.vue | ADMIN |
路由守卫要点(router/index.ts + stores/auth.ts):
- 干部(非管理员)仅能访问 /manage/**,访问活动广场等前台路径会重定向到 /manage。
- 管理员登录后默认进入 /admin,也可浏览前台活动详情等页面。
- 需登录路由带 meta.requiresAuth;管理端带 requiresAdmin;发布活动页带 requ



