Vortmall使用文档
订单与配送
1. 多店铺拆单结算流程
说明: 购物车包含多个店铺商品时,一次结算生成一个父订单与多个子订单;各子订单独立计算运费、店铺级优惠与履约,顾客可一次性合并支付。
参与角色: 顾客、购物车服务、计价服务、订单服务、各店铺履约方。
flowchart TD
multiShop([购物车含多店铺商品])
groupByShop[按店铺分组待结算行]
loopEach[逐店铺计算子单金额]
shipEach[各店铺独立匹配运费模板]
promoEach[各店铺独立适用店铺券或活动]
sumParent[汇总父订单总金额与状态]
singlePay[顾客一次支付父单或按产品拆分支付]
multiShop --> groupByShop
groupByShop --> loopEach
loopEach --> shipEach
shipEach --> promoEach
promoEach --> sumParent
sumParent --> singlePay
步骤说明:
- 顾客勾选跨店铺商品进入结算,系统按店铺维度拆分商品行。
- 每个店铺生成逻辑上的子订单草稿,包含该店 SKU、数量、小计。
- 各子订单分别匹配该店的运费模板、包邮条件与店铺优惠券。
- 父订单汇总所有子订单金额、运费与优惠后展示总应付。
- 提交时创建父订单记录,并批量创建子订单,关联父订单标识。
- 支付可按产品设计为「整单支付」或「按子单分别支付」,需与退款、售后策略一致。
特别说明:
- 拆单后售后、物流、评价通常以子订单为粒度。
- 平台券与跨店活动需在规则引擎中明确分摊方式。
2. 不同配送方式结算流程
说明: 根据业务选择的配送类型(物流配送、自提、同城配送、无需配送),结算页收集的字段、运费计算与履约节点不同,需在下单前完成校验。
参与角色: 顾客、地址服务、门店或自提点服务、计价与配送服务。
flowchart TD
selType([选择配送方式])
type1{deliveryType值}
logistics[物流配送 1]
pickup[自提 2]
sameCity[同城配送 3]
virtual[无需配送 4]
addrReq[需详细收货地址]
pickPoint[选自提点与联系人]
cityAddr[同城地址与配送时段]
noShip[不计算物流运费]
selType --> type1
type1 -->|1| logistics
type1 -->|2| pickup
type1 -->|3| sameCity
type1 -->|4| virtual
logistics --> addrReq
pickup --> pickPoint
sameCity --> cityAddr
virtual --> noShip
步骤说明:
- 物流配送(1): 顾客填写或选择收货地址,按重量或件数匹配运费模板,计算运费与预计时效。
- 自提(2): 顾客选择自提门店或自提点、提货人及电话,通常不产生快递运费,可能产生打包费(依配置)。
- 同城配送(3): 在指定城市范围内填写地址或地图选点,可能有时段与起送价、同城运费规则。
- 无需配送(4): 适用于虚拟商品或线下已履约场景,不展示物流运费,地址可为可选或简化。
- 切换配送方式时,系统重新校验商品是否支持该方式并重算金额。
- 提交订单时固化配送类型与相关快照,供仓储与配送接单使用。
特别说明:
- 同一父订单下若多子订单,各子订单可配置不同配送方式时需分别校验。
- 自提与同城可能涉及营业时间与库存地点,需提前校验可履约性。
3. 管理端改价流程
说明: 后台管理员仅可对未付款(待支付,PENDING)订单调整成交金额,包括改商品折扣、改运费等;改价后顾客侧应付金额同步更新,需重新支付或继续支付流程。
参与角色: 平台管理员、订单服务、权限与审计、顾客(确认支付)。
flowchart TD
adminOpen([管理员打开订单详情])
checkStatus{订单是否为PENDING}
rejectEdit[拒绝改价并提示]
editFields[修改运费或折扣等]
validateRule[校验改价权限与幅度]
recalc[重算订单应付金额]
saveLog[保存操作日志]
notifyUser[通知顾客订单金额变更]
payContinue[顾客按新金额支付]
adminOpen --> checkStatus
checkStatus -->|否| rejectEdit
checkStatus -->|是| editFields
editFields --> validateRule
validateRule --> recalc
recalc --> saveLog
saveLog --> notifyUser
notifyUser --> payContinue
步骤说明:
- 管理员在后台查询目标订单,仅当状态为未付款(PENDING)时允许改价入口。
- 已支付、已关闭或已取消订单不得修改价格,避免账务不一致。
- 管理员调整项目可包括:行项目折扣、整单优惠、运费改价等(以产品能力为准)。
- 系统按权限校验改价幅度、是否需要二次审批(若启用)。
- 保存后重算应付总额,并记录操作人、时间与改价前后快照。
- 通知顾客(站内信、短信等),顾客在待支付订单中按新金额完成支付。
特别说明:
- 改价与优惠券、积分、余额的互斥关系需在系统中定义,避免重复让利。
- 若已生成支付单,可能需要关闭旧支付单并按新金额重新发起。
4. 运费计算流程
说明: 每个店铺独立绑定运费模板;根据模板的计费方式(按重量、按件数等)与免邮条件计算子订单运费,多店铺场景下各自计算后汇总。
参与角色: 计价服务、运费模板配置、商品属性(重量或件数)、地址与区域规则。
flowchart TD
calcStart([开始计算某子订单运费])
loadTpl[加载店铺运费模板]
getGoods[汇总行项目重量或件数]
matchRegion[匹配收货地址对应运费区域]
ruleType{计费方式}
byWeight[按重量阶梯计费]
byPiece[按件数阶梯计费]
freeCheck{是否满足包邮条件}
freeFee[运费为0]
addShip[计入子订单运费]
calcStart --> loadTpl
loadTpl --> getGoods
getGoods --> matchRegion
matchRegion --> ruleType
ruleType -->|按重量| byWeight
ruleType -->|按件数| byPiece
byWeight --> freeCheck
byPiece --> freeCheck
freeCheck -->|是| freeFee
freeCheck -->|否| addShip
步骤说明:
- 针对每个子订单,读取所属店铺启用的运费模板及优先级规则。
- 汇总该子订单内各行的计费重量或件数(含 SKU 属性与购买数量)。
- 根据收货地址解析省市区,匹配模板中的区域与运费区间。
- 若模板为按重量,则按重量阶梯取首重、续重费用;若为按件数,则按件数阶梯计费。
- 判断是否满足包邮条件(如满额包邮、满件包邮、指定区域包邮)。
- 满足则该子订单运费记为零;否则将计算出的运费加入子订单应付。
- 多店铺时重复上述过程,父订单展示运费汇总或分列展示。
特别说明:
- 偏远地区可加收附加费,需在区域表中预先配置。
- 与「不同配送方式」结合时,仅对需要物流运费的类型执行本流程;自提、无需配送等走对应分支。
文档版本说明:流程与字段以实际部署的配置与版本为准;上线前请结合合同与实施清单做验收。
Outline
1. 多店铺拆单结算流程
2. 不同配送方式结算流程
3. 管理端改价流程
4. 运费计算流程
Gan public network security 36010902001041