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

5.7 KiB
Raw Blame History

Orders 模块业务逻辑

模块职责

Orders 模块负责登录后的订单 Tab 与订单相关二级页面。当前已对齐 Android zhiflyfollow 订单列表能力:主订单列表(摄影师/非店长)、店长押金式订单 Tab、独立核销管理页以及押金订单独立入口、历史拍摄、任务上传、尾片入口和 orderType 11/14 订单来源(带客单绑定)闭环。

订单 Tab 内不再展示「订单管理 / 核销订单」分段核销管理通过首页菜单、TabBar 扫码或路由 push 进入独立页面。

门店订单详情页与核销订单详情页暂未接入,列表卡片仅展示摘要信息与卡片内操作。

当前仍不迁移独立视频播放器增强、尾片审核进度、上传后自动关联订单尾片等后端未体现的能力;多点位核销的定位 + 打卡点 Sheet 若 iOS 尚无完整能力,列表内仅预留扫码入口。

页面结构

场景 视图 说明
订单 Tab · 非店长 StoreOrderListView 对齐 Android OrderListScreen
订单 Tab · 店长 StoreAdminOrderListView 对齐 Android DepositOrderListScreen
核销管理 WriteOffListView 对齐 Android WriteOffListScreen,独立 push 页
押金订单入口 DepositOrderEntryView 首页 deposit_order* 仍保留独立入口

OrdersRootViewAppRoleCode.storeAdmin 分流店长 Tab 与主订单 Tab。

核心对象

  • StoreOrderListView:主订单 Tab 根视图,组合 OrderListHeaderViewOrderListCardViewOrdersViewModel
  • StoreAdminOrderListView:店长订单 Tab组合共享头部与店长卡片使用 StoreAdminOrderListViewModel
  • WriteOffListView:核销管理页,使用 WriteOffListViewModel,含横向状态 pill、日期筛选与扫码/手动核销。
  • OrderListHeaderView:白底状态/日期筛选头部;手机号搜索使用系统 .searchable
  • OrderListCardView:主订单卡片,对齐 Android OrderView 展示顺序与操作区。
  • OrderListComponents:状态 Chip、信息行、操作按钮、精修单选等共享组件。
  • OrderDialogViews:退款、赠送修图/视频、店长退款、核销确认弹窗。
  • OrdersViewModel:主订单列表分页、筛选、卡片操作(退款/核销/精修/取消/赠送)与订单来源。
  • StoreAdminOrderListViewModel:店长订单列表与 storeOrderList / storeOrderRefund
  • WriteOffListViewModel:核销列表筛选、分页与核销提交。
  • DepositOrderListViewModel:押金订单分页、核销、退款(独立押金入口)。
  • OrderRefundViewModel:普通订单退款金额校验与提交。
  • OrdersAPI:订单列表、核销列表、精修更新、取消、赠送、店长列表/退款等接口。
  • OrdersEntry:订单 Tab 内部入口枚举,保留 verificationOrders 供测试/推送兼容。
  • OrdersRoute:二级路由,含 writeOffList、押金详情、历史拍摄、任务上传、尾片入口。
  • OrderNumberParser:从扫码内容解析订单号。

数据流程

主订单列表

AccountContext.currentScenic 读取景区 IDPermissionContext.currentAppRole 读取角色。景区管理员(scenicAdmin)使用景区管理员订单接口且卡片只读(隐藏退款/核销/拨号/精修/赠送/取消)。

支持状态筛选(含精修筛选项)、手机号搜索、日期范围 Sheet 筛选。筛选变更后从第一页重新加载,滚动到底加载下一页。

卡片展示订单号、状态、创建时间、类型、订单来源、操作行、上传任务条orderType 19、精修单选、信息行、条件行、退款信息、备注、历史拍摄缩略图与取消订单按钮。操作受 hideOrderWriteActions 控制。

店长订单 Tab

AccountContext.currentStore 读取门店 ID调用 GET /api/app/store/order/list。筛选为全部/已支付/已完成/已退款。卡片展示项目、金额、时间、UID、手机号与退款/部分退款;线下产品订单额外展示核销按钮。仅 orderType == 19 可进详情。

核销管理

独立页面,调用 writeOffList 并支持 order_statusorder_verify_statusstart_timeend_timeuser_phone 查询参数。横向 pill全部/已支付/已完成/已核销/未核销。

扫码使用 OrderCodeScannerView命中列表时滚动高亮核销前弹确认框成功后刷新第一页。TabBar 全局扫码通过 pendingOrderScanCode 交给核销页消费。

押金订单(独立入口)

首页 deposit_order_detaildeposit_orderdeposit_order_shooting_info 进入 DepositOrderEntryView,与 Tab 内店长列表 UI 分离但共用部分 API。

订单来源(带客单绑定)

仅对 orderType == 1114 展示,景区管理员只读。绑定接口 POST .../sale-user/bind-referral-order;退款成功后若存在带客单则异步更新状态。

历史拍摄与任务上传

历史拍摄:GET .../photog/order/multi-travel/shoot-history。任务上传:仅 orderType 19先拉已核销打卡点再上传素材。

路由边界

入口 目标
photographer_orders/scenic-order-manage 订单 Tab · 主列表或店长列表
verification_order push OrdersRoute.writeOffList(核销管理)
deposit_order* push 押金订单页
TabBar 扫码 核销管理页消费扫码结果

AppRouter.routeToOrderVerification 切换订单 Tab 并 push 核销页,不再设置 selectedOrdersEntry

未明确接口的订单能力继续占位,避免入口崩溃。

设计常量

订单列表专用色值与间距定义在 AppDesign(页面背景 #F5F5F5、输入背景 #F4F4F4、状态 Chip 色等与 Android 对齐)。