参观南科大

一款支持校园参观预约与二维码验证门禁的微信小程序,在南科大上线使用。5 人团队历时 6 个月开发,服务用户超 1 万人次。我主要负责后端开发,包括设计并实现 Spring Boot API 层、身份认证、缓存及容器化部署。

后端 前端


亮点

  • 上线微信小程序,6 个月生命周期内服务超 1 万名用户
  • 实现微信 OAuth 登录与 JWT 签发——wx.login code 换取 → 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(前端)