参观南科大
一款支持校园参观预约与二维码验证门禁的微信小程序,在南科大上线使用。5 人团队历时 6 个月开发,服务用户超 1 万人次。我主要负责后端开发,包括设计并实现 Spring Boot API 层、身份认证、缓存及容器化部署。
亮点
- 上线微信小程序,6 个月生命周期内服务超 1 万名用户
- 实现微信 OAuth 登录与 JWT 签发——
wx.logincode 换取 → session 加密 → 返回签名 JWT 给客户端 - 集成 Redis 缓存高频查询(预约时段、新闻列表),降低高峰访问期的数据库压力
- 设计 9 个 Controller 的 RESTful API(预约、论坛、新闻、用户、二维码认证),通过 Spring Data JDBC 对接 PostgreSQL
- 使用 Docker Compose 将完整栈(应用 + PostgreSQL)容器化并部署至腾讯云
- 后端通过 JUnit 服务层测试,配合 JaCoCo 生成覆盖率报告
系统概览
小程序面向三类用户角色:访客(预约参观、扫码入校)、管理员(审核预约、发布新闻)和注册用户(论坛、校园地图、个人主页)。
终端用户文档概览——登录、预约、新闻、论坛及管理员审核流程
后端架构
技术栈: Spring Boot · Spring Data JDBC · PostgreSQL · Redis · JWT · WeChat OAuth
后端 RESTful 接口组织为 9 个 Controller:
| Controller | 职责 |
|---|---|
WxLoginController | 微信 OAuth code 换取、session 加密、JWT 签发 |
AppointmentController | 预约创建、状态管理、二维码验证 |
UserController | 用户信息读写 |
NewsController | 校园新闻 CRUD(仅管理员发布) |
ForumController | 论坛帖子与话题 |
CommentController | 帖子评论线程 |
ForumLikeController | 点赞/取消点赞 |
ForumResourceController | 帖子附件 |
ImageController | 图片上传与读取 |
认证使用自定义 JWT 拦截器——每个请求携带包含加密微信 session 的签名 token,拦截器解密验证后路由至对应 Controller。
部署
应用通过 Docker 容器化,Docker Compose 编排:Spring Boot 服务和 PostgreSQL 以独立容器运行,通过环境变量配置。
Docker 构建与 compose up:所有层拉取完成,应用和数据库容器启动
Docker Desktop:应用(562 MB)和 PostgreSQL 容器在腾讯云上运行
测试
后端服务逻辑通过 JUnit 测试,使用 Spring 的 @Autowired 注入。JaCoCo 在每次测试运行后生成各包的覆盖率报告。
JaCoCo 覆盖率报告——服务层和 Controller 包;实体层漏检指令接近零
技术概览
| 角色 | 前端 + 部分后端 |
| 团队 | 5 人 |
| 规模 | 用户超 1 万人次 · 6 个月生命周期 |
| 后端 | Java 17, Spring Boot, Spring Data JDBC, PostgreSQL, Redis |
| 认证 | WeChat OAuth + JWT + AES session 加密 |
| 前端 | 微信原生框架, Vant Weapp, WeUI |
| 部署 | Docker, Docker Compose, 腾讯云 |
| 测试 | JUnit, JaCoCo(后端);Minium + Python(前端) |
| 代码量 | ~2,900 行 Java(后端)· ~4,300 行 JS/WXML(前端) |