健康监测小程序

医疗健康 · 养生保健 案例ID: 242757
联系该工程师
微信扫码,建群沟通
作者: Edrin - 3年经验- 陕西超达汽车销售服务有限公司

案例介绍

### 整体架构

前后端分离B/S架构,后端遵循 **Controller → Service → Model** 三层划分。

**前端(UniApp + Vue 3 + Vite)**:9个页面,封装统一 `api.js`,POST+JSON通信,Token认证。

**后端(Webman + PHP 8.2)**:
- **API层**:`HealthController` 提供17个接口,中间件统一处理参数解析/Token校验/响应封装/SQL日志
- **Service层**:`HealthService`(BMR/BMI计算、混合记录排序、周期统计)、`TokenService`(Redis Token生成/验证/续期)、`AppletService`(微信登录)
- **后台**:EasyAdmin8-webman + Layui + Blade,注解路由自动生成权限节点
- **MCP**:php-mcp/server,17工具+3资源,支持AI辅助开发

**存储(MySQL + Redis)**:ThinkORM连接池(max=5)+断线重连;Redis缓存Token(24h自动续期)

### 我的负责模块和成果

- 独立全栈开发,API接口 **17个**,小程序页面 **9个**,后台控制器 **6个**
- BMR自动计算(Mifflin-St Jeor公式)、BMI自动计算、Canvas趋势图绘制
- 集成MCP AI服务(17工具+3资源)

### 难点和解决方案

1. **Canvas图表**:小程序Canvas与H5差异大 → 原生Canvas API手绘折线图,兼容性100%
2. **BMI依赖身高**:用户可能未填档案 → 查Profile,身高为0则BMI返回0,前端展示"--"
3. **Token过期**:频繁重新登录 → `verifyToken`验证成功后自动续期24h
4. **混合记录排序**:4种指标需按时间混合展示 → 各查5条合并,`usort`降序取前10
5. **常驻内存断连**:MySQL wait_timeout断开 → 连接池(max=5)+断线重连+心跳50s

---

相似案例推荐

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在 1 小时内与您联系确认。

1小时精推人才

需求方专属客服,免费梳理匹配

需求方客服微信二维码
扫码加微信 · 客服人工对接
微信沟通 联系需求方端客服 看中这位工程师了?客服帮你 1 小时对接沟通 → ×