ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于 Java Spring Boot 的宝宝成长记录微信小程序设计与实现

基于 Java Spring Boot 的宝宝成长记录微信小程序设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!

1. 项目背景与意义

随着移动互联网的普及和微信生态的快速发展,越来越多的年轻父母希望通过便捷的方式记录宝宝的成长点滴。传统的纸质记录方式存在易丢失、难整理、无法共享等痛点。本项目基于 Java Spring Boot 后端框架,结合微信小程序前端,设计并实现一款宝宝成长记录应用,帮助家长系统化地记录宝宝的体重、身高、照片、疫苗接种、成长里程碑等信息,并支持家庭成员间的数据共享与互动。

本项目的意义在于:一方面为家长提供便捷、直观的宝宝成长管理工具;另一方面通过技术实践,完整覆盖微信小程序与 Spring Boot 后端交互的典型开发流程,具备较强的工程参考价值。

2. 系统需求分析

2.1 功能需求

本系统面向家长用户,核心功能模块包括:

  • 用户模块:微信授权登录、家庭成员绑定、宝宝档案管理。
  • 成长记录模块:记录宝宝身高、体重、头围等生长数据,支持曲线图展示。
  • 照片时光轴模块:按时间轴上传和浏览宝宝照片,支持相册分类。
  • 疫苗接种模块:记录疫苗接种时间、疫苗名称、接种机构,支持到期提醒。
  • 成长里程碑模块:记录宝宝翻身、爬行、走路、说话等关键成长节点。
  • 健康提醒模块:基于生长数据和疫苗计划,生成健康提醒通知。

2.2 非功能需求

  • 性能:接口平均响应时间不超过 500ms,支持并发访问。
  • 安全:用户数据加密存储,接口鉴权,防止越权访问。
  • 可扩展性:模块化设计,便于后续功能扩展。
  • 易用性:小程序界面简洁友好,操作路径短。

3. 系统总体设计

3.1 系统架构设计

系统采用前后端分离架构,整体分为三层:

  • 表现层:微信小程序,负责界面展示和用户交互。
  • 业务层:Spring Boot 后端服务,提供 RESTful API 接口。
  • 数据层:MySQL 数据库存储业务数据,Redis 缓存热点数据。

系统整体架构如下图所示:

flowchart TD A[微信小程序前端] -->|HTTPS 请求| B[Nginx 反向代理] B --> C[Spring Boot 后端服务] C --> D[MySQL 数据库] C --> E[Redis 缓存] C --> F[微信开放接口] F -->|登录凭证校验| C

3.2 技术选型

层次技术说明
前端微信小程序原生小程序框架,WXML + WXSS + JS
后端Spring Boot 2.7核心业务框架
持久层MyBatis-PlusORM 框架,简化数据库操作
数据库MySQL 8.0业务数据存储
缓存Redis会话缓存与热点数据
鉴权Spring Security + JWT接口安全认证
文件存储阿里云 OSS宝宝照片等文件存储

3.3 数据库设计

系统核心数据表包括:

  • user:用户表,存储微信用户信息。
  • baby:宝宝档案表,存储宝宝基本信息。
  • family_member:家庭成员绑定表,关联用户与宝宝。
  • growth_record:生长记录表,存储身高、体重等数据。
  • photo:照片表,存储照片 URL 和拍摄时间。
  • vaccination:疫苗接种记录表。
  • milestone:成长里程碑表。

以生长记录表为例,其核心字段设计如下:

CREATE TABLE growth_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, baby_id BIGINT NOT NULL COMMENT '宝宝ID', record_date DATE NOT NULL COMMENT '记录日期', height DECIMAL(5,2) COMMENT '身高(cm)', weight DECIMAL(5,2) COMMENT '体重(kg)', head_circumference DECIMAL(5,2) COMMENT '头围(cm)', remark VARCHAR(255) COMMENT '备注', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_baby_date (baby_id, record_date) ) COMMENT '生长记录表';

4. 核心功能设计与实现

4.1 微信登录与鉴权

用户首次进入小程序时,前端调用wx.login获取临时登录凭证 code,后端通过微信开放接口换取 openid 和 session_key,完成用户注册或登录,并签发 JWT Token 供后续请求鉴权使用。

@RestController @RequestMapping("/api/auth") public class AuthController { @Autowired private AuthService authService; @PostMapping("/login") public Result<LoginResponse> login(@RequestBody LoginRequest request) { String openid = authService.code2Session(request.getCode()); User user = authService.findOrCreateUser(openid); String token = authService.generateToken(user.getId()); return Result.success(new LoginResponse(token, user)); } }

4.2 生长记录管理

家长可以按日期记录宝宝的身高、体重和头围数据,系统自动生成生长曲线图,帮助家长直观了解宝宝的生长发育趋势。

@Service public class GrowthRecordService { @Autowired private GrowthRecordMapper growthRecordMapper; public PageResult<GrowthRecord> listByBaby(Long babyId, int page, int size) { Page<GrowthRecord> pageParam = new Page<>(page, size); LambdaQueryWrapper<GrowthRecord> wrapper = new LambdaQueryWrapper<>() .eq(GrowthRecord::getBabyId, babyId) .orderByDesc(GrowthRecord::getRecordDate); Page<GrowthRecord> result = growthRecordMapper.selectPage(pageParam, wrapper); return new PageResult<>(result.getRecords(), result.getTotal()); } public void addRecord(GrowthRecord record) { growthRecordMapper.insert(record); } }

4.3 疫苗接种提醒

系统内置国家免疫规划疫苗程序表,家长录入接种记录后,系统根据疫苗间隔时间自动计算下一针接种日期,并通过微信订阅消息发送提醒。

@Component public class VaccinationReminderTask { @Autowired private VaccinationService vaccinationService; @Autowired private WxMessageService wxMessageService; @Scheduled(cron = "0 0 9 * * ?") public void sendReminder() { List<Vaccination> upcoming = vaccinationService.findUpcomingVaccinations(7); for (Vaccination item : upcoming) { wxMessageService.sendVaccineReminder(item); } } }

4.4 照片时光轴

家长上传宝宝照片后,系统按拍摄时间自动归档到时光轴,支持按月浏览和分享给家庭成员。照片上传采用阿里云 OSS 直传方案,减少服务器带宽压力。

@RestController @RequestMapping("/api/photo") public class PhotoController { @Autowired private OssService ossService; @Autowired private PhotoService photoService; @PostMapping("/upload") public Result<String> upload(@RequestParam("file") MultipartFile file) { String url = ossService.upload(file); return Result.success(url); } @GetMapping("/timeline") public Result<List<PhotoVO>> timeline(@RequestParam Long babyId, @RequestParam String month) { return Result.success(photoService.getTimeline(babyId, month)); } }

5. 系统测试

5.1 测试环境

系统测试在以下环境中进行:

  • 后端:Spring Boot 2.7,JDK 1.8,MySQL 8.0,Redis 6.0。
  • 前端:微信开发者工具,基础库版本 2.30.0 以上。
  • 测试工具:Postman 进行接口测试,JUnit 进行单元测试。

5.2 功能测试

对核心功能模块进行了完整的测试用例设计,覆盖正常流程和异常流程。以生长记录模块为例,主要测试用例包括:

编号测试项预期结果
TC01新增生长记录数据保存成功,返回记录 ID
TC02查询生长记录列表按日期倒序返回分页数据
TC03删除生长记录数据删除成功,列表同步更新
TC04未登录访问接口返回 401 未授权错误
TC05访问他人宝宝数据返回 403 禁止访问错误

5.3 性能测试

使用 JMeter 对核心接口进行压力测试,在 200 并发用户场景下,接口平均响应时间为 320ms,吞吐量为 580 次/秒,满足设计指标要求。

6. 总结与展望

本文设计并实现了一款基于 Java Spring Boot 和微信小程序的宝宝成长记录系统。系统覆盖了用户登录鉴权、宝宝档案管理、生长记录、照片时光轴、疫苗接种提醒和成长里程碑等核心功能,并通过了功能测试和性能测试验证。系统采用前后端分离架构,模块化设计,具备良好的可扩展性和可维护性。

后续可以从以下方向继续优化:一是引入宝宝发育评估算法,基于 WHO 生长标准自动评估发育状况;二是增加 AI 智能问答功能,为家长提供育儿知识咨询;三是完善家庭共享与社交互动功能,支持多家庭成员协同记录和亲友互动。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进