1. 项目背景与需求分析
医院陪护陪诊员预约系统微信小程序是针对当前医疗陪护市场需求开发的一款便捷服务工具。随着社会老龄化加剧和就医流程复杂化,越来越多的患者家属需要专业陪护人员协助完成挂号、排队、取药等就医流程。传统线下中介模式存在信息不透明、响应速度慢、服务质量难以保障等问题。
这个系统主要解决三大核心痛点:
- 患者家属无法快速找到可靠的陪护人员
- 陪护服务价格和服务内容不透明
- 服务过程缺乏有效监督和评价机制
2. 系统功能架构设计
2.1 核心功能模块
系统采用模块化设计,主要包含以下功能模块:
用户端功能:
- 注册登录(微信授权快速登录)
- 服务需求发布
- 陪护员筛选与预约
- 在线支付
- 服务评价
- 订单管理
陪护员端功能:
- 资质认证
- 服务接单
- 行程管理
- 收入提现
后台管理功能:
- 用户管理
- 订单管理
- 财务管理
- 评价管理
- 数据统计
2.2 技术架构选型
前端采用微信小程序原生开发框架,主要考虑因素:
- 开发成本低,生态完善
- 无需下载安装,使用便捷
- 可直接调用微信支付等原生能力
后端采用Node.js + MySQL技术栈:
- Node.js适合高并发场景
- MySQL关系型数据库保证数据一致性
- RESTful API接口设计
3. 核心功能实现细节
3.1 微信授权登录实现
// 小程序端代码 wx.login({ success(res) { if (res.code) { wx.request({ url: 'https://yourdomain.com/api/login', data: {code: res.code}, success(res) { // 处理登录结果 } }) } } })// 服务端代码 const axios = require('axios') const jwt = require('jsonwebtoken') async function wechatLogin(code) { // 获取openid const result = await axios.get(`https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`) // 生成token const token = jwt.sign({ openid: result.data.openid }, secretKey, {expiresIn: '7d'}) return token }3.2 服务订单状态机设计
订单状态流转是系统核心逻辑,我们采用状态机模式管理:
stateDiagram [*] --> 待接单 待接单 --> 已接单: 陪护员接单 已接单 --> 服务中: 开始服务 服务中 --> 已完成: 服务结束 已完成 --> 已评价: 用户评价 待接单 --> 已取消: 用户取消 已接单 --> 已取消: 用户取消注意:实际开发中需要处理各种异常状态,如超时未接单自动取消等
4. 数据库设计关键表
4.1 用户表(users)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | int | 主键 |
| openid | varchar(50) | 微信openid |
| user_type | tinyint | 用户类型(1-普通用户 2-陪护员) |
| phone | varchar(20) | 手机号 |
| real_name | varchar(20) | 真实姓名 |
| avatar | varchar(255) | 头像 |
| create_time | datetime | 创建时间 |
4.2 订单表(orders)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | int | 主键 |
| order_no | varchar(32) | 订单编号 |
| user_id | int | 用户ID |
| caregiver_id | int | 陪护员ID |
| hospital_id | int | 医院ID |
| service_type | tinyint | 服务类型 |
| start_time | datetime | 开始时间 |
| end_time | datetime | 结束时间 |
| status | tinyint | 订单状态 |
| price | decimal(10,2) | 价格 |
| create_time | datetime | 创建时间 |
5. 关键问题解决方案
5.1 实时位置共享实现
为实现服务过程监督,系统需要实现实时位置共享功能:
- 小程序端定期获取位置并上传:
// 获取位置 wx.getLocation({ type: 'gcj02', success(res) { // 上传位置 wx.request({ url: 'https://yourdomain.com/api/location', method: 'POST', data: { order_id: orderId, latitude: res.latitude, longitude: res.longitude } }) } })- 服务端使用WebSocket推送给客户端:
// WebSocket服务 const WebSocket = require('ws') const wss = new WebSocket.Server({ port: 8080 }) wss.on('connection', (ws) => { ws.on('message', (message) => { // 处理消息 }) // 定时推送位置信息 setInterval(() => { ws.send(JSON.stringify(locationData)) }, 5000) })5.2 服务评价体系设计
评价系统采用多维评分机制:
- 服务态度(1-5星)
- 专业程度(1-5星)
- 守时情况(1-5星)
- 文字评价
评价计算公式:
综合评分 = (服务态度×0.4 + 专业程度×0.3 + 守时情况×0.3) × 206. 性能优化方案
6.1 图片资源优化
- 使用微信图片CDN
- 实现图片懒加载
- 根据屏幕尺寸加载合适尺寸图片
6.2 接口性能优化
- 使用Redis缓存热点数据
- 数据库查询优化
- 接口合并减少请求次数
7. 安全防护措施
- 接口签名验证
- 敏感数据加密传输
- SQL注入防护
- XSS攻击防护
- 定期安全扫描
8. 项目部署方案
8.1 小程序发布流程
- 开发版本测试
- 体验版审核
- 提交微信审核
- 正式发布
8.2 服务端部署
采用Docker容器化部署:
# 构建镜像 docker build -t caregiver-app . # 运行容器 docker run -d -p 3000:3000 --name caregiver caregiver-app9. 运营数据分析
系统需要收集的关键数据指标:
- 日活用户数(DAU)
- 订单转化率
- 平均服务时长
- 用户留存率
- 评价平均分
10. 常见问题处理
微信登录失败
- 检查appid和secret配置
- 确认域名已备案且加入微信白名单
支付回调问题
- 检查商户号配置
- 验证签名算法
- 处理重复通知
位置获取失败
- 检查用户权限设置
- 提供手动输入位置功能
在实际开发过程中,我们遇到了几个值得分享的经验:
- 微信支付接口调用频率限制问题,解决方案是加入请求队列控制频率
- 位置信息漂移问题,通过百度地图API进行坐标转换解决
- 订单状态并发修改问题,使用数据库乐观锁控制
这个系统后续可以考虑加入智能匹配算法,根据陪护员的服务记录和用户评价,实现更精准的服务推荐。同时也可以扩展医院信息系统对接,实现挂号、检查等流程的线上化操作。