Skip to content

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-weappAdapay 收银台
线下转账pages/cart/offline-transfer线下转账信息

产品版本流程差异

项目当前只支持两个产品版本:

版本产品主要业务侧重点
standard云店 B2C店铺进店规则、导购货架、C 端购物
platformECShopX BBC多商户、店铺选择、平台化商品与交易

路由和业务组件通过 VERSION_STANDARDVERSION_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',
  // ...
]