POS与O2O到店
POS与O2O到店
本文档面向购买 VortMall 系统的平台运营方,说明 O2O 版 专属 POS 模块(vortmall-biz-pos,接口路由 /adminapi/pos/**)及预约相关业务的标准流程。POS 能力包括:购物车、结账、支付、商品查询、优惠券、充值、挂单、预约等;预约类型含 TYPE_RESERVATION_STORE(9) 预约到店、TYPE_RESERVATION_HOME(10) 预约上门;预约订单支付后跳过 CONFIRMED,直接进入 PROCESSING;POS 支持条码扫描;挂单用于暂存当前购物车以便稍后继续结算。
1. POS收银登录与切换流程
说明: O2O 版 POS 终端首次进入需选择门店并登录员工账号;运营中可在授权范围内切换门店或切换账号,以保证收银主体与权限一致。
参与角色: 店员、POS 终端、门店(组织)、认证服务。
flowchart TD
startNode([开始]) --> selectStore[选择门店]
selectStore --> inputCred[输入员工账号密码]
inputCred --> loginReq[请求登录POS]
loginReq --> loginOk{"登录成功?"}
loginOk -->|否| showErr[提示错误并重试]
showErr --> inputCred
loginOk -->|是| enterPos[进入POS主界面]
enterPos --> switchMenu{"需要切换?"}
switchMenu -->|切换门店| selectStore
switchMenu -->|切换账号| inputCred
switchMenu -->|否| work[正常收银作业]
步骤说明:
- 店员在 POS 终端打开应用,进入登录前或登录后需 选择当前服务门店(与 O2O 门店数据一致)。
- 输入 员工账号与密码(或与平台统一的员工认证方式)。
- 系统向认证服务校验凭证,成功后建立 POS 会话并加载该门店权限与配置。
- 进入 POS 主界面,可进行扫码收银、挂单、预约核销等操作。
- 若需 切换门店:退出当前门店上下文或从设置进入,重新选择门店并按策略要求重新登录或刷新会话。
- 若需 切换账号:登出当前员工,返回账号密码输入步骤,由另一名店员登录。
特别说明:
- 仅 O2O 版 启用 POS 相关路由与能力;非 O2O 版不应依赖本文
/adminapi/pos/**行为。 - 切换门店可能影响可售商品、价格策略与预约归属门店,以系统配置为准。
2. POS扫码收银流程
说明: 通过扫描商品条码快速建立购物车并完成结算收款,适用于标准有条码的零售场景。
参与角色: 店员、顾客、POS 终端、商品与库存服务。
flowchart TD
scanBarcode[扫描商品条码] --> querySku[系统查询商品信息]
querySku --> foundSku{"商品有效?"}
foundSku -->|否| promptInvalid[提示无商品或停售]
promptInvalid --> scanBarcode
foundSku -->|是| addCart[添加到POS购物车]
addCart --> adjustQty[调整数量]
adjustQty --> moreItems{"继续扫码?"}
moreItems -->|是| scanBarcode
moreItems -->|否| checkout[结算]
checkout --> collectPay[收款]
collectPay --> doneNode([结束])
步骤说明:
- 店员使用扫码枪或摄像头 扫描商品条码。
- POS 调用后台 查询 SKU/商品信息(名称、规格、价格、可售状态等)。
- 校验通过后 将行项目加入当前购物车;失败则提示并允许重新扫描。
- 在购物车中 修改数量 或删除行项。
- 确认无误后进入 结算 流程(可叠加优惠券等,见专项流程)。
- 完成 收款(见「POS 支付流程」)并可选打印小票。
特别说明:
- POS 支持 条码扫描 录入;无条码场景请使用「手动录入商品流程」。
3. POS手动录入商品流程
说明: 当商品无法扫码时,店员通过搜索名称或编号选择 SKU 与规格,再录入数量加入购物车。
参与角色: 店员、POS 终端、商品检索服务。
flowchart TD
openSearch[打开商品搜索] --> inputKeyword[输入名称或编号]
inputKeyword --> listResults[展示候选商品列表]
listResults --> pickProduct[选择商品与规格]
pickProduct --> inputQty[输入数量]
inputQty --> addLine[添加到购物车]
addLine --> continueShop{"继续添加?"}
continueShop -->|是| openSearch
continueShop -->|否| readyCheckout[准备结算]
步骤说明:
- 在 POS 进入 商品搜索/录入 入口。
- 输入 商品名称关键字 或 商品编号/SKU 编码。
- 在结果列表中选中目标商品;若有多规格,选择对应规格。
- 输入 购买数量 并确认。
- 行项目写入 当前购物车。
- 可重复搜索添加,或进入结算。
特别说明:
- 搜索结果受门店可售范围、上下架状态约束;与扫码流程共用同一购物车模型。
4. POS支付流程
说明: 在 POS 端完成订单支付闭环,支持现金、微信、支付宝、余额等方式,并完成收款确认与小票打印。
参与角色: 店员、顾客、POS 终端、支付渠道、订单服务。
flowchart TD
settleOrder[订单待收款] --> choosePay[选择支付方式]
choosePay --> payType{支付方式}
payType -->|现金| cashFlow[收取现金并确认]
payType -->|"微信/支付宝"| scanFlow[扫用户付款码或展示商家码]
payType -->|余额| balanceFlow[校验用户余额并扣款]
scanFlow --> waitCallback[等待支付结果]
waitCallback --> payOk{"支付成功?"}
cashFlow --> payOk
balanceFlow --> payOk
payOk -->|否| failHandle[失败提示与重试或换方式]
failHandle --> choosePay
payOk -->|是| confirmRecv[确认收款完成]
confirmRecv --> printTicket[打印小票可选]
printTicket --> payEndNode([结束])
步骤说明:
- 购物车或订单进入 待收款 状态。
- 店员 选择支付方式:现金、微信、支付宝、余额等(以实际开通为准)。
- 现金:收取现金后在 POS 确认实收,系统记为已收款。
- 微信/支付宝:通过 扫用户付款码 或 用户扫商家收款码 发起支付,等待渠道结果回调或轮询。
- 余额:关联会员/用户账户后 校验余额 并执行扣款。
- 支付成功后 确认收款,订单进入后续履约或完成状态。
- 按需 打印小票。
特别说明:
- 具体支付能力与费率、对账以支付服务商与平台配置为准;失败时应支持重试或更换方式而不丢失购物车(除非业务规则清空)。
5. POS挂单与取单流程
说明: 将当前购物车 暂存为挂单 以便先服务其他顾客,稍后从挂单列表 取回 继续编辑或结算。
参与角色: 店员、POS 终端、挂单存储服务。
flowchart TD
cartHasItems{"购物车有商品?"}
cartHasItems -->|否| noHang[无需挂单]
cartHasItems -->|是| saveHang[保存为挂单]
saveHang --> clearUi[清空当前界面]
clearUi --> serveOther[服务其他顾客]
serveOther --> openHangList[打开挂单列表]
openHangList --> pickHang[选择一笔挂单]
pickHang --> restoreCart[恢复到购物车]
restoreCart --> editOrPay[继续改数量或结算]
步骤说明:
- 当前购物车中有商品时,店员可选择 挂单。
- 系统 保存挂单(通常含门店、操作员、时间、行项目快照等,以实际实现为准)。
- 当前收银界面 清空,可开始新的扫码或录入服务其他顾客。
- 需要继续之前交易时,打开 挂单列表。
- 选中目标挂单,将内容 恢复到购物车。
- 继续修改数量、应用优惠或进入 支付流程。
特别说明:
- 挂单 与订单「待支付」不同:挂单是 购物车级暂存;具体保留时长、条数上限依产品配置。
6. POS优惠券使用流程
说明: 在收银前或结算页查询会员可用优惠券,选择后由系统 自动计算抵扣,再进入收款。
参与角色: 店员、顾客、POS 终端、营销与优惠券服务、订单计价服务。
flowchart TD
beforePay[进入结算前或结算页] --> bindUser[可选绑定会员手机号或会员码]
bindUser --> queryCoupon[查询用户可用优惠券]
queryCoupon --> showList[展示券列表与规则摘要]
showList --> selectCoupon[选择一张或多张以系统为准]
selectCoupon --> calcDisc[自动计算抵扣金额]
calcDisc --> validDisc{"券是否可用?"}
validDisc -->|否| adjustSel[调整商品或重新选券]
adjustSel --> selectCoupon
validDisc -->|是| showPayable[展示应付金额]
showPayable --> gotoPay[进入支付流程]
步骤说明:
- 在结算环节,可选择 绑定会员(如手机号、会员码)以便拉取优惠券。
- POS 请求后台 查询当前订单上下文下可用优惠券列表。
- 店员或顾客 选择要使用的优惠券(若支持叠加以规则为准)。
- 系统 重算优惠与应付金额;不可用则提示原因。
- 确认 应付金额 后进入 POS 支付流程。
特别说明:
- 券的适用商品、门槛、互斥规则由营销中心配置;POS 侧需展示明确失败原因以便店员解释。
7. POS充值流程
说明: 门店在 POS 上为 用户余额账户充值:录入用户手机号,选择金额,用户完成支付后 余额到账。
参与角色: 店员、顾客、POS 终端、会员/账户服务、支付渠道。
flowchart TD
startRecharge([开始充值]) --> inputPhone[输入用户手机号]
inputPhone --> verifyUser[查询并确认用户身份]
verifyUser --> userOk{"用户存在?"}
userOk -->|否| regHint[提示注册或核对号码]
regHint --> inputPhone
userOk -->|是| pickAmount[选择充值金额或档位]
pickAmount --> createRecharge[创建充值单]
createRecharge --> userPay[用户完成支付]
userPay --> payResult{"支付成功?"}
payResult -->|否| failRecharge[失败提示]
payResult -->|是| creditBal[余额到账]
creditBal --> notifyUser[短信或页面提示可选]
notifyUser --> rechargeEndNode([结束])
步骤说明:
- 店员在 POS 进入 充值 功能。
- 输入 用户手机号(或与会员体系一致的标识)。
- 系统 校验用户 是否存在;不存在则按提示引导核对或注册(以业务规则为准)。
- 选择 充值金额 或固定档位。
- 生成 充值订单/流水,拉起 用户支付(扫码等)。
- 支付成功后 增加账户余额 并记录账务。
- 可选向用户展示或发送 到账通知。
特别说明:
- 充值属于资金类操作,应配合权限审计与对账;具体支付方式与限额以平台与支付通道配置为准。
8. 预约管理流程
说明: 运营配置可预约时段与每时段容量,用户在线预约后系统确认并进入排期;到点前可进行提醒与看板统计(与看板流程配合)。
参与角色: 平台运营、用户(C 端)、系统调度、门店、店员(接收预约单)。
flowchart TD
configSlot[配置可预约时段] --> setQuota[设置每时段可预约数量]
setQuota --> publishRule[发布预约规则与门店]
publishRule --> userBook[用户在线提交预约]
userBook --> sysConfirm[系统确认时段与库存]
sysConfirm --> confirmOk{"可预约?"}
confirmOk -->|否| suggestAlt[提示满额或推荐时段]
suggestAlt --> userBook
confirmOk -->|是| genOrder[生成预约订单]
genOrder --> scheduleMgmt[管理预约排期与状态]
scheduleMgmt --> remindTime[到时间提醒可选]
remindTime --> mgmtEndNode([管理闭环])
步骤说明:
- 运营在后台配置 可预约日期、时段切片。
- 为各时段设置 最大预约数(容量),可区分预约类型: TYPE_RESERVATION_STORE(9) 预约到店、TYPE_RESERVATION_HOME(10) 预约上门。
- 规则对 C 端展示并关联 门店/服务。
- 用户选择时段提交预约,系统 校验容量与业务规则。
- 校验通过后 生成预约订单;失败则提示改期或改类型。
- 门店侧 查看排期:待服务、进行中、已完成、取消等(与核销、看板联动)。
- 可选:在预约时间前触发 提醒(消息、短信等,以实际对接为准)。
特别说明:
- 预约订单 在支付完成后通常 跳过 CONFIRMED,直接进入 PROCESSING(履约中),与标准实物订单状态机不同,配置与报表需区分展示。
9. 预约核销流程
说明: 用户到店出示预约凭证,店员在 POS 核销预约订单,服务完成后订单进入 COMPLETED。
参与角色: 顾客、店员、POS 终端、预约/订单服务。
flowchart TD
arriveStore[用户到店] --> showProof[出示预约信息]
showProof --> openVerify[店员打开POS预约核销]
openVerify --> locateOrder[查询预约订单]
locateOrder --> checkState{"状态允许核销?"}
checkState -->|否| rejectReason[提示不可核销原因]
rejectReason --> verifyEndFail([结束])
checkState -->|是| doVerify[执行核销操作]
doVerify --> serviceDone[完成服务]
serviceDone --> completeOrder[订单标记COMPLETED]
completeOrder --> verifyEndOk([结束])
步骤说明:
- 顾客按预约时间 到店(或上门场景按约定履约,核销节点可能仍在门店侧完成,以业务为准)。
- 出示 预约码、手机号或订单号 等凭证。
- 店员在 POS 进入 预约核销 入口,查询对应预约订单。
- 系统校验 订单状态、门店、时段 等是否允许核销。
- 执行 核销,将订单转入履约完成路径(可能先进入服务中状态,依实现)。
- 服务完成后,订单状态更新为 COMPLETED。
特别说明:
- 预约订单支付后 直接进入 PROCESSING,核销环节对应「到店确认/开始服务」类动作,与状态字段命名以系统为准;报表中「待服务」多指已付未核销或未完成服务。
10. O2O门店数据看板
说明: 以 门店维度 汇总经营与预约数据,支持店长与总部查看日销售、预约、员工绩效与热销品。
参与角色: 店长、总部运营、BI/报表服务、POS 与订单数据源。
flowchart TD
openDash[打开门店数据看板] --> selectDim[选择门店与日期]
selectDim --> loadSales[加载今日销售额订单量客单价]
loadSales --> loadReserve[加载预约统计]
loadReserve --> splitReserve[待服务已完成取消等]
splitReserve --> loadStaff[加载员工业绩]
loadStaff --> loadHot[加载热销商品]
loadHot --> reviewDash[查看与导出可选]
reviewDash --> dashEndNode([结束])
步骤说明:
- 登录有权限的 管理端或 POS 报表入口,打开 O2O 门店数据看板。
- 选择 门店(单店或管辖范围内)与 统计日期(如今日)。
- 查看 今日销售额、订单量、客单价 等核心指标。
- 查看 预约统计:待服务、已完成、取消等维度(与预约类型 9/10 可下钻,视报表设计)。
- 查看 员工业绩(收银笔数、金额、关联提成规则若有)。
- 查看 热销商品(销量/销售额 TOP)。
- 按需 导出 或用于周会复盘。
特别说明:
- 数据范围仅包含 O2O 版 且已接入 POS/预约的门店;与纯电商报表口径可能不一致,需在实施文档中固化指标定义。
文档修订说明
| 项目 | 说明 |
|---|---|
| 模块范围 | POS 为 O2O 版 专属;路由前缀 /adminapi/pos/**,业务包 vortmall-biz-pos |
| 预约类型 | TYPE_RESERVATION_STORE(9) 预约到店;TYPE_RESERVATION_HOME(10) 预约上门 |
| 预约状态 | 支付后 跳过 CONFIRMED,进入 PROCESSING |
| 辅助能力 | 条码扫描、挂单、优惠券、充值、预约核销与门店看板 |
赣公网安备36010902001041号