一句话定位:萤火商城(YoShop)是用 PHP 7.4 + ThinkPHP 6 写的前后端分离商城,一个仓库里塞了四个应用——平台后台 /admin、商户后台 /store、用户端接口 /api、定时任务 timer,靠 store_id 做多商户数据隔离。它「轻量」的宣传与实际体量有落差:仓库带 66 张表、474 个 PHP 文件、vendor 全量入库,共 96 MB。
项值
仓库地址https://gitee.com/xany/yoshop2.0
项目定位前后端分离的多商户电商系统(平台 + 商户 + 买家)
运营主体萤火科技(yiovo.com),文件头 Copyright (c) 2017~2025
开源协议根目录 Apache-2.0;但 468 个 PHP 文件头写「这不是一个自由软件,不允许再发行」
后端技术栈PHP 7.4+、ThinkPHP 6.1.5、think-orm 2.0.53、Workerman(think-worker 3.0.6)
前端Ant Design Vue 管理端、UNI-APP(H5 / 小程序),源码在三个独立仓库
数据库MySQL 5.7+,66 张表,前缀 yoshop_,按 store_id 分商户
代码规模474 个 PHP 文件(app + cores)、vendor 5003 个文件入库、仓库 96 MB
仓库状态1 个分支 master、10 个标签(最新 v2.1.3)、510 次提交,最后提交 2026-06-19
社区热度Gitee 7.5K Star / 2.6K Fork / 765 Watch / 200 Open Issues / 1 PR(2026-11-10 查询)
文档日期2026-11-10

1. 项目是什么

它是「一套 PHP 后端 + 三套前端 + 一个安装向导」的多商户商城。

后端一个 ThinkPHP 6 工程,用 think-multi-app 拆成四个应用,各自有独立入口和权限体系:

应用域名路径使用者职责
admin/admin平台运营商户管理、全局设置、页面设计、订单监管
store/store入驻商户商品、订单、售后、优惠券、统计、店铺设置
api/api买家端(H5/小程序/APP)商品浏览、购物车、结算、支付、会员中心
timer命令行系统自动确认收货、优惠券过期、会员等级计算

数据层是单库多商户:yoshop_store 是「商家(商户)记录表」,自增从 10001 开始;商品、订单、地址、优惠券等表都带 store_id,靠它区分数据归属。所以它不是单店商城,而是能开多个商户的平台型系统——这一点和 README 首屏只讲「搭建个性化独立商城」的印象不一样,要看清。

三件需要先认清的事:

  • 前端源码不在这个仓库。public/admin、public/store 是构建好的 Vue 产物,public 下没有源码;改界面要去 yoshop2.0-admin、yoshop2.0-store、yoshop2.0-uniapp 三个仓库。
  • 它是「源码全开源 + 禁止再发行」的组合。README 允许你自运营商用,但明确禁止把代码再发行或出售;这与根目录的 Apache-2.0 文本直接冲突,后面第 7 节细说。
  • 它面向二开,不面向开箱即用。安装有向导,但 .env 直接提交在仓库里、默认账号密码公开、定时任务要自己守进程,属于「开发者的脚手架」而非「交付给商家的成品」。

2. 核心特性

能力说明是否在代码中确认
多商户平台 + 商户双后台,数据按 store_id 隔离是,yoshop_store 及全表 store_id
商品体系商品、SKU、规格、规格值、分类关联、商品服务、图片是,yoshop_goods* 5 张表
订单与售后下单、支付、发货、收货、退款/退货、退款地址是,yoshop_order* 8 张表
运费模板模板 + 区域规则是,yoshop_delivery、yoshop_delivery_rule
优惠券发放、领取、使用、过期是,yoshop_coupon、yoshop_user_coupon
积分积分流水、抵扣是,yoshop_user_points_log
余额与充值余额流水、充值订单、充值套餐是,yoshop_user_balance_log、yoshop_recharge_*
会员等级等级、升级流水、等级权益是,yoshop_user_grade、yoshop_user_grade_log
页面 DIY页面装修、组件、链接选择器是,yoshop_page,后台 Page.php
多端H5、微信小程序、公众号、APPUNI-APP 独立仓库,后端接口统一
支付微信支付 V3(wechatpay/wechatpay 1.4.11)、支付宝 EasySDK 2.2.1是,yoshop_payment* 3 张表
物流物流公司、轨迹查询、发货单是,yoshop_express;更新日志提到阿里云物流轨迹
小票打印打印机配置与订单打印是,yoshop_printer
多存储阿里云 OSS、七牛、腾讯云 COS、本地是,composer 三个 SDK 全在
短信overtrue/easy-sms 2.2是
微信生态overtrue/wechat 4.5,小程序设置、公众号关注组件是,yoshop_wxapp_setting
RBAC 权限商户角色、菜单、接口权限是,yoshop_store_role*、yoshop_store_menu*

没有的东西也要说清楚:代码里找不到拼团、秒杀、砍价、直播、供应商、独立分销体系。搜索「拼团」「分销」只有两处注释残留(结算参数里的 isDealer 开关、结算源码里一句「拼团商品单次限购数量」),没有对应的数据表与后台模块。拿它和主打营销玩法的商城比,营销侧是明显短板。

3. 技术架构

层技术版本 / 说明
语言PHPcomposer 要求 7.4.0 以上;README 写 PHP 7.4
框架ThinkPHP6.1.5(README 写的是 6.0.5,两处口径不一致)
ORMthink-orm2.0.53,模型层 + 服务层分离
多应用think-multi-app1.0.14,admin / api / store / timer 四个应用
常驻进程think-worker + Workerman3.0.6,定时任务靠 php think timer start
队列think-queue3.0.7(Redis 驱动)
缓存yiovo/tp6-cache默认 file,.env 里可切 Redis
验证码yiovo/tp6-captcha1.1.4
支付wechatpay 1.4.11、alipaysdk/easysdk 2.2.1微信 V3 + 支付宝
微信overtrue/wechat 4.5.0小程序、公众号
存储七牛 7.4.3、阿里 OSS 2.4.3、腾讯 COS 2.5.2三云 + 本地
表格导出phpspreadsheet 1.22.0订单导出
订单号godruoyi/php-snowflake 3.2.1v2.1.3 起用雪花算法
图像处理kosinix/grafika缩略图、海报

结构上的四个特点:

  • 多应用而不是多服务:四个应用共享同一份代码、同一个数据库、同一套模型,靠入口文件和路由区分。部署就一个 PHP 站点加一个常驻进程,比微服务简单得多,但也意味着任何一次改表都要四个应用一起回归。
  • 分层是「控制器 → 服务 → 模型」:app/{应用}/controller 只做参数校验与响应,业务写在 service,数据访问走 model。cores/ 放基类、异常处理、中间件、公共 trait。
  • 每个商户一套权限与菜单:yoshop_store_role、yoshop_store_menu、yoshop_store_api 三张表组成 RBAC,接口级鉴权,不是只藏菜单。
  • 定时任务跑在 Workerman 里:app/timer/command/Timer.php 注册 timer 命令,启动后常驻执行自动确认收货、优惠券状态、会员等级等任务。它不是一个 cron 脚本,进程挂了任务就停。

4. 目录结构

路径用途
app/admin/平台后台应用:控制器、模型、服务
app/store/商户后台应用,结构同上,规模更大
app/api/买家端接口,28 个控制器(商品、购物车、结算、订单、优惠券、充值等)
app/timer/定时任务应用,5 个任务控制器
app/common/公共模型、服务、枚举、监听器
cores/框架层:BaseController、BaseModel、BaseTimer、异常、中间件、trait
config/18 个配置文件:数据库、缓存、队列、worker、支付、路由
route/路由定义
public/index.php统一入口
public/admin/、public/store/两个后台的 Vue 构建产物(无源码)
public/install/安装向导,含 install.sql(544 KB,66 张表)
public/uploads/上传目录
data/运行数据目录
vendor/Composer 依赖,5003 个文件已提交入库,49 MB
数据库修改记录/各版本增量 SQL(v2.1.0 ~ v2.1.2 + 旧版本目录)
更新日志.txt按版本罗列的新增、修复、优化
version.json当前版本号 2.1.3
think命令行入口

模块按业务分子目录,例如 app/store/controller/goods、order、market、statistics、setting,与后台菜单一一对应,接手时照菜单找代码不会迷路。

5. 快速上手

环境要求

CentOS 7+ / Nginx 1.10+ / PHP 7.4 / MySQL 5.7+。PHP 扩展按 composer.json 至少要 gd、curl、bcmath、json、pdo、openssl、mbstring、zip、redis、fileinfo。注意:即使缓存用 file,ext-redis 也是 composer 声明必需项,缺了按标准流程会直接失败。

第一步:放代码、给权限

cd /www/wwwroot
git clone --depth 1 https://gitee.com/xany/yoshop2.0.git yoshop
cd yoshop
chmod -R 755 runtime public/uploads data

vendor/ 已在仓库里,正常不需要 composer install;要升级依赖再跑。

第二步:配站点与伪静态

站点根目录指向 yoshop/public,然后加 ThinkPHP 的伪静态:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=/$1 last;
    }
}

第三步:走安装向导

浏览器打开 http://你的域名/install,按五步填写数据库信息、管理员账号,向导会生成 .env 并写入 install.lock。安装完成后建议把 public/install 目录移走或改名。

数据库编码用的是 utf8 而不是 utf8mb4,商家名、商品名带 emoji 会出问题,建库时自己留意。

第四步:起定时任务

cd /www/wwwroot/yoshop
php think timer start

这是常驻进程,用 supervisor 或宝塔的进程守护托管,别用 nohup 了事。它负责自动确认收货、优惠券过期、会员等级重算,停了这些状态就不会自动流转。

第五步:前端

三个仓库分别对应三个前端,都是独立工程:

仓库用途
yoshop2.0-uniapp用户端 H5 / 微信小程序
yoshop2.0-store商户后台 Vue 源码
yoshop2.0-admin平台后台 Vue 源码

拉下来 npm install 后改接口地址指向你的域名,构建产物覆盖 public/admin、public/store 即可。移动端还要在 public/config.js 与小程序后台里配好合法域名。

验证

curl -I http://127.0.0.1/admin/
php think version

后台能打开、命令行能输出 2.1.3,说明代码与环境基本对上。

6. 功能模块清单

66 张表按业务域分组,比逐个罗列更好记:

业务域主要表说明
平台与商户yoshop_store、yoshop_store_user、yoshop_store_role、yoshop_store_menu、yoshop_store_api、yoshop_admin_user商户入驻、子账号、RBAC 权限
商品yoshop_goods、yoshop_goods_sku、yoshop_goods_image、yoshop_goods_spec_rel、yoshop_spec、yoshop_spec_value、yoshop_category商品、SKU、规格、分类
交易yoshop_order、yoshop_order_goods、yoshop_order_address、yoshop_order_delivery、yoshop_order_delivery_goods、yoshop_order_export订单主从表、发货、导出
售后yoshop_order_refund、yoshop_order_refund_address、yoshop_order_refund_image退款退货全流程
支付yoshop_payment、yoshop_payment_template、yoshop_payment_trade支付方式、模板、交易流水
配送yoshop_delivery、yoshop_delivery_rule、yoshop_express、yoshop_store_address运费模板、物流公司、发货/退货地址
营销yoshop_coupon、yoshop_user_coupon优惠券发放与领取
会员yoshop_user、yoshop_user_grade、yoshop_user_points_log、yoshop_user_balance_log会员、等级、积分、余额
充值yoshop_recharge_plan、yoshop_recharge_order、yoshop_recharge_order_plan充值套餐与充值订单
内容与装修yoshop_page、yoshop_article、yoshop_article_category、yoshop_help页面 DIY、文章、帮助
评价yoshop_comment、yoshop_comment_image商品评价与晒图
文件yoshop_upload_file、yoshop_upload_group上传文件分组管理
系统yoshop_system_process、yoshop_printer、yoshop_wxapp_setting、yoshop_store_setting进程锁、小票打印、小程序配置
地域yoshop_region省市区数据

看表结构能得出两个判断:交易链路是完整的(下单到退款每步都有表),营销链路是残缺的(只有优惠券)。如果你的业务强依赖拼团、秒杀这类玩法,得自己建表开发,而不是「配置一下就有」。

7. 版本与授权

项实际情况
代码版本version.json 为 2.1.3,与最新标签一致
标签10 个:v2.1.3、v2.1.2、v2.1.1、v2.1.0、v2.0.8 … v2.0.3
提交510 次,最后一次 2026-06-19(提交信息 v2.1.3)
分支仅 master
发布节奏更新日志逐版本记录,v2.1.x 更新较密
根目录 LICENSEApache-2.0 全文,附录版权行为 Copyright 2018 萤火科技
文件头468 个 PHP 文件写「这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行」
README 版权须知允许自运营商用;须保留版权信息;禁止再发行或出售

三处口径互相冲突,这是本项目最需要谨慎的地方:

  1. Apache-2.0 明确允许再发行、允许闭源分发、允许收费,只要求保留声明与变更说明;
  2. 代码文件头写「不是自由软件、不允许再发行」;
  3. README 写「允许自运营商用,禁止再发行或出售」。

三者取交集,能确定的是:自己运营一个商城可以,把代码再分发或当产品卖不行。但严格讲,Apache-2.0 一旦授予就不可撤回,文件头与 README 属于附加限制,法律效力存疑。实际做法建议:自用按 README 的约束走(保留版权头、不转售),要做二次分发或商业交付,先向萤火科技拿书面授权,不要拿根目录那份 Apache 文本当护身符。

另一个细节:README 宣称「PHP7.4 + ThinkPHP6.0.5」,而 composer.json 锁定的是 topthink/framework 6.1.5。6.0 与 6.1 在容器、事件、多应用上有差异,遇到问题按实际装的 6.1 查文档。

8. 商业模式说明

典型的「开源版做口碑、商业版做收入、二开服务做增值」:

环节做法
开源版后端 + 三套前端全部开源,允许自运营商用,禁止再发行
获客Gitee 7.5K Star、官网演示站、文档站、QQ 交流群
商业收入官网售卖商业授权、定制开发、模板与插件、部署服务
服务边界官方文档只覆盖安装与小程序配置,深度二开靠付费
生态绑定三个前端仓库同属一家,版本要跟后端对齐

开源版的定位很清楚:它是官网的流量入口和试用版。README 里「看见即所得」「最适合二开的源码」是宣传口径;可核对的客观事实是 474 个 PHP 文件、66 张表、完整的中文注释与严格类型声明——代码整洁度在同类国产 PHP 商城里确实靠前。

但要注意一个结构性事实:营销功能被明显裁剪,而营销恰恰是商家最愿意付费的部分。这不是 bug,是产品分层。

9. 生态与周边

项目 / 资源作用地址
后端(本文主角)PHP 服务端 + 两个后台产物gitee.com/xany/yoshop2.0
用户端UNI-APP,H5 / 小程序gitee.com/xany/yoshop2.0-uniapp
商户后台源码Vue + Ant Design Vuegitee.com/xany/yoshop2.0-store
平台后台源码Vue + Ant Design Vuegitee.com/xany/yoshop2.0-admin
官网产品、授权、下载yiovo.com
文档站安装教程、小程序配置yiovo.com/doc
演示站后台演示 admin / yinghuoshop2.yiovo.com
交流群QQ 群 806461900—

生态上要说明白:没有 Docker 镜像、没有 Helm、没有官方 Issue 处理节奏。200 个开放 Issue、1 个 PR,与 7.5K Star 严重不匹配,说明问题主要走 QQ 群消化,公开检索价值有限。文档站是独立站点,代码仓库里只有 README、安装必读、更新日志三份文字。

10. 选型建议

适合你,如果:

  • 团队是 PHP 栈,想要 ThinkPHP 6 + Vue 前后端分离、代码能读能改的商城;
  • 你要做多商户平台,且接受「单库 + store_id 隔离」这种较轻的隔离方式;
  • 你能接受营销功能只有优惠券,其余自己开发;
  • 你只需要自运营,不需要把系统再分发或做成 SaaS 卖给第三方(否则授权是硬伤)。

不适合你,如果:

  • 你要拼团、秒杀、砍价、分销、直播这类现成营销玩法;
  • 你要求授权条款清晰无冲突(Apache-2.0 与文件头、README 打架);
  • 你没有 PHP 运维能力——定时任务是常驻进程,出问题要会看 Workerman 日志;
  • 你想跑在 PHP 8 上:代码按 7.4 写的,未做 8.x 兼容验证。

和同类怎么比:和 ShopWind(Yii2)、CRMEB、NIUSHOP 比,萤火的优势是代码风格统一、注释完整、严格类型模式,接手成本低;劣势是功能面窄(营销弱)、运行时旧(PHP 7.4 已停止安全支持)、社区响应靠群。如果目标是「拿一套结构清晰的地基自己长功能」,它比那些堆满插件的老商城更合适;如果目标是「开箱即有全套营销玩法」,它不合适。

11. 风险与坑

  • .env 直接提交在仓库里:内容是 DATABASE = test、USERNAME = root、PASSWORD = 123456。装完必须改,且不要把这个文件提交回自己的仓库。
  • 配置里有硬编码兜底:config/database.php 在 env 读不到时回退到 yoshop_pro2 / root / root。生产环境漏配 .env 会连上开发库名,排查时容易懵。
  • 默认后台口令公开:README 写 admin / yinghuo,安装 SQL 里也 seed 了 admin 账号。站点上线前必须改,且 /admin、/store 两个入口都要加访问限制。
  • 安装向导只校验 PHP 7.1:public/install/index.php 判断 phpversion() < '7.1' 才拦,而 composer 要求 >=7.4.0。用 7.1 装能过向导,跑起来才报错。
  • PHP 7.4 已停止安全支持:7.4 的官方安全维护在 2022 年底结束。长期运行要么自己打补丁,要么评估迁到 8.x 的改造成本。
  • 没有数据库迁移工具:升级靠 数据库修改记录/ 下的 SQL 手工执行,且目录里明确写「此处 sql 文件仅做记录,安装时用不到」。跨多版本升级容易漏步骤。
  • vendor 全量入库:5003 个文件、49 MB,好处是免 composer,坏处是依赖版本锁死、无法用常规手段跟进第三方漏洞。
  • 多商户隔离依赖应用层:数据隔离靠每张表的 store_id 条件,没有数据库级或 schema 级隔离。二开时任何一处漏加 store_id 条件,就是跨商户越权。
  • 定时任务是常驻进程:php think timer start 挂了,自动确认收货、优惠券过期、等级重算全部停摆,且不报错。必须用进程守护并监控。
  • 数据库字符集是 utf8:建库脚本用 utf8(部分表 utf8mb4),混用时 emoji 与四字节字符仍可能出问题,统一成 utf8mb4 更稳。
  • 授权口径冲突:Apache-2.0 与文件头的「不允许再发行」并存。二次分发或商业交付前必须书面确认,别自行解释。
  • 前端三个仓库要手动对齐:后端升级后,public/admin 是老产物就不匹配新接口。没有版本校验机制,升级要三个仓库一起看。
  • Issue 积压:200 个开放 Issue、1 个 PR。遇到问题先在代码里找答案,别指望社区快速响应。

12. 参考链接

名称地址
后端仓库https://gitee.com/xany/yoshop2.0
用户端仓库https://gitee.com/xany/yoshop2.0-uniapp
商户后台仓库https://gitee.com/xany/yoshop2.0-store
平台后台仓库https://gitee.com/xany/yoshop2.0-admin
官网https://www.yiovo.com
项目介绍https://www.yiovo.com/product
安装文档https://www.yiovo.com/doc/10024
小程序配置https://www.yiovo.com/doc/10047
演示后台https://shop2.yiovo.com/admin/
更新日志https://gitee.com/xany/yoshop2.0/blob/master/更新日志.txt

标签: 商城, php, yoshop, ThinkPHP

添加新评论