diff --git a/.workbuddy/memory/2026-09-01.md b/.workbuddy/memory/2026-09-01.md new file mode 100644 index 0000000..376da76 --- /dev/null +++ b/.workbuddy/memory/2026-09-01.md @@ -0,0 +1,7 @@ +# 2026-09-01 工作记录 + +## 修复 getOrderQRCodeUnlimited scene 参数 bug +- 文件:`src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java` +- 问题:后台管理端调用 `/getOrderQRCodeUnlimited/e9?page=pages/event/detail/index` 时,因未传 `scene`,回退逻辑生成 `scene=orderNo=e9`,而 `pages/event/detail/index` 页面期望 `scene=e9`(直接读 options.scene)。 +- 修复:scene 取值优先级改为 `显式 scene > 自定义页面用原始 orderNo > 兼容原订单核销(orderNo=xxx)`;page 无参时默认 `package/admin/order-scan`。 +- 兼容性:原订单核销用法(不带参数)行为不变;自定义页面默认用原始 orderNo;需 `orderNo=` 格式可显式传 `?scene=orderNo=e9`。 diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java index 06eacda..50d0895 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java @@ -980,8 +980,18 @@ public class WxLoginController extends BaseController { } String apiUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + getAccessToken(loginUser.getTenantId()); final HashMap map = new HashMap<>(); - // scene 优先用入参,否则回退兼容原订单核销逻辑:orderNo=xxx - map.put("scene", StrUtil.isNotBlank(scene) ? scene : "orderNo=".concat(orderNo)); + // scene 优先级:显式 scene > 自定义页面用原始 orderNo > 兼容原订单核销(orderNo=xxx) + String sceneValue; + if (StrUtil.isNotBlank(scene)) { + sceneValue = scene; + } else if (StrUtil.isNotBlank(page)) { + // 自定义页面场景:小程序端通过 options.scene 直接读取业务值(如活动/订单号) + sceneValue = orderNo; + } else { + // 兼容原订单核销场景:scene=orderNo=xxx,默认跳转 package/admin/order-scan + sceneValue = "orderNo=".concat(orderNo); + } + map.put("scene", sceneValue); // page 优先用入参,否则回退兼容原订单核销页面 map.put("page", StrUtil.isNotBlank(page) ? page : "package/admin/order-scan"); map.put("env_version", "trial");