10 - 业务流程
概述
项目覆盖以下核心业务域,每个域有独立的分包、API 模块和 Redux Slice。
C 端购物结算流程
核心流程
首页(pages/index)
│
├─→ 分类(pages/category) → 商品列表(subpages/item) → 商品详情(subpages/item/espier-detail)
│ │
├─→ 搜索 → 商品列表 ──────────────────────────────────────┤
│ ↓
│ 加入购物车 / 立即购买
│ │
│ ↓
│ 购物车(pages/cart/espier-index) ←─────────── 结算(pages/cart/espier-checkout)
│ │
│ ↓
│ 选择地址/自提/配送方式
│ 选择优惠券
│ │
│ ↓
│ 创建订单 → 收银台
│ │
│ ┌───────────┼───────────┐
│ ↓ ↓ ↓
│ 微信支付 余额支付 线下转账
│ │ │ │
│ ↓ ↓ ↓
│ cashier-result(支付结果页)
│ │
│ ↓
└──────────────────────── 订单(subpages/trade/list) ←────────┘关键 API 调用
| 步骤 | API | 说明 |
|---|---|---|
| 获取商品详情 | item.getDetail({ item_id }) | 含 SKU、价格、促销 |
| 加入购物车 | cart.add({ item_id, sku_id, num }) | dispatch updateCount |
| 购物车列表 | cart.getList() | dispatch fetchCartList |
| 计算运费 | cart.getFreightFee({ ... }) | 根据地址和商品 |
| 创建订单 | cart.orderNew({ ... }) | 含地址、配送、优惠券 |
| 获取支付方式 | member.getTradePaymentList() | 返回可用支付通道 |
Redux 状态
cart.validCart/cart.invalidCart— 购物车列表cart.coupon— 选中的优惠券cart.zitiAddress— 自提地址user.address— 选中的收货地址
支付流程
usePayment Hook
src/hooks/usePayment.js 根据支付类型分发到不同支付通道:
js
const { cashierPayment, payError } = usePayment()支付通道
| pay_type | 说明 | 实现方式 |
|---|---|---|
wxpay | 微信小程序支付 | Taro.requestPayment(order) |
adapay / bspay | 汇付/百盛支付 | 根据 pay_channel 分发 |
wxpayh5 | 微信 H5 支付 | 跳转微信支付链接 |
wxpayjs | 微信 JSSDK 支付 | wx.chooseWXPay |
deposit | 余额支付 | 直接扣减余额 |
point | 积分支付 | 直接扣减积分 |
offline_pay | 线下转账 | 跳转线下转账页 |
收银台页面
| 收银台 | 路径 | 说明 |
|---|---|---|
| 支付结果 | pages/cart/cashier-result | 通用支付结果页 |
| 微信收银台 | pages/cart/cashier-weapp | Adapay 收银台 |
| 线下转账 | pages/cart/offline-transfer | 线下转账信息 |
产品版本流程差异
项目当前只支持两个产品版本:
| 版本 | 产品 | 主要业务侧重点 |
|---|---|---|
standard | 云店 B2C | 店铺进店规则、导购货架、C 端购物 |
platform | ECShopX BBC | 多商户、店铺选择、平台化商品与交易 |
路由和业务组件通过 VERSION_STANDARD、VERSION_PLATFORM 判断版本差异;新增版本逻辑时应先同步产品版本配置和本文档。
店务(POS)流程
核心页面
subpages/dianwu/ 包含 20 个页面:
| 页面 | 说明 |
|---|---|
| webview | 店务 WebView 容器 |
| login | 店务登录 |
| store | 店铺选择 |
| search | 商品搜索 |
| cashier | 收银台 |
| checkout | 结算 |
| change-price | 改价 |
| collect | 收款 |
| take-order | 取单 |
| invoice | 发票 |
| order-* | 订单操作 |
| delivery | 配送员 |
| salesman | 业务员 |
| activity | 活动核销 |
| payment | 付款 |
店务 Token
店务使用独立的 Token(SG_DIANWU_TOKEN),与会员 Token 隔离。
社区团购流程
核心流程
开团(subpages/community/open)
│
├─→ 商品选品(subpages/community/goods-select)
│
├─→ 社区选择(subpages/community/community-select)
│
├─→ 结算(subpages/community/checkout)
│
└─→ 订单管理
├─→ 团长详情(subpages/community/chief-detail)
├─→ 团员详情(subpages/community/member-detail)
├─→ 订单列表(subpages/community/orders)
└─→ 售后(subpages/community/aftersale-*)团长相关页面
| 页面 | 说明 |
|---|---|
| 个人中心 | subpages/community/personal |
| 申请团长 | subpages/community/apply-chief |
| 团长协议 | subpages/community/chief-agreement |
| 佣金 | subpages/community/commission |
| 提现 | subpages/community/withdraw* |
Redux 状态
js
// community slice
{
selectGoods: [], // 商品选品
selectCommunityZiti: null // 社区团购自提点
}积分商城流程
subpages/pointshop/ 包含 3 个页面:
积分商品列表 → 商品详情 → 下单(积分支付)积分支付使用 usePayment 中的 point 通道,直接扣减用户积分。
导购流程
导购货架
subpages/guide/ 包含 10 个页面:
| 页面 | 说明 |
|---|---|
| 货架首页 | subpages/guide/index |
| 分类 | subpages/guide/category |
| 商品列表 | subpages/guide/goods-list |
| 购物车 | subpages/guide/cart |
| 结算 | subpages/guide/checkout |
| 优惠券 | subpages/guide/coupon |
| 种草 | subpages/guide/recommend |
| 自定义页面 | subpages/guide/custom |
进店规则
withPageWrapper HOC 实现云店进店规则检查:
用户进入云店
│
├─→ distributor_code → 店铺码进店
│
├─→ shop_assistant → 导购物料进店
│
├─→ shop_white → 白名单规则检查
│ ├─→ 获取店铺信息
│ ├─→ 获取导购员信息
│ ├─→ 白名单校验
│ └─→ 兜底策略
│
└─→ shop_assistant_pro → 导购专属店铺业务员
subpages/salesman/ 包含 ~33 个页面:
| 功能 | 页面 |
|---|---|
| 首页 | salesman/index |
| 名片 | salesman/card |
| 购物车 | salesman/cart |
| 我的 | salesman/mine |
| 订单 | salesman/orders |
| 选客户/店铺 | salesman/select-customer / select-shop |
| 业绩 | salesman/achievement |
| 业务员管理 | salesman/manage |
| 创建业务员 | salesman/create |
| 选商品 | salesman/select-goods |
| 推广管理 | salesman/promotion-* |
| 实名认证 | salesman/verified |
| 物流 | salesman/logistics |
| 结算 | salesman/settlement |
导购参数传递
导购参数通过 URL 参数 + Storage 缓存传递:
js
// Storage keys
SG_GUIDE_PARAMS = 'guideParams' // 导购参数
SG_GUIDE_PARAMS_UPDATETIME = 'guideParams_updatetime'
SG_GUIDE_PARAMS_EXPRESSTIME = 'guideParams_expresstime'商户入驻流程
subpages/merchant/ 包含 5 个页面:
登录(merchant/login)
│
├─→ 申请(merchant/apply)
│ ├─→ 选择商户类型
│ ├─→ 填写经营范围
│ ├─→ 填写银行信息
│ └─→ 上传证照
│
├─→ 选择(merchant/select)
│
├─→ 审核(merchant/audit)
│
└─→ 协议(merchant/agreement)商户 Token
商户入驻使用独立的 MERCHANT_TOKEN,与会员 Token 隔离。isMerchantModule() 判断当前是否在商户模块。
配送员流程
subpages/delivery/ 包含 9 个页面:
| 页面 | 说明 |
|---|---|
| 首页 | delivery/index |
| 业绩 | delivery/achievement |
| 我的 | delivery/mine |
| 售后列表 | delivery/aftersale-list |
| 店铺 | delivery/shop |
| 订单 | delivery/orders |
| 发货 | delivery/deliver |
| 订单详情 | delivery/order-detail |
| 售后 | delivery/aftersale-* |
营销活动
秒杀
| 页面 | 路径 |
|---|---|
| 秒杀列表 | marketing/pages/item/seckill-list |
| 秒杀商品 | marketing/pages/item/seckill-goods-list |
拼团
| 页面 | 路径 |
|---|---|
| 拼团列表 | marketing/pages/item/group-list |
| 拼团详情 | marketing/pages/item/group-detail |
大转盘
| 页面 | 路径 |
|---|---|
| 大转盘 | marketing/pages/wheel/index |
分销
marketing/pages/distribution/ 包含 62 个文件,覆盖完整分销体系。
砍价
boost/ 模块包含砍价/翻牌活动:
首页(boost/home) → 详情(boost/detail) → 翻牌(boost/flop) → 支付(boost/pay) → 订单(boost/order)用户登录流程
自动登录(微信小程序)
组件挂载
│
├─→ withLogin HOC 或 useLogin Hook
│ └─→ Spx.autoLogin()
│ ├─→ 检查 Token 是否存在
│ ├─→ 有 Token → Spx.getMemberInfo() → dispatch updateUserInfo
│ └─→ 无 Token → Spx.login()
│ ├─→ wx.login() → 获取 code
│ ├─→ api.wx.login({ code }) → 获取 Token
│ └─→ Spx.setToken() → Spx.getMemberInfo() → dispatch
│
└─→ 企微: Spx.loginQW() → 获取 qwUserInfo → 设置 Token登录相关 Storage
js
SG_TOKEN = 'token' // 会员 Token
SG_DIANWU_TOKEN = 'dianwu_token' // 店务 Token
MERCHANT_TOKEN = 'merchant_token' // 商户 Token
SG_USER_INFO = 'userinfo' // 用户信息
SG_POLICY = 'policy_info' // 隐私协议
SG_QW_USERID = 'work_userid' // 企微用户ID需要登录的页面
js
// src/consts/index.js
export const needLoginPageType = [
'vipgrades', 'applyChief', 'recharge', 'purchase', 'pointShop', ...
]
export const needLoginPage = [
'/subpages/member/index',
'/subpages/trade/list',
// ...
]