一句话定位:一套「ThinkPHP 8 + Vue3 + uni-app」的国产私域商城系统,V6 把底层做成了「多应用 + 插件」的组装式架构,后台还自带代码生成器和插件生成器,明显是冲着二次开发与项目交付去的。协议是 MIT,可商用可闭源;但 README 里同时写着「开源版不支持升级、无售后服务」,一键云编译这类卖点又依赖官方云服务,选型前要先把这条线划清楚。
| 项 | 值 |
|---|---|
| 仓库地址 | https://gitee.com/niushop-team/niushop |
| 项目定位 | 私域商城 / 新零售系统,多应用 + 插件化,面向二次开发 |
| 官网 / 演示 | https://www.niushop.com ;后台演示 v6.site.niucloud.com/admin(admin / 123456) |
| 开源协议 | MIT(仓库根 LICENSE、README、Gitee 项目信息一致) |
| 当前版本 | 最新标签 v6.5.5;upgrade.md 已在记录 v6.5.6 的商城插件更新 |
| 后端技术栈 | ThinkPHP 8.0.3 / PHP 8.0+ / MySQL 8 / Redis / Workerman 4.1 / 多应用 |
| 管理端技术栈 | Vue 3.2 + TypeScript 4.9 + Vite 4 + Element Plus 2.7 + Pinia 2 + Tailwind |
| 移动端技术栈 | uni-app(Vue3 + TypeScript)+ uview,出 H5 / 微信 / 支付宝 / 抖音小程序 / App |
| 前台另有工程 | web/:Nuxt 3(SPA 模式,basePath /web/) |
| 社区热度 | Gitee 14.7K Star / 1.3K Fork / 913 Watch / 599 Open Issues / 6 PR(2026-11-10 查询) |
| 代码规模 | 498 次提交;语言构成 PHP 41.4%、Vue 33.0%、JS 18.8%、TS 3.1% |
| 维护方 | 杭州牛之云科技有限公司(NIUSHOP / NIUCLOUD),版权标注 2015–2025 |
| 文档日期 | 2026-11-10 |
1. 项目是什么
它不是一个「单商户商城源码」,而是一套「商城 + 插件框架」的底座。仓库里放着四份东西:ThinkPHP 8 后端、Vue3 管理端、uni-app 移动端、Nuxt3 的 PC 前台,另有安装模块、代码生成器、插件生成器与一套文档入口。
V6 与 V5 最大的差别在组织方式:从「一个商城应用」变成「多应用聚合 + 多插件组合」。官方 README 举的例子很直白——一个旅游项目既要商城、又要旅游产品销售、还要会员与客服,传统做法是找几套源码拼,V6 的做法是在一套系统里装几个应用/插件,再 DIY 装修出来。
| 概念 | 落点 | 说明 |
|---|---|---|
| 多应用 | niucloud/app/adminapi、app/api、app/install | 后台接口、前台接口、安装程序分开,各自路由与中间件 |
| 插件 | niucloud/addon/(当前只有 shop) | 每个插件自带后台菜单、接口、数据表、前端页面 |
| 内核 | niucloud/core/ | 支付、短信、上传、海报、打印、模板、字典等可复用能力 |
| 云服务 | .env 的 [NIUCLOUD] 节点 | 一键云安装、云编译、云发布依赖官方云账号 |
| DIY 装修 | 后台装修 + 移动端组件 | 页面用组件拼,改版不发版 |
| 多语言 | app/lang、前端 i18n | 接口返回、校验提示、页面文案都走语言包 |
三点需要先明确:
- V6 是一次大重构,与 V5 的代码不兼容。网上大量「NIUSHOP 二开教程」还是 V5 的,照抄会处处对不上。
- 开源版是「能用 + 能改」,不是「能升级 + 有人管」。README 的「开源使用须知」第 1 条原话是:免费商用、保留版权即可,开源版不支持升级,无售后服务。
- 插件生态目前很薄。仓库里
addon目录只有shop一个插件,官方讲的是「生态会越来越丰富」,实际可选的要到 NIUCLOUD 服务市场看。
2. 核心特性
| 特性 | 说明 | 对使用者的价值 |
|---|---|---|
| 多应用 + 插件组合 | 商城、会员、客服等能力可按需装,插件可共存 | 一个项目里同时跑多种业务,不用部署多套系统 |
| 代码生成器 | 按数据表一键生成后台 PHP 业务代码与对应 Vue 页面 | 常规 CRUD 模块的开发时间从小时级压到分钟级 |
| 插件生成器 | 生成插件骨架、菜单、路由、安装脚本 | 二开团队做交付时能统一目录结构与规范 |
| 前后端分离 | 后端只出 RESTful 接口,三端各自独立构建 | 前端可替换、可独立发版,接口可给第三方复用 |
| 多端覆盖 | H5、微信/支付宝/抖音/百度等小程序、App | 一套 uni-app 代码铺开,运营侧只维护一份逻辑 |
| DIY 装修 | 后台可视化拖拽,移动端按组件渲染 | 首页、活动页改版不需要开发介入 |
| 内置基础中台 | 权限、站点设置、计划任务、素材、会员、支付、短信、消息、文章 | 不用从零搭地基,直接写业务 |
| 队列与定时任务 | Workerman + redis-queue + crontab 组件 | 订单超时、消息推送、统计任务不阻塞请求 |
| 多云存储 | 阿里云 OSS、腾讯云 COS、七牛、华为云 OBS | 图片视频不占应用服务器磁盘 |
| 多支付渠道 | 微信、支付宝,基于 yansongda/pay 与 easywechat | 收款方式齐全,退款走统一支付层 |
| 一键云编译 / 云发布 | 官方云服务代编译小程序并上传 | 免搭构建环境(需云账号,开源版是否可用要确认) |
| 在线升级 | 后台一键升级文件 | 官方宣传点,但开源版明确写「不支持升级」,见第 7 节 |
3. 技术架构
整体结构:单体 ThinkPHP 8 多应用 + 三个独立前端工程 + Workerman 常驻进程。没有微服务、没有服务注册,典型「一台 4C8G 能撑中型私域商城」的形态。
| 层 | 技术 | 说明 |
|---|---|---|
| 框架 | ThinkPHP 8.0.3 | topthink/framework v8.0.3、think-orm v3.0.14、think-multi-app v1.0.16 |
| 运行时 | PHP 8.0+ | 入口 public/index.php 里硬判断版本低于 80000 直接退出 |
| 数据库 | MySQL 8 | .env 中 CHARSET = utf8mb4,表前缀由安装时填写 |
| 缓存 / 队列 | Redis + Workerman | workerman/workerman v4.1.15、workerman/redis-queue v1.2.0、workerman/crontab v1.0.6 |
| 依赖注入 | php-di 7.0.1 | 服务与插件通过容器装配 |
| 鉴权 | firebase/php-jwt 5.5.1 | 后台 token 默认 7 天、前台 30 天 |
| 支付 | yansongda/pay ^3.7 + easywechat 6.7.0 | 微信生态用 easywechat,聚合支付用 yansongda |
| 表格 / 图像 | phpspreadsheet 1.28、grafika、kkook/poster | 导出 Excel、图片处理、生成分享海报 |
| 验证码 | fastknife/ajcaptcha 1.2.1 | 行为验证码(滑块/旋转) |
| 管理端 | Vue 3.2.45 + TS 4.9.5 + Vite 4.1 + Element Plus 2.7 | Pinia 2.0.30、vue-router 4.1.6、Tailwind 3.2、ECharts 5.4、Vditor 编辑器 |
| 移动端 | uni-app 3.0(2023-07 版)+ Vue3 + TS | 自带 publish.cjs,构建后直接对接小程序上传 |
| PC 前台 | Nuxt 3.4.1 | ssr: false,basePath /web/,Element Plus + WindiCSS |
后端分层(niucloud/):
| 目录 | 职责 |
|---|---|
app/adminapi | 后台接口:登录、权限、菜单、各业务模块 |
app/api | 前台接口:商品、下单、支付、会员、装修数据 |
app/install | 安装向导的后端逻辑,配合 public/install.php |
app/service | 业务服务层,插件也往里注册服务 |
app/model | 数据模型,按业务域拆分 |
app/dict | 字典与枚举,状态值、类型常量集中管理 |
app/command | 命令行:插件装卸、菜单刷新、队列、定时、Workerman、改密 |
app/job / app/listener / app/event.php | 队列任务与事件监听 |
app/validate | 参数校验,提示文案走多语言 |
app/upgrade | 版本升级脚本 |
core/ | 内核:base、dict、loader、pay、sms、upload、oauth、poster、printer、template、util、job、exception |
addon/ | 插件目录,当前只有 shop |
config/console.php | 命令行注册表,能看出系统全部后台任务 |
config/console.php 里注册的命令基本就是运维清单:
| 命令 | 作用 |
|---|---|
addon:install / addon:uninstall | 插件安装与卸载 |
menu:refresh | 刷新后台菜单缓存 |
queue:work / queue:listen / queue:restart | 队列消费 |
cron:schedule | 计划任务调度 |
workerman | 长连接服务的启动、停止、重启 |
reset:password | 重置管理员密码(忘记密码时的救命命令) |
refresh:area | 刷新省市区数据 |
几个关键取舍:
- 插件化而不是微服务:所有插件跑在同一个 PHP 进程里,部署简单、调试直接;代价是插件之间没有隔离,一个插件写出慢查询会拖垮整站。
- ThinkPHP 8 + PHP 8:官方称是「国内首例 TP8 + PHP8 + MySQL8」的商城,技术栈确实新;但这也意味着老服务器(PHP 7.4)直接出局。
- 前端三个工程:管理端、移动端、PC 前台分开构建,互不干扰;代价是三个
node_modules、三套构建配置,CI 要分开跑。 - Workerman 承担队列与定时:不额外依赖 Supervisor 跑多个 PHP 脚本,但需要把 Workerman 进程本身守护好。
4. 目录结构
| 路径 | 用途 |
|---|---|
admin/ | 管理端 Vue3 工程,npm run dev 本地起,npm run build 出产物 |
niucloud/ | 后端 ThinkPHP 8 工程(PHP 41.4% 的主体) |
niucloud/app/ | 应用层:adminapi、api、install、service、model、command 等 |
niucloud/core/ | 内核抽象层:支付、短信、上传、海报、模板、字典、工具 |
niucloud/addon/ | 插件目录,随仓库只带 shop |
niucloud/config/ | 配置:数据库、缓存、控制台命令、路由等 |
niucloud/public/ | Web 根目录:index.php、install.php、静态资源 |
niucloud/.example.env | 环境变量模板,装完要复制成 .env |
niucloud/composer.json | 依赖清单(注意:仍是 ThinkPHP 骨架原样,见第 11 节) |
niucloud/think | 命令行入口 |
niucloud/install.lock | 安装完成标记,缺失时访问会跳安装向导 |
uni-app/ | 移动端工程,含 publish.cjs 发布脚本 |
web/ | PC 前台 Nuxt3 工程,env/ 下分 dev 与 product |
upgrade.md | 版本更新日志,当前记录到商城插件 v6.5.6 |
LICENSE | MIT 全文 |
README.md | 项目介绍、技术选型、演示地址、开源使用须知 |
.htaccess / nginx.htaccess | Apache 与 Nginx 伪静态参考 |
一个细节值得注意:后端的 niucloud/README.md 不是 NIUSHOP 的文档,而是 ThinkPHP 框架自带的那份(里面还写着「PHP7.2+,兼容 PHP8.1」)。说明这个后端目录就是在 ThinkPHP 骨架工程上直接改的,骨架自带的文件没有清理干净。
5. 快速上手
路线 A:向导安装(官方推荐姿势)
git clone https://gitee.com/niushop-team/niushop.git
cd niushop/niucloud
composer install
cp .example.env .env编辑 .env,至少填这几项:
APP_DEBUG = false
[APP]
AUTH_KEY = 随机长字符串
PRODUCT_KEY = 你的产品标识
[DATABASE]
HOSTNAME = 127.0.0.1
DATABASE = niushop
USERNAME = 数据库账号
PASSWORD = 数据库密码
HOSTPORT = 3306
PREFIX = ns_浏览器访问 http://你的域名/install.php,按向导填数据库、管理员账号,装完会生成 install.lock。之后再访问就走正常入口。
路线 B:本地开发(后端 + 管理端)
cd niucloud
php think run --host 127.0.0.1 --port 8011另一个终端:
cd admin
npm install
npm run dev路线 C:移动端与 PC 前台
cd uni-app
npm install
npm run dev:h5
npm run build:mp-weixincd web
npm install
npm run dev移动端编译完用微信开发者工具导入,记得改 manifest.json 里的小程序 appid,并在小程序后台配好 request 合法域名。
路线 D:生产环境的常驻进程
cd niucloud
php think queue:listen
php think cron:schedule
php think workerman start三条都用 Supervisor 守护。注意 .example.env 里 [QUEUE] state = false 是默认关闭状态,部署时如果没打开,队列不会跑,表现是「订单超时不关、消息不发」,而且不报错。
Nginx 伪静态
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}站点根目录指向 niucloud/public。如果要把管理端、移动端 H5 放在同一域名下,按官方文档分 admin、wap、web 三个子目录,并在 .env 里配 ADMIN_DOMAIN、WAP_DOMAIN、WEB_DOMAIN。
环境要求
- PHP 8.0 以上,扩展至少要有 json、curl、bcmath、mbstring、zip;
- MySQL 8,字符集 utf8mb4;
- Redis(队列与缓存都走它);
- 部署 Workerman 时要解除
proc_open、pcntl_*等被面板默认禁用的函数; - Node 建议 16 或 18:管理端用 Vite 4,移动端依赖是 2023 年的 uni-app 版本,Node 20+ 上装依赖容易报错。
6. 功能模块清单
管理后台
| 模块 | 主要能力 |
|---|---|
| 商品 | 商品、规格、分类、品牌、参数、评价、库存 |
| 订单 | 订单列表、发货、改价、备注、退款、售后 |
| 营销 | 优惠券、满减、限时折扣、拼团、秒杀等(随插件) |
| 会员 | 会员列表、等级、分组、余额、积分、提现 |
| 财务 | 支付流水、退款记录、对账 |
| 装修 | 首页/专题页 DIY,组件拖拽,多端预览 |
| 内容 | 文章、公告、帮助中心 |
| 渠道 | 微信公众号、小程序、H5、App 配置 |
| 系统 | 站点设置、权限角色、管理员、计划任务、素材中心、短信、支付、存储、多语言 |
| 工具 | 代码生成器、插件生成器、菜单管理、缓存清理、升级 |
移动端 / PC 前台
| 模块 | 主要能力 |
|---|---|
| 首页 | DIY 组件渲染,轮播、导航、商品组、活动位 |
| 商品 | 列表、搜索、详情、规格选择、评价 |
| 购物车 / 下单 | 多选、优惠券、积分抵扣、地址、支付 |
| 会员中心 | 订单、售后、收藏、足迹、优惠券、余额、积分 |
| 分销 / 邀请 | 推广码、团队、佣金(随插件启用) |
| 客服 | 会话与消息 |
7. 版本与授权
| 项 | 实际情况 |
|---|---|
| 版本号 | 最新标签 v6.5.5;仓库共 16 个标签,跨 V4、V5、V6 三条线 |
| 版本标识 | 没有 .version 文件,版本靠 Git 标签与 upgrade.md 判断 |
| 许可证 | MIT(仓库根 LICENSE 全文、README 末尾、Gitee 项目信息三处一致),版权方写的是 niucloud-admin,2023 |
| 版权方 | 杭州牛之云科技有限公司,README 标注 Copyright 2015–2025 |
| 更新节奏 | 最近提交在 2026 年,仍在活跃维护 |
| 开源范围 | README 明确「源码全部开源,包括前端、后端,无任何加密」 |
| 升级与售后 | README「开源使用须知」第 1 条:开源版不支持升级,无售后服务 |
MIT 的含义很直接:
- 可以免费商用、闭源修改、对外交付,不必开源你的改动;
- 只需保留版权声明与许可声明;
- 没有 AGPL 那种「网络服务必须开源」的约束,也没有 Apache-2.0 的专利条款。
所以协议层面它是这几篇里最宽松的。真正的限制不在协议,而在开源版的功能边界、升级通道与技术支持:README 自己写得很清楚,开源版不提供升级与售后,想要这两样得走商业版。
另外有个细节容易踩:niucloud/composer.json 的 license 字段写的是 Apache-2.0,name 还是 topthink/think,README 也是 ThinkPHP 的。这是骨架文件没改,以仓库根目录的 LICENSE(MIT)为准,但做合规审查时会被问到,建议在交付文档里注明。
8. 商业模式说明
开源版是入口,营收靠企业版、私有云与服务市场。官网导航能看到的形态:
| 形态 | 定位 | 说明 |
|---|---|---|
| 开源版(本文对象) | 单商城 + 插件框架 | MIT,可商用,无升级无售后 |
| 企业版 | 商业授权 | 功能更全,含升级与技术支持 |
| 高校版 | 教学场景 | 面向院校教学与实训 |
| 私有云 | 私有化交付 | 部署在自己的服务器,含服务 |
| 服务市场(NIUCLOUD) | 插件与应用交易 | 官方与第三方插件、模板在此分发 |
| 定制 / 二开服务 | 项目交付 | 官方与合作服务商承接 |
它的变现逻辑和 CRMEB 类似,但重心更偏「开发者工具」:代码生成器、插件生成器、云编译、云发布这些能力,本质是在降低二开与交付成本,让服务商用这套底座去接项目。对个人站长,这些功能价值有限;对做交付的小团队,这才是真正的卖点。
需要泼一盆冷水的地方:
- 「一键云安装、云编译、云发布」依赖官方云账号(
.env里的[NIUCLOUD] code/secret),不是装完就能离线用。私有化环境里这些按钮大概率不可用。 - 开源版的「在线升级」与「不支持升级」是矛盾的。README 一边说内置在线升级,一边在须知里写开源版不支持升级。合理解释是:升级能力面向付费版本开放,开源版要么手动合并代码,要么放弃升级。以官方说明为准,别按宣传页做规划。
- 插件要钱。仓库只带
shop,更多行业插件在服务市场单独售卖,预算里要留出来。
9. 生态与周边
| 项目 / 资源 | 作用 | 地址 |
|---|---|---|
| Gitee 主仓库 | 开源版全量源码(后端 + 三端前端) | gitee.com/niushop-team/niushop |
| NIUSHOP 官网 | 产品线、案例、购买 | www.niushop.com |
| NIUCLOUD 官网 | 服务市场、云服务 | www.niucloud.com |
| 使用手册 | 安装、配置、运营 | doc.niucloud.com |
| 二开手册 | 插件开发、目录规范 | doc.niucloud.com |
| API 接口手册 | 在线 API 文档 | api.niucloud.com/apidoc.html |
| 论坛 | 提问与经验 | niucloud.com/bbs |
| 后台演示 | admin / 123456 | v6.site.niucloud.com/admin |
| H5 演示 | 移动端效果 | v6.site.niucloud.com/wap/ |
| 宝塔安装文档 | 面板部署步骤 | doc.niucloud.com(V6 安装章节) |
生态上的空白要说清楚:没有 GitHub 官方镜像,没有 Docker 官方镜像,也没有 Helm / K8s 清单。仓库根目录只有 Apache 与 Nginx 的伪静态参考文件,部署方式就是「传代码 + 建库 + 跑向导」这一条路。
10. 选型建议
适合你,如果:
- 你是做项目交付的团队,需要一套能快速改、能加插件、能重复用的商城底座;
- 团队熟 ThinkPHP 与 Vue3,能读 TypeScript;
- 需要多端(H5 + 多平台小程序 + App),又不想维护多套前端;
- 看重 MIT 协议,可能要做闭源交付;
- 服务器已经能跑 PHP 8 + MySQL 8 + Redis。
不适合你,如果:
- 只想开个店、不打算写代码——用 SaaS 或更轻的开源商城更省事;
- 依赖「一键升级」保持版本跟进,又不准备买商业授权;
- 需要成熟的多商户分账、跨境多币种这类平台能力(要看商业版);
- 运维能力薄弱:常驻进程 + 队列 + 多前端工程,出问题的面比单应用大;
- 对插件生态有预期:当前开源仓库只有商城一个插件。
和同类怎么比:CRMEB 的功能面更宽、营销玩法更多、社区更大;NIUSHOP V6 的架构更「工程师友好」,插件化、代码生成器、多应用这套设计对二开更友好,但生态薄、插件少、社区响应慢。要「开箱即用的功能」,选 CRMEB;要「能长期改造的底座」,NIUSHOP 的结构更干净。
11. 风险与坑
- 开源版不支持升级:这是 README 的原话,不是推测。意味着你拿到的是一份快照,后续官方修的安全问题、加的功能,要么手动 diff 合并,要么买商业版。上线前把这条写进项目风险清单。
- 「内置在线升级」与上一条冲突:后台确实有升级入口,但开源版是否有可用的升级包,要以官方说明为准。别把它当成运维方案。
composer.json还是 ThinkPHP 骨架:name为topthink/think、license为 Apache-2.0、README 也是框架自带。跑composer update时容易把框架依赖整体升上去,插件兼容性没人保证。不要在生产环境直接 update。.example.env默认不安全:APP_DEBUG = true、Redis 密码为空、AUTH_KEY与PRODUCT_KEY是占位符。上线前必须改,APP_DEBUG一定要设 false,否则异常页会把路径与 SQL 打给访客。- 默认关闭队列:
[QUEUE] state = false,不打开就不会有队列消费,表现是「功能看着正常,实际不执行」。 - 前端依赖停留在 2023 年:uni-app 是
3.0.0-3080720230703001,管理端 Vite 4 + TS 4.9 + Vue 3.2。Node 20 及以上安装依赖大概率报错,建议固定 Node 16/18,并在 CI 里锁定版本。 - 三个前端工程、三份依赖:
admin、uni-app、web各自npm install,构建产物要分别对接,部署脚本要写清楚,否则很容易漏掉 PC 前台。 - 599 个 open issue 与 6 个 PR:issue 数量说明用的人多,PR 极少说明社区贡献通道不畅,遇到问题主要靠官方群和文档自助。
install.php的锁逻辑:入口index.php在缺少install.lock时会跳到/install.php;而当前代码里install.php对安装锁的校验被注释掉了。装完之后建议直接删掉或限制访问安装入口,避免被重装。- 重装会覆盖数据:向导重装会重建数据表,生产环境务必在装完后移除安装入口,并做好数据库备份。
- Workerman 需要放行函数:
proc_open、pcntl_*被宝塔等面板默认禁用,不解除就起不来。解除范围按需最小化。 - 云编译依赖云账号:
.env的[NIUCLOUD]节点为空时,一键云编译、云发布这类功能不可用;私有化部署别把交付流程押在这些按钮上。 - 演示站口令是公开的:
admin / 123456,别在里面填真实数据,也别沿用这个口令上线。 - V5 教程不适用 V6:网上大量二开文章基于 V5,目录结构、插件机制、前端技术栈都不一样,照抄会浪费大量时间。
- MIT 也要保留版权:可以闭源交付,但 LICENSE 与版权声明不能删;客户做合规审查时会看。
12. 参考链接
| 名称 | 地址 |
|---|---|
| 代码仓库(Gitee) | https://gitee.com/niushop-team/niushop |
| NIUSHOP 官网 | https://www.niushop.com |
| NIUCLOUD 官网 / 服务市场 | https://www.niucloud.com |
| 使用与二开手册 | https://doc.niucloud.com |
| API 接口手册 | https://api.niucloud.com/apidoc.html |
| 论坛 | https://niucloud.com/bbs |
| 后台演示 | https://v6.site.niucloud.com/admin |
| H5 演示 | https://v6.site.niucloud.com/wap/ |
| MIT 协议全文 | https://opensource.org/license/mit |
| ThinkPHP 8 文档 | https://doc.thinkphp.cn |
| uni-app 文档 | https://uniapp.dcloud.net.cn |
| Nuxt 3 文档 | https://nuxt.com |
本文基于 2026-11-10 的 master 分支源码(composer.json、.example.env、config/console.php、public/index.php、各前端 package.json、目录结构)、Gitee 项目页与官方 README 整理;Star 数、issue 数、标签版本均以该日为准。插件数量、开源版升级政策等以官方最新说明为准,落地前请在测试环境实测。