一句话定位:ShopWind 是广西南宁领众网络科技有限公司用 Yii2 写的多商户 B2B2C / O2O 商城,PC 端与后台在 Gitee 开源,H5、小程序、APP 属于商业版增值项。它最需要你先看清的不是功能表,而是授权口径:根目录 LICENSE 是 Apache-2.0 全文,可每个 PHP 文件开头写的却是「This is not free software,商用需购买授权」——两句话互相矛盾,商用前必须书面确认。
项值
仓库地址https://gitee.com/shopwind/yii2-shopwind
项目定位基于 Yii2 的多商户电商系统标准版(平台 + 商家 + 买家三角色)
运营主体广西南宁领众网络科技有限公司(2018 年注册商标与软著)
开源协议根目录 LICENSE 为 Apache-2.0;源码文件头声明「非自由软件、商用需授权」;官网另有《开源协议》
服务端环境PHP 7.2.5 ~ 7.4(文档明确不支持 PHP 8)、MySQL 5.5 ~ 5.7、Redis
后端框架Yii2 2.0.49.4(composer.lock),advanced 模板四应用结构
前端形态PC 端 Vue 3 + Vite + Element Plus 单页;视图层另有 Smarty 渲染
数据表83 张,统一前缀 swd_
仓库体量9817 个文件、5732 个 PHP 文件,全量 398 MB(vendor 目录 134 MB 已入库)
仓库状态1 个分支 master、12 个标签(最新 V5.0正式版)、447 次提交,最后提交 2026-11-01
社区热度Gitee 10.3K Star / 1K Fork / 1.8K Watch / 21 Open Issues / 1 PR(2026-11-10 查询)
语言构成JavaScript 37.8% / PHP 36.4% / HTML 14.6% / Vue 8.6% / CSS 2.6%
文档日期2026-11-10

1. 项目是什么

它是「一个平台、多个商家、一群买家」的三端商城,不是一个单店网店程序。 装好之后你会看到三个后台和一个前台:平台方管全局(商家审核、类目、营销、结算),商家管自己的店(商品、订单、发货、售后),买家在前台下单。这个三角色结构决定了它的数据表、权限和订单流程都比单商户系统复杂一档。

三个入口的实际分工:

角色入口主要动作
平台方/admin商家入驻审核、类目品牌、营销插件、资金与提现、报表
商家/seller开店、上架商品、处理订单、发货、退款、店铺装修
买家站点根路径与 /h5浏览、加购、下单、支付、评价、售后

先认清三点,后面才不会预期错位:

  • 开源的边界是 PC 端加后台。 README 原话:v4.x、v5.x 商业版包含 PC、H5、微商城、APP、微信小程序、头条小程序,「其中 PC 端为开源免费项目,移动端为增值项目」。仓库里 public/h5 只是打好的静态产物(4.4 MB),没有 UNIAPP 源码。
  • 它不是一份「框架骨架」,而是一套成品系统。 83 张表、5732 个 PHP 文件、35 个后台控制器、42 个 API 控制器,改造成本主要在读懂既有约定,而不是从零搭。
  • 它是「插件化」路线。 营销、支付、短信、登录、上传、地图都放在 common/plugins 下按基类扩展,官方主张「不需要的功能不塞进内核」,这一点在国产商城程序里算克制。

2. 核心特性

特性说明备注
多商户入驻商家申请、平台审核、独立店铺与结算B2B2C 的基本盘
商品体系商品、SKU 规格、属性、图集、品牌、类目、商品咨询表结构齐全
订单流程下单、支付、发货、收货、退款、订单日志含货到付款与运费模板
支付插件支付宝、微信支付、货到付款、余额支付common/plugins/payment
营销插件优惠券、拼团、限购秒杀、满减、满包邮、搭配购、积分、充值赠送、三级分销、专享价、现金卡11 个,装在 plugins/promote
资金账户充值、提现、保证金、余额支付、资金流水平台与商家两套账
三级分销分销商、分销商品、分销订单、佣金设置国产商城常见配置
页面 DIY可视化模板编辑、页面布局数据存表public/data/pagediy
IM 客服自带 webim 与消息表需配合长连接或轮询
微信能力自定义菜单、自动回复、公众号设置WeixinController
短信阿里大于、短信中国两套适配模板与发送日志入库
物流查询快递 100 适配plugins/express/kuaidi100
第三方登录支付宝、QQ、微信小程序plugins/connect
报表销售、商品、会员统计ReportController

3. 技术架构

整体结构:Yii2 advanced 模板的典型四应用布局——backend(平台后台)、frontend(前台与 API,内部再分 home / api / mob)、console(命令行与队列)、common(模型、组件、插件、RBAC)。五个 web 入口都在 public 下,各自加载同一套 common/config 再叠加自己的配置。

层技术实际取值
框架Yii22.0.49.4(composer.lock 锁定)
应用模板advancedbackend / common / console / frontend
PHP 要求文档口径7.2.5 ~ 7.4,不支持 PHP 8
视图Smartyyii\smarty\ViewRenderer,模板后缀 .html
路由urlManager开启美化 URL,统一 .html 后缀
缓存FileCache(默认)另配 Redis 组件(localhost:6379、db 0)
购物车自定义组件common\components\cart\Cart,存储走 DbSessionStorage
队列yii2-queuefile 驱动,路径 @console/runtime/queue
权限RBACyii\rbac\PhpManager,规则在 common/rbac 三个 PHP 文件
前端Vue 3vue 3.2、vite 2.9、element-plus 2.1、axios、vue-router 4
前端工程独立目录template/pc,构建产物输出到 public/pc
依赖源阿里云镜像composer.json 里 repositories.packagist 指向 mirrors.aliyun.com

插件机制是这套系统最值得看的设计。common/plugins 下先定义 12 个基类(支付、短信、促销、物流、登录、上传、地图、编辑器、取数、本地化、其他),再按类型建子目录:

插件类型目录内置实现
支付paymentalipay、wxpay、cod、deposit
营销promotecashcard、coupon、distribute、exclusive、fullfree、fullprefer、integral、limitbuy、mealbuy、rechargegive、teambuy
短信smsalidayu、smschinese
登录connectalipay、qq、weixinapp
物流expresskuaidi100
上传uploaderwebuploader

几个关键取舍:

  • 前台是「薄 Yii + 厚 Vue」:frontend/home 只有 6 个控制器(Default、Site、Diy、Delivery、Weixin、Crontab),public/index.php 还配了 catchAll 到 default/index,实际页面渲染交给 public/pc 的 Vue 单页,数据走 /api。
  • 视图层同时存在 Smarty 与 Vue:老页面与后台用 Smarty,PC 前台用 Vue,维护时要分清改哪一层。
  • 队列用文件驱动:yii2-queue 的 file 驱动不需要额外中间件,但任务落在单机磁盘上,多机部署会各跑各的、任务不共享。
  • RBAC 用 PHP 文件而不是数据库:权限项写在 common/rbac/items.php,改权限要改代码,适合固定角色,不适合频繁自定义角色的运营团队。

4. 目录结构

路径用途
shopwind/服务端源码根目录(上传到站点后作为程序目录)
shopwind/index.php仓库根的这个文件是 HTML 说明页,不是入口
shopwind/public/index.php前台入口,合并 common + frontend/home 配置
shopwind/public/admin/index.php平台后台入口
shopwind/public/mob/index.php移动端(旧)入口
shopwind/public/pc/Vue 3 前台构建产物(index.html + assets)
shopwind/public/h5/H5 构建产物(静态资源,无源码)
shopwind/public/api/API 入口
shopwind/public/install/安装程序与 structure.sql、initdata.sql
shopwind/public/data/运行期数据:config.php、setting.php、安装锁、DIY 页面
shopwind/backend/平台后台:35 个控制器、视图、RBAC 相关模型
shopwind/frontend/home/前台 Yii 应用(6 个控制器)
shopwind/frontend/api/API 应用(42 个控制器)
shopwind/frontend/mob/移动端 Yii 应用
shopwind/common/models/83 个 ActiveRecord 模型
shopwind/common/business/订单、支付、配送的业务基类与子类型
shopwind/common/components/cart(购物车)、queue
shopwind/common/library/插件加载、设置、消息、分页、树、微信等工具
shopwind/common/plugins/12 类插件基类与内置实现
shopwind/common/rbac/RBAC 项、分配、规则(PHP 文件)
shopwind/console/命令行入口 yii、队列消费、定时任务
shopwind/install/安装控制器、structure.sql(83 张表)、initdata.sql(演示数据)
shopwind/vendor/依赖已随仓库提交(134 MB),另有 vendor.zip
template/pc/PC 前端源码:src/pages、src/api、router、vite.config.js
template/pc/env/前端环境配置,升级时官方要求保留
安装必读.md、升级方法.md部署与升级说明

一个容易被忽略的事实:vendor 目录和 vendor.zip 都进了仓库。好处是下载即跑、不用配 composer 镜像;代价是 398 MB 的仓库、依赖版本锁死在提交里、composer update 可能直接覆盖作者改过的第三方代码。

5. 快速上手

前置条件

PHP 7.2 ~ 7.4(不要用 PHP 8)、MySQL 5.5 ~ 5.7、Redis、fileinfo 扩展,并关闭 open_basedir(安装必读明确要求,否则安装器读写受限)。

第一步:放源码、定运行目录

把仓库里 shopwind 文件夹的内容上传到站点目录,运行目录设为 public。用宝塔的话就是建站后进「网站目录」把运行目录改成 /public,再关掉防跨站攻击。

cd /www/wwwroot/你的站点目录
chown -R www:www .
chmod -R 755 public/data
chmod -R 777 runtime backend/runtime frontend/home/runtime frontend/api/runtime

第二步:配伪静态

Nginx 下最少要有这两段:H5 交给静态文件,其余交给入口。

location /h5 {
    try_files $uri $uri/ /h5/index.html;
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

admin、api、mob、install 这几个子目录各自有 index.php,仓库里同时给了 nginx.rewrite、apache.rewrite、iis.rewrite 三个现成文件,直接对照抄即可。

第三步:跑安装器

浏览器打开 你的域名/install,按提示填数据库信息,安装器会导入 structure.sql 建 83 张表、可选导入演示数据。装完提示两个地址:

  • 后台:你的域名/admin
  • H5:你的域名/h5

环境自检页在 你的域名/install/requirements.php。

第四步:装完先做三件事

# 1. 关掉调试模式(三个入口都要看)
grep -n 'YII_DEBUG' public/index.php public/admin/index.php public/mob/index.php

# 2. 删掉或改名安装目录
mv public/install public/install.bak

# 3. 启动队列消费(异步任务依赖它)
php console/yii queue/listen

队列不启动时,短信、模板消息这类异步任务会一直躺在 console/runtime/queue 里不执行,这是部署后最常见的「功能没反应」原因。

第五步:清演示数据

后台 → 插件 → 其他工具 → 安装「一键清除」插件 → 执行「一键清除数据」或「重置系统」。别手动删表,83 张表之间的外键与初始配置很容易漏。

6. 功能模块清单

模块能做什么对应入口
商家管理入驻审核、店铺等级、店铺结算StoreController、SgradeController
商品管理商品、规格、属性、图集、品牌、类目GoodsController、GoodspropController、BrandController
订单管理订单查询、发货、备注、订单日志OrderController
退款售后退款申请、退款留言、退款审核RefundController
营销中心11 个促销插件的安装与配置PromoteController、PluginController
优惠券券模板、券号、发放与核销CouponModel、CouponsnModel
拼团 / 秒杀团购活动、限时抢购TeambuyModel、LimitbuyModel
分销分销商、分销商品、佣金与订单DistributeController
资金充值、提现、保证金、余额流水DepositController、RechargeController
积分积分设置、积分商品、积分日志IntegralController
会员会员、等级、收货地址、收藏UserController、AddressModel
客服IM 会话与消息WebimModel
微信菜单、自动回复、公众号设置WeixinController
模板 DIY页面布局与可视化编辑TemplateController、DiyController
应用市场商业应用购买、续费记录AppmarketController
报表销售、商品、会员统计ReportController
系统设置站点参数、地区、运费模板、支付与短信SettingController、RegionController
数据库工具备份、恢复、优化DbController

API 侧另有 42 个控制器(购物车、结算、地址、优惠券、拼团、分销、余额、货到付款等),是移动端与 PC Vue 前台共用的接口层。

7. 版本与授权

项实际情况
版本12 个 Git 标签,最新 V5.0正式版,往上依次 V4.8、V4.7、V4.5、V3.4.4 … V3.3.1
分支只有 master 一个
提交447 次,最后一次 2026-11-01(提交信息「修复已知问题」)
根目录 LICENSEApache-2.0 全文,原样未填版权人
源码文件头This is not free software. Do not use it for commercial purposes. If you need commercial operation, please contact us to purchase a license.
README 口径标准版可免费商用、可二次开发,但须保留 PHP 文件头部版权、不得包装成自研产品
官网另有《开源协议》页面 shopwind.net/license/,README 让使用者遵守它

这三套说法必须放在一起看,因为它直接决定你能不能商用:

  1. LICENSE 文件是 Apache-2.0,按这份文本,你可以商用、闭源修改、对外分发,只需保留声明。
  2. 每个 PHP 文件头写的是相反的:非自由软件、商用需购买授权。
  3. README 与官网《开源协议》是第三种口径:标准版免费商用,但要保留版权头、不得宣称自研。

实践中,法院与客户都更可能看文件头的版权声明和官网协议,而不是仓库里那份没人填署名的 Apache 文本。结论:把它当「可免费试用的源码」而不是「明确 Apache-2.0 授权的软件」;商用前向官方要一份书面授权说明,并保留全部版权头。

8. 商业模式说明

这是典型的「开源标准版引流 + 商业版与增值服务收费」结构,只是边界划得比同类更靠前:

产品线内容性质
标准版PC 端 + 平台后台 + API,Gitee 开源免费
企业版(V3 演示站)快递发货为主的完整商城付费
旗舰版(V4 演示站)多商户、社区团购自提付费
高级版(V5 演示站)同城配送(达达)、类外卖风格付费
社区团购版团长、自提、扫码核销付费
移动端APP(Android / iOS)、微信小程序、头条小程序增值项
增值服务定制开发、运营维护、模板与插件付费

仓库里能直接看到这套商业化的技术痕迹:swd_appmarket(应用市场)、swd_appbuylog(应用购买记录)、swd_apprenewal(应用续费)三张表,以及后台的 AppmarketController。也就是说插件与应用是可以按年收费的,开源的是内核,生态位留给商业应用。

官方在 README 里的说法是「商业版是公司主要收入来源,也是确保能持续运营开源项目的保障」,并称目标是把 ShopWind 做成「国内版的 WordPress」。这类表述属于官方宣传口径,是否成立要看版本迭代与商业版交付,不能当客观事实。

9. 生态与周边

项目 / 资源作用地址
官网产品、报价、模板与插件shopwind.net
开发文档二次开发、插件开发说明developer.shopwind.net
API 文档接口清单与调试ojrjoz6p7z.k.topthink.com/@shopwind/
论坛安装教程、常见问题、交流shopwind.net/forum
标准版演示与 Gitee 版本对应的在线站test.shopwind.net
企业版演示商业版,快递发货v3.shopwind.net
旗舰版演示商业版,多商户 + 自提v4.shopwind.net
高级版演示商业版,同城配送pro.shopwind.net
社区团购演示商业版,团长核销cgb.shopwind.net
Yii 中国框架社区与中文文档yiichina.com
依赖生态composer 包:yii2-queue、yii2-redis、yii2-imagine、wechatpay、阿里云 OSS、七牛、2amigos/qrcode、HTMLPurifierpackagist 阿里云镜像

生态上要说清楚:没有官方 Docker 镜像、没有 Helm、没有公开的 issue 讨论文化(21 个 Open Issues、1 个 PR 与 10.3K Star 不成比例),技术支持主要走官网论坛与商务渠道。它的「生态」更像一家公司的产品体系,而不是社区共建项目。

10. 选型建议

适合你,如果:

  • 你要做多商户平台(平台抽佣、商家入驻),而不是单店网店;
  • 团队熟悉 PHP 与 Yii2,或者愿意按它的插件约定扩展;
  • 你能接受「PC 端开源、移动端付费」的边界,预算里包含商业版或自研移动端;
  • 你需要在国产商城程序里找一套插件化程度较高、内核不过度臃肿的底子。

不适合你,如果:

  • 你的服务器只装 PHP 8——文档明确不支持,硬上要改大量代码;
  • 你需要 Apache-2.0 那种「闭源商用无争议」的授权确定性;
  • 你要的是 SaaS 多租户或跨境、多语言场景,这套是单站点多商户;
  • 你没有 PHP 团队,只想要开箱即用的托管服务。

和同类怎么比:CRMEB、NIUSHOP、ShopXO 也都是 PHP 系多商户商城,差别主要在三点——技术栈(多数是 ThinkPHP,这套是 Yii2)、移动端策略(多数把 UNIAPP 源码一并开源,这套只给构建产物)、内核克制程度(这套把营销全部做成插件,代价是必须按它的插件基类写)。选型时把「移动端源码是否在你手上」和「授权是否书面明确」两条单独拉出来打分,比对比功能表更有意义。

11. 风险与坑

  • 授权口径自相矛盾:LICENSE 是 Apache-2.0,文件头却写「非自由软件、商用需购买授权」。这不是文字瑕疵,而是法律风险。上线前要书面确认,并原样保留版权头。
  • 调试模式默认开着:public/index.php、public/admin/index.php、public/mob/index.php 三个入口都硬编码了 YII_DEBUG = true 与 YII_ENV = 'dev'。生产环境必须改成 false 与 prod,否则异常页会暴露路径、SQL 与配置。
  • Cookie 校验密钥是示例值:backend/config/main.php 里 cookieValidationKey 写死为 abcdefg1234567890,全网同一份。不换等于给伪造 Cookie 留门,部署第一步就该换成随机串。
  • 安装目录留在 Web 根下:public/install 装完仍在,虽然有 install.lock 拦截,但安装器本身是攻击面,装完应删除或改名。
  • PHP 版本窗口很窄:只支持 7.2 ~ 7.4,而 7.4 已于 2022 年底停止安全支持。这意味着你要长期跑一个不再收安全补丁的运行时,除非自己评估升级到 8.x 的改造量。
  • 依赖整包入库:vendor 134 MB 提交在仓库里,另有 vendor.zip。好处是免 composer,坏处是第三方库的版本与补丁状态由作者决定,你无法用 composer audit 之类手段常规跟进。
  • 文件队列不支持多机:yii2-queue 用 file 驱动,任务落在 console/runtime/queue 的本机磁盘。上多台服务器时,异步任务会各跑各的,必须换 Redis 或数据库驱动。
  • Redis 默认无密码、本机地址:common/config/main.php 里 hostname = localhost、port = 6379、无 password,云服务器上要确认 Redis 未对外暴露。
  • 升级靠人工比对 SQL:升级方法.md 让你用 BCompare 比 structure.sql 差异再手改表,没有 migration、没有版本号常量。跨大版本升级实际风险接近重装。
  • 移动端只有产物没有源码:public/h5 是构建后的静态文件,template 下只有 pc。想改 H5 或小程序,要么走商业版,要么自己重写前端对接 /api。
  • 营销插件是商业闭环的一部分:应用市场、购买记录、续费三张表说明部分插件需付费授权,装之前先确认授权与到期时间。
  • 演示数据与演示站点同源:initdata.sql 会灌入演示商品与账号,不清理就上线会出现占位图片与测试订单。
  • 仓库体积与首屏信息:398 MB 的仓库 clone 不快;README 首屏大量商业版体验账号与广告,Star 数不代表标准版能力,判断项目状态请看提交记录。
  • 商城类共性问题仍需自测:支付回调验签、超时关单、库存并发、退款对账这些不在「装完能用」的范围内,必须按自己的支付通道逐项压测。

12. 参考链接

名称地址
代码仓库(Gitee)https://gitee.com/shopwind/yii2-shopwind
官网https://www.shopwind.net
架构介绍https://www.shopwind.net/product/system.html
开发文档https://developer.shopwind.net
API 接口文档https://ojrjoz6p7z.k.topthink.com/@shopwind/
安装教程https://www.shopwind.net/forum/thread/105.html
运营手册https://www.shopwind.net/product/guide.html
开源协议(官网版)https://www.shopwind.net/license/
标准版 / 商业版对比https://www.shopwind.net/product/business.html
标准版演示站https://test.shopwind.net
Yii 框架官网https://www.yiiframework.com
Apache-2.0 协议全文https://www.apache.org/licenses/LICENSE-2.0

本文基于 2026-11-10 对 master 分支的浅克隆源码(composer.json、composer.lock、common/config、backend/config、install/structure.sql、插件目录、template/pc/package.json)、README、安装必读.md、升级方法.md 与 Gitee 项目页整理;Star、Fork、Issues、标签与提交数均以该日为准。授权部分存在多套口径,商用前请以官方书面说明为准。

标签: 商城, php, shopwind

添加新评论