ShopXO:基于 ThinkPHP 8 的企业级开源商城系统

ShopXO 是一套国内较成熟的企业级开源电商系统,采用 PHP + ThinkPHP 8 开发,定位并不只是简单的 B2C 商品商城,而是逐步扩展到 多商户、多门店、进销存、分销、营销、O2O、可视化装修 等业务场景。

项目遵循 MIT 开源协议,官方明确支持免费使用、商业使用和二次开发。
注意:插件生态不好说,可能是其他开源协议,或者是闭源,其中部分插件需要付费。

截至目前,GitHub 仓库约有 3.3K Stars、900+ Forks,说明项目在国内 PHP 开源商城领域具有一定的用户基础。

GitHub: https://github.com/gongfuxiang/shopxo/ GitHub Stars GitHub Forks GitHub Repo Size GitHub Code Size GitHub Commit Activity GitHub License GitHub Top Language GitHub Last Commit GitHub Issues

主仓库 gongfuxiang/shopxo 是一个完整的商城应用,包括 Web 前台和管理后台。
另一个仓库 gongfuxiang/shopxo-uniapp 则是支持 H5、各种小程序,还支持编译成 Android/iPhone 的 App。

技术栈

ShopXO 当前基于 ThinkPHP 8 开发,而不是早期版本使用的 ThinkPHP 5.1。
ThinkPHP 8 Framework 本身要求 PHP >= 8.0,并依赖 ORM、容器、验证器等 ThinkPHP 官方组件。

ShopXO 后端

ShopXO 当前基于 ThinkPHP 8,ThinkPHP Framework 本身要求 PHP >= 8.0。

生产环境建议:

  • Ubuntu 24.04
  • PHP 8.2 / 8.3
  • MySQL 8.0
  • Nginx
  • Composer 2.x

管理后台与 Web 前台

整体技术栈比较传统,与当前主流的 Vue/React + TypeScript + Vite SPA 架构相比明显更传统。

  • PHP 服务端渲染(SSR):ThinkPHP Template
  • jQuery:前端 JavaScript 基础框架
  • Amaze UI:UI/CSS 框架
  • wangEditor 5:富文本编辑器
  • Cropper:图片裁剪
  • Swiper:轮播/滑动组件
  • Iconfont:Web 字体图标
  • Highlight.js:代码语法高亮

官方 UniApp 前端

  • Node.js
  • npm / pnpm
  • Vue
  • UniApp
  • Vite

uni-app 是 DCloud 推出的跨平台应用开发框架,基于 Vue 技术体系,使用 HTML、CSS、JavaScript 开发一套代码,可编译为 H5、微信/支付宝等小程序,以及 Android、iOS App。
它解决的是“一套代码,多端运行”,本身不是类似 Element Plus、Amaze UI 的 UI 组件库,但生态中有大量 UI 组件库可配合使用。

官方独立的 Form 项目目前采用 Vue 3、Vite、Element Plus、Pinia 等前端技术。

核心功能

            ShopXO
               │
    ┌──────────┼──────────┐
    │          │          │
   B2C        B2B2C       O2O
    │          │          │
商品/订单    多商户      多门店
    │          │          │
    └──────────┼──────────┘
               │
            营销体系
               │
     ┌─────────┼─────────┐
     │         │         │
    分销       会员       优惠
     │         │         │
     └─────────┼─────────┘
               │
             ERP
               │
        采购 / 库存 / 销售

ShopXO 的功能覆盖面比较广,可以按照业务域划分。

1. 商品中心

提供完整的商品管理能力:

  • 商品 SPU
  • 商品 SKU
  • 商品规格
  • 商品分类
  • 商品品牌
  • 商品图片
  • 商品库存
  • 商品评价
  • 商品收藏
  • 商品搜索
  • 商品标签
  • 商品上下架
  • 商品批量操作

支持多种商品模式:

普通商品
├── 快递
├── 同城配送
├── 到店自提
├── 虚拟商品
└── 展示型商品

同时支持多仓库和独立库存管理。

2. 订单与交易

商城核心交易链路包括:

浏览商品
   ↓
加入购物车
   ↓
确认订单
   ↓
支付
   ↓
商家发货
   ↓
物流
   ↓
收货
   ↓
评价

同时覆盖:

  • 订单管理
  • 售后
  • 退款
  • 退货
  • 发货
  • 物流
  • 自提
  • 同城配送
  • 虚拟订单
  • 线下支付
  • 扫码支付
  • 代客下单
  • 收银台

3. 营销系统

ShopXO 的营销能力是项目比较强的一部分。

包括:

  • 优惠券
  • 满减
  • 满折
  • 满送
  • 秒杀
  • 拼团
  • 砍价
  • 抽奖
  • 预售
  • 积分商城
  • 签到
  • 新人礼包
  • 会员
  • 礼品卡
  • 组合商品
  • 返现
  • 返佣

例如抽奖支持:

九宫格
转盘
砸金蛋

拼团、砍价、预售等功能也可以与多商户、DIY 页面等能力组合使用。

4. 分销系统

ShopXO 内置比较完整的分销体系。

主要包括:

  • 分销员
  • 上下级关系
  • 一级 / 二级 / 三级返佣
  • 返积分
  • 分享赚佣金
  • SKU 级佣金
  • 固定金额佣金
  • 比例佣金
  • 阶梯返佣
  • 指定商品返佣
  • 分销统计
  • 商品海报
  • 推荐宝

因此可以构建:

平台
 │
 └── 用户 A
      │
      ├── 用户 B
      │    ├── 用户 D
      │    └── 用户 E
      │
      └── 用户 C

再按照分销规则计算佣金或积分。

5. 多商户

ShopXO 已经支持 B2B2C 类型的业务模式。

基本模型:

平台
 │
 ├── 商户 A
 │    ├── 商品
 │    ├── 订单
 │    └── 店铺
 │
 ├── 商户 B
 │    ├── 商品
 │    ├── 订单
 │    └── 店铺
 │
 └── 商户 C
      ├── 商品
      ├── 订单
      └── 店铺

可以用于:

  • 商家入驻
  • 商家店铺
  • 商家商品
  • 商家订单
  • 商家售后
  • 商家结算
  • 商家装修
  • 商家独立经营

这意味着 ShopXO 不仅能够做自营商城,也可以作为平台型商城的基础系统。

6. 多门店与 O2O

针对实体门店,ShopXO 提供:

  • 多门店
  • 门店商品
  • 门店库存
  • 到店自提
  • 同城配送
  • 配送员
  • 派单
  • 转单
  • 核销
  • 预约
  • 充值
  • 次卡
  • 收银台

配送体系甚至包含配送员管理、调度中心以及配送员小程序等能力。

因此可以用于:

线上商城
    │
    ├── 商品购买
    │
    ├── 到店自提
    │
    ├── 同城配送
    │
    └── 门店消费

7. 进销存 ERP

这是 ShopXO 与普通开源商城比较明显的区别。

其业务进一步延伸到了进销存:

采购
 │
 ▼
采购入库
 │
 ▼
库存
 │
 ├── 库存盘点
 ├── 库存调拨
 └── 多仓库
 │
 ▼
销售
 │
 ▼
销售出库

涉及:

  • 供应商
  • 采购
  • 采购入库
  • 采购退货
  • 销售
  • 销售退货
  • 多仓库
  • 仓位
  • 库存
  • 库存盘点
  • 库存调拨
  • 客商
  • 采购付款
  • 销售收款
  • Excel 导入导出

官方将进销存作为组件插件化,支持按需启用。

8. 可视化 DIY 装修

ShopXO 提供独立的 DIY 装修项目。

可以通过拖拽方式设计商城页面,例如:

  • 商品
  • 图片
  • 轮播
  • 视频
  • 图片魔方
  • 热区
  • 文章
  • 自定义组件

基本模式是:

后台
 │
 ▼
DIY 页面编辑器
 │
 ├── 拖拽组件
 ├── 调整布局
 ├── 配置数据
 └── 发布
       │
       ▼
   商城前台

这使运营人员不需要修改 PHP / HTML 源码,就可以调整部分商城页面。

9. 可视化表单

ShopXO 还提供独立的 Form 表单项目。

包含:

  • 单行文本
  • 多行文本
  • 数字
  • 单选
  • 多选
  • 下拉
  • 日期时间
  • 定位
  • 地址
  • 手机
  • 评分
  • 富文本
  • 子表单
  • 图片上传
  • 视频上传

同样采用可视化拖拽设计。官方 shopxo-form 项目本身也是开源项目。

Ubuntu 部署

最传统的部署方式是:

Internet
   │
   ▼
Nginx
   │
   ▼
PHP-FPM
   │
   ▼
ShopXO
   │
   ▼
MySQL

首先安装:

sudo apt update

sudo apt install -y \
    nginx \
    mysql-server \
    php8.2-fpm \
    php8.2-cli \
    php8.2-mysql \
    php8.2-curl \
    php8.2-gd \
    php8.2-mbstring \
    php8.2-xml \
    php8.2-zip \
    git \
    unzip

检查环境:

php -v
mysql --version
nginx -v

然后获取源码:

cd /var/www

sudo git clone \
    https://github.com/gongfuxiang/shopxo.git \
    shopxo

安装 Composer 依赖:

cd /var/www/shopxo

composer install --no-dev --optimize-autoloader

然后创建 MySQL 数据库:

CREATE DATABASE shopxo
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

CREATE USER 'shopxo'@'localhost'
    IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES
    ON shopxo.*
    TO 'shopxo'@'localhost';

FLUSH PRIVILEGES;

最后配置 Nginx,将网站根目录指向 ShopXO 的 Web 入口目录,并让 PHP 请求交给 PHP-FPM。

生产环境再配置 HTTPS。

Docker 部署

如果只是自己部署一个 ShopXO 实例,我更推荐 Docker。

推荐架构:

  Internet
     │
     ▼
┌─────────┐
│  Caddy  │
│  HTTPS  │
└────┬────┘
     │
     ▼
┌─────────┐
│  Nginx  │
└────┬────┘
     │
     ▼
┌─────────┐
│  PHP    │
│ ShopXO  │
└────┬────┘
     │
     ▼
┌─────────┐
│ MySQL   │
└─────────┘

Docker Compose 可以采用:

services:
    php:
        build:
            context: .
            dockerfile: docker/php/Dockerfile
        restart: unless-stopped
        volumes:
            - ./shopxo:/var/www/html
        depends_on:
            - mysql

    nginx:
        image: nginx:alpine
        restart: unless-stopped
        ports:
            - "8080:80"
        volumes:
            - ./shopxo:/var/www/html:ro
            - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
        depends_on:
            - php

    mysql:
        image: mysql:8.0
        restart: unless-stopped
        environment:
            MYSQL_DATABASE: shopxo
            MYSQL_USER: shopxo
            MYSQL_PASSWORD: change-me
            MYSQL_ROOT_PASSWORD: change-root-me
        volumes:
            - mysql-data:/var/lib/mysql

volumes:
    mysql-data:

需要特别注意:不要简单使用 php:8.2-apache 后把源码挂进去就认为可以生产运行。

ShopXO 基于 ThinkPHP 8,需要正确安装 PHP 扩展和 Composer 依赖,同时还需要处理 Web Root、Rewrite、上传目录、缓存目录等问题。

生产 Docker Image 应该自行构建:

PHP 8.2
   │
   ├── pdo_mysql
   ├── mysqli
   ├── gd
   ├── mbstring
   ├── xml
   ├── zip
   ├── curl
   └── opcache

再运行 Composer:

composer install --no-dev --optimize-autoloader

ShopXO 适合什么场景?

从产品能力来看,它比较适合:

场景 适合度
普通 B2C 商城 ⭐⭐⭐⭐⭐
企业自营商城 ⭐⭐⭐⭐⭐
多商户平台 ⭐⭐⭐⭐⭐
多门店商城 ⭐⭐⭐⭐⭐
O2O ⭐⭐⭐⭐
分销商城 ⭐⭐⭐⭐⭐
社区商城 ⭐⭐⭐⭐
进销存 + 商城 ⭐⭐⭐⭐
快速搭建电商 MVP ⭐⭐⭐⭐⭐
学习现代 PHP 架构 ⭐⭐⭐
超大规模互联网电商 ⭐⭐
如果你有魔法,你可以看到一个评论框~