Files
suixinkan_ios_new/suixinkan/Features/Orders/Orders.md

2.6 KiB
Raw Blame History

Orders 模块业务逻辑

模块职责

Orders 模块负责登录后的订单 Tab。当前已覆盖订单管理和核销订单两个入口提供列表展示、筛选、分页、刷新、订单详情、扫码核销和手动核销闭环。

当前仍不迁移退款、历史拍摄、任务上传、视频预告、完整拍摄详情等长尾流程;这些入口统一进入安全占位页,后续按独立模块逐个迁移。

核心对象

  • OrdersView:订单 Tab 根视图,读取 AccountContextPermissionContextAppRouterOrdersAPI
  • OrdersViewModel:管理订单子入口、筛选条件、分页状态、加载状态和手动核销状态。
  • OrderDetailViewModel:管理订单详情接口加载、错误提示和列表摘要兜底展示。
  • OrdersAPI:封装订单列表、核销订单列表和订单核销接口。
  • OrdersEntry:表示订单 Tab 内部入口,包含订单管理和核销订单。
  • OrdersRoute:表示订单模块二级页面路由,包含订单详情和核销订单详情。
  • OrderNumberParser:负责从扫码内容中解析订单号,支持 URL query、键值文本和纯订单号。

数据流程

订单页面从 AccountContext.currentScenic 读取当前景区 IDPermissionContext.currentRole 读取角色 ID。景区管理员角色 roleId == 53 使用景区管理员订单接口,其他角色使用摄影师订单接口。

订单管理支持状态筛选、手机号搜索、开始/结束日期筛选。筛选变更后从第一页重新加载,滚动到列表底部时加载下一页。

订单管理点击订单卡片进入订单详情。详情页优先用 /api/app/store/order/detailstore_id + order_number 拉取完整数据;缺少门店 ID 或接口失败时,保留列表卡片摘要作为兜底展示,并提示当前详情不完整。

核销订单支持扫码和手动输入订单号。扫码使用 AVFoundation不缓存扫码结果扫码成功后先用 OrderNumberParser 提取订单号,命中当前核销列表时滚动定位并高亮卡片,未命中时填入订单号并允许继续核销。核销前统一弹确认框,确认后调用核销接口。核销成功后重新拉取第一页核销订单,并重置分页状态;核销失败只清理提交状态,不刷新列表。

路由边界

首页 photographer_orders/scenic-order-manage 会进入订单管理,verification_order 会进入核销订单。订单详情和核销订单详情已接入 AppRoute.orders 真实路由push 后继续隐藏 TabBar。

退款、历史拍摄、任务上传、视频预告等尚未迁移的能力仍进入占位页,避免入口崩溃。