Files
mkdocs/docs/Obsidian笔记体系/Projects/陪诊/修复计划0512.md
renjianbo 1fc3049902 chore: 同步知识库最新更新
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-23 00:02:45 +08:00

16 KiB
Raw Blame History

RLZ 陪诊SAAS 微信小程序下单流程 —— 深度分析

一、整体架构

微信小程序(coupon/) ←→ 后端API(:8039) ←→ MySQL ↑ Android陪护端(peizhen/) ┘ Web后台(rlz-ui :8050) ┘

二、现有流程(有缺陷)

┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌────────────┐ │ 1.微信登录 │ → │ 2.选服务 │ → │ 3.填订单信息 │ → │ 4.支付成功页│ │ (my页面) │ │ (peizhen) │ │(peizhendetail)│ │(paysuccess)│ └──────────┘ └──────────┘ └──────────────┘ └────────────┘ ✅ ✅ ⚠️ ❌

三、逐环节分析

环节 1:微信登录 — pages/my/my.js

现状:✅ 代码逻辑正确,但缺少必要条件

wx.login() → 获取code → getPhoneNumber按钮 → /weixinLogin

后端 /weixinLogin 逻辑(SysLoginController.java:186):

  1. 用 code 调微信 jscode2session 获取 openid + session_key
  2. 解密 encryptedData 拿到手机号
  3. 查数据库,用户存在则更新 openid,不存在则自动创建(userType="C" = 患者)
  4. 返回 {userId, token, phoneNumber}

必要条件:

  • appid=wx2d5ca40a16ebd1b3 + secret=8620... — 已配置在代码中
  • 微信小程序必须在微信开放平台注册,appid 必须匹配
  • 需要微信开发者工具或真机调试才能触发 getPhoneNumber

环节 2:选择服务类型 — pages/peizhen/peizhen.js

现状:⚠️ 医院和服务都硬编码在前端

医院选择器和医院列表都是写死的数组,不从后端加载(虽然后端有 /system/hospital/list API)。

环节 3:填写订单 — pages/peizhen/peizhendetail.js

现状:⚠️ 下单成功,但跳过了支付

// 当前代码:下单 → 直接跳支付成功页 payment() { POST /system/order/insertOrderPz // 创建订单 → wx.navigateTo('paysuccess') // ❌ 直接跳转了,没支付! }

后端 insertOrderPz 的问题: // RlzOrderController.java:103 // 微信支付创建代码全部被注释掉了! // 原本应该:创建订单 → 调微信支付 → 返回 prepay_id // 现在只返回 orderId

环节 4:支付成功页 — shopping/pages/paysuccess/paysuccess.js

现状:❌ 代码来自旧项目,完全不适用

paySuccess() { // 调用不存在的旧API! url: app.buildUrl("/app/Goddesswechat/paySuccess") // ❌ 后端没这个接口 }

这个文件是从一个叫 "Goddess" 的电商项目复制过来的,含有拼团逻辑,跟陪诊完全无关。


四、后端支付能力

后端微信支付代码是完整的,只是被注释掉了:

┌──────────────────┬─────────────────────────────────────┬─────────────────────────┐ │ 能力 │ 位置 │ 状态 │ ├──────────────────┼─────────────────────────────────────┼─────────────────────────┤ │ 创建微信支付订单 │ V3WXPayUtil.createOrder() │ ✅ 完整,返回 prepay_id │ ├──────────────────┼─────────────────────────────────────┼─────────────────────────┤ │ 微信支付回调 │ /system/weixin/wxPayNotify │ ✅ 完整 │ ├──────────────────┼─────────────────────────────────────┼─────────────────────────┤ │ 退款回调 │ /system/weixin/wxRefundNotify │ ✅ 完整 │ ├──────────────────┼─────────────────────────────────────┼─────────────────────────┤ │ 主动查询支付 │ /system/order/weixinPay/{orderId} │ ✅ 完整 │ ├──────────────────┼─────────────────────────────────────┼─────────────────────────┤ │ 退款申请 │ /system/order/refundOrder/{orderId} │ ✅ 完整 │ └──────────────────┴─────────────────────────────────────┴─────────────────────────┘

支付配置 (WXPayConstants.java):


五、数据库

订单表 rlz_order 关键字段:

┌─────────────┬────────────┬───────────────────────────────────────────────────────────────┐ │ 字段 │ 含义 │ 说明 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ order_id │ 订单ID │ 自增 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ status │ 订单状态 │ -2取消/-1拒单/0待接单/2已支付/3服务中/4已完成/5退款中/7已退款 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ c_id │ 患者ID │ 外键到 sys_user │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ b_id │ 陪护人员ID │ 硬编码为104 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ hospital_id │ 医院ID │ 外键到 sys_hospital │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ yugu_money │ 预估金额 │ │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ yuliu9 │ 订单大类 │ 1=陪护 2=陪诊 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ yuliu10 │ 订单类型 │ 1=全程陪诊 2=诊前约号 3=取送结果 4=代办问诊 │ ├─────────────┼────────────┼───────────────────────────────────────────────────────────────┤ │ yuliu5 │ 商户订单号 │ 支付回调后设置 │ └─────────────┴────────────┴───────────────────────────────────────────────────────────────┘


六、要跑通完整流程,需要做的事

❌ 阻塞 ⚠️ 有问题但可绕过 ✅ 正常

微信登录 ──→ 选服务 ──→ 填订单 ──→ 微信支付 ──→ 支付成功 ──→ 订单列表 ✅ ⚠️ ⚠️ ❌ ❌ ⚠️

必须修复的问题:

┌─────┬────────────────────────────┬─────────────────────┬────────────────────────────────────────────────────────────────────────┐ │ # │ 问题 │ 文件 │ 修复方案 │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 1 │ 小程序后端地址写死失效域名 │ app.js │ 改为 http://101.43.95.130:8039 │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 2 │ 下单后没调微信支付 │ peizhendetail.js │ 下单成功→调 /system/order/weixinPay/{orderId} → 获取 prepay_id → │ │ │ │ │ wx.requestPayment() │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 3 │ 支付成功页是旧项目代码 │ paysuccess.js │ 支付成功后查订单状态,显示结果 │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 4 │ 微信支付回调域名 │ WXPayConstants.java │ NOTIFY_URL 需改为可公网访问的地址 │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 5 │ 需要微信开发者工具 │ — │ 下载微信开发者工具,导入 coupon/ 目录 │ ├─────┼────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────┤ │ 6 │ appid 所有权 │ — │ 确认 wx2d5ca40a16ebd1b3 是否还在用,或用新 appid │ └─────┴────────────────────────────┴─────────────────────┴────────────────────────────────────────────────────────────────────────┘

建议的设计方案(可选):

┌─────┬─────────────────┬────────────────────────────────────────────┐ │ # │ 建议 │ 说明 │ ├─────┼─────────────────┼────────────────────────────────────────────┤ │ A │ 医院数据后端化 │ 删除硬编码,从 /system/hospital/list 加载 │ ├─────┼─────────────────┼────────────────────────────────────────────┤ │ B │ 服务/价格后端化 │ 建 sys_service_type 表,从后端加载 │ ├─────┼─────────────────┼────────────────────────────────────────────┤ │ C │ 陪护人员ID │ 去掉硬编码 bId: "104",由后端分配 │ ├─────┼─────────────────┼────────────────────────────────────────────┤ │ D │ 加验证码登录 │ 调用 /system/msm 发验证码 + /smsLogin 登录 │ └─────┴─────────────────┴────────────────────────────────────────────┘


七、建议修复顺序

第一步:改小程序后端地址 + 跑通微信登录 (30分钟) 第二步:修复下单→支付→支付完成完整链路 (2小时) 第三步:修复支付成功页 (30分钟) 第四步:清理硬编码,医院/服务数据后端化 (1小时)