Files
qipai/docs/devlogs/2026-06-24-M08-A-顾客端.md
T
2026-06-25 12:07:09 +08:00

8.8 KiB
Raw Blame History

M08-A 顾客端

本次工程增量

  • 后端新增顾客端公开门店详情和房间列表接口:GET /app-api/stores/:storeIdGET /app-api/stores/:storeId/rooms,继续通过 x-wechat-appid 与可选 tenant-id 解析租户,房间只返回未删除且启用的公开数据。
  • 小程序新增登录态封装,所有需登录接口自动携带 Authorization: Bearer <token>;首页门店卡片可进入门店详情。
  • 门店详情页加载门店资料、公开房间列表和受控 Wi-Fi;Wi-Fi 只在登录后请求 /app-api/stores/:storeId/wifi
  • 房间详情页接入报价、预占、测试支付创建和测试支付回调完成,形成顾客端下单链路的本地可验证入口。
  • 新增 scripts/check-miniapp-m08-a.mjs,检查小程序页面注册、固定生产 API 域名、登录和 M08-A 关键接口调用。

验收结果

  • node scripts/check-miniapp-m08-a.mjsPASS。
  • npm run buildbackend/):PASS。
  • node tests/store-discovery.test.mjsPASS。
  • node tests/pricing.test.mjsPASS。
  • node tests/payment.test.mjsPASS。
  • npm testbackend/):PASS。

状态

M08-A 仍为 PARTIAL。本次完成顾客端第一段工程闭环,但订单列表、开门、续费、取消、换房、分享、余额、优惠券、套餐、个人中心、生产微信支付调起和真机合法域名验证仍未完成,游标继续停留在 M08-A。

提交

  • 工程提交:4ac2c96
  • 远端校验:push 后执行 HEAD == origin/main

2026-06-24 续接:订单列表与详情

  • 后端新增顾客端订单查询服务和路由:GET /app-api/ordersGET /app-api/orders/:orderId,按本人 qipai_order_user_access 与门店管理范围裁剪数据。
  • 小程序新增 pages/orders/listpages/orders/detail,可查看我的订单、订单详情、状态历史、取消测算和取消订单入口;房间预占成功后可直接进入订单详情。
  • scripts/check-miniapp-m08-a.mjs 扩展检查订单页注册和订单相关真实 API 调用。

验收:

  • node scripts/check-miniapp-m08-a.mjsPASS。
  • npm testbackend/):PASS。

状态:

  • M08-A 仍为 PARTIAL;开门、续费、换房、分享、余额、优惠券、套餐、个人中心、真实微信支付调起和真机合法域名验证待继续。

2026-06-24 续接:顾客端开门入口

  • 后端新增顾客订单开门权限仓储,GET/POST 链路只允许本人未撤销订单、订单状态为 PAID/RESERVED/IN_PROGRESS 且处于开始前 30 分钟到结束时间之间的订单开门。
  • 新增 POST /app-api/orders/:orderId/open-door,按订单上下文构造最小 device.write 权限并调用现有门控服务;顾客端强制 holdopen=0,不暴露后台设备控制接口。
  • 小程序订单详情页新增“开门”按钮,调用订单绑定的 app-api 开门入口。
  • scripts/check-miniapp-m08-a.mjs 扩展检查 open-door 调用。

验收:

  • node scripts/check-miniapp-m08-a.mjsPASS。
  • node tests/device-control.test.mjsPASS。
  • npm testbackend/):PASS。

状态:

  • M08-A 仍为 PARTIAL;续费、换房、分享、余额、优惠券、套餐、个人中心、真实微信支付调起和真机合法域名/实物开门验证待继续。

2026-06-25 续接:顾客端续费、换房与分享

  • 后端新增顾客专用订单调整入口:POST /app-api/orders/:orderId/renewPOST /app-api/orders/:orderId/change-room
  • 顾客续费只允许本人未撤销订单访问,继续复用服务端时段冲突、状态和价格计算;顾客换房额外限制目标房间必须属于原订单门店,避免跨门店改单。
  • 小程序订单详情页新增续费分钟、换房目标房间 ID、分享有效期输入;续费/换房调用真实 app-api 并显示差价,分享调用 POST /app-api/orders/:orderId/shares 生成临时口令。
  • scripts/check-miniapp-m08-a.mjs 扩展检查 /renew/change-room/shares 调用。

验收:

  • npm run buildbackend/):PASS。
  • node scripts/check-miniapp-m08-a.mjsPASS。
  • node tests/order-management.test.mjsPASS。
  • npm testbackend/):PASS。

状态:

  • M08-A 仍为 PARTIAL;余额、优惠券、套餐、个人中心、生产微信支付调起、真机合法域名和实物开门验证待继续。

提交:

  • 工程提交:874b9b8
  • 远端校验:待本轮 push 后执行 HEAD == origin/main

2026-06-25 续接:顾客端个人中心

  • 后端新增 MemberProfileService.getMyProfile,按当前登录顾客读取本人资料、余额、优惠券/套餐汇总、充值消费摘要和最近钱包账单。
  • 新增 GET /app-api/profile,校验登录态与 profile.read 权限,只返回当前用户本人数据;同时补上生产 server.ts 中的会员路由注册。
  • 新增 backend/tests/member-profile-route.test.mjs,覆盖正常读取、未登录拒绝和缺少 profile.read 拒绝。
  • 小程序新增 pages/profile/index 个人中心页,展示总余额、现金/赠送余额、可用券、套餐、套餐分钟、充值消费摘要和最近账单;首页新增个人中心入口。
  • scripts/check-miniapp-m08-a.mjs 扩展检查个人中心页面注册、/profile 调用和余额/权益/账单绑定。

验收:

  • npm run buildbackend/):PASS。
  • node scripts/check-miniapp-m08-a.mjsPASS。
  • node tests/member-profile-route.test.mjsPASS。
  • npm testbackend/):PASS。

状态:

  • M08-A 仍为 PARTIAL;优惠券/套餐明细页、充值入口、生产微信支付调起、真机合法域名和实物开门验证待继续。

提交:

  • 工程提交:7446852
  • 远端校验:待本轮 push 后执行 HEAD == origin/main

2026-06-25 续接:顾客端充值入口

  • RechargeService 新增可用充值计划查询,按租户、有效期、启用状态和可选门店过滤。
  • 后端新增 GET /app-api/recharge/plansPOST /app-api/recharge/orders,顾客登录后可查看充值计划并创建幂等充值单。
  • 生产 server.ts 接入 RechargeServiceWalletLedgerService,充值路由随真实后端启动注册。
  • 新增 backend/tests/recharge-route.test.mjs,覆盖充值计划查询、顾客充值单创建和非法请求拒绝。
  • 小程序新增 pages/recharge/index,个人中心新增充值入口,可展示实付/赠送/到账金额并创建待支付充值单。
  • scripts/check-miniapp-m08-a.mjs 扩展检查充值页面注册、/recharge/plans/recharge/orders 调用。

验收:

  • npm run buildbackend/):PASS。
  • node scripts/check-miniapp-m08-a.mjsPASS。
  • node tests/recharge-route.test.mjsPASS。
  • npm testbackend/):PASS。

状态:

  • M08-A 仍为 PARTIAL;优惠券/套餐明细页、充值微信支付调起、订单生产微信支付调起、真机合法域名和实物开门验证待继续。

提交:

  • 工程提交:dbdfe3d
  • 远端校验:待本轮 push 后执行 HEAD == origin/main

2026-06-25 续接:顾客端权益明细与微信支付调起

  • 后端 MemberProfileService 新增 getMyBenefits,按当前登录顾客读取本人优惠券和套餐持有明细,返回状态、金额、分钟、剩余次数、有效期、适用范围和冻结订单,不暴露其他用户权益。
  • 新增 GET /app-api/profile/benefits,复用登录态和 profile.read 权限校验,只允许读取当前用户本人权益。
  • backend/tests/member-profile-service.test.mjsbackend/tests/member-profile-route.test.mjs 扩展覆盖权益明细查询和本人鉴权。
  • 小程序新增 pages/benefits/index 权益明细页,个人中心新增入口,可展示优惠券和套餐的可用/锁定/已用尽状态、金额、分钟、有效期和适用范围。
  • 小程序 utils/api.js 新增 requestWechatPayment,房间下单页新增“微信支付”按钮:先创建 WECHAT 支付单,再调用 /pay/wechat/prepay,仅在后端返回真实预支付参数后调用 wx.requestPayment;测试支付路径保留。
  • scripts/check-miniapp-m08-a.mjs 扩展检查权益页注册、/profile/benefits/pay/wechat/prepaywx.requestPayment

验收:

  • npm run buildbackend/):PASS。
  • node scripts/check-miniapp-m08-a.mjsPASS。
  • node tests/member-profile-service.test.mjsPASS。
  • node tests/member-profile-route.test.mjsPASS。
  • node tests/marketing-benefit-service.test.mjsPASS。
  • npm testbackend/):PASS。
  • powershell -ExecutionPolicy Bypass -File scripts\dev\windows\test-all.ps1PASS。

状态:

  • M08-A 仍为 PARTIAL;充值微信支付调起、余额/套餐/优惠券下单抵扣深度集成、真机合法域名、真实微信支付和实物开门验证待继续。

提交:

  • 工程提交:6cb3d2d
  • 远端校验:待本轮 push 后执行 HEAD == origin/main