2026-04-14 04:01:37 +00:00
|
|
|
|
# VR票务插件 for ShopXO
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:11:47 +00:00
|
|
|
|
> 基于 ShopXO 生态的 VR 演唱会票务解决方案(Plan B)
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## ⚡ 核心原则
|
|
|
|
|
|
|
|
|
|
|
|
**怎么快怎么来。怎么方便怎么来。尽可能少改动,少引入复杂度。但完全允许修改 ShopXO 核心代码。**
|
|
|
|
|
|
|
|
|
|
|
|
- 我们是自己部署 ShopXO,核心代码完全可以改
|
|
|
|
|
|
- 改动的优先级:改核心 < 用 Hook < 引入新复杂度
|
|
|
|
|
|
- 改核心文件时,写清楚「升级 ShopXO 后需重新应用的位置」
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-16 16:43:34 +00:00
|
|
|
|
## ⚠️ 踩坑经验(接手本插件前必读)
|
|
|
|
|
|
|
|
|
|
|
|
> 本插件经历了一整夜重构调试,发现了大量反直觉的坑。**任何 agent 或开发者接手前,请先阅读这份经验文档,避免重蹈覆辙。**
|
|
|
|
|
|
|
|
|
|
|
|
📋 **[docs/EXPERIENCES.md](docs/EXPERIENCES.md)** — ShopXO 插件踩坑经验全记录(16条核心教训)
|
|
|
|
|
|
|
|
|
|
|
|
> **最关键的3条**:
|
|
|
|
|
|
> 1. `{{:ModuleInclude('public/footer')}}` 缺失 → 页面无限加载(不是后端死循环)
|
|
|
|
|
|
> 2. Vue 3 `[[ ]]` 插值禁止用于 `<textarea>`(导致浏览器卡死)
|
|
|
|
|
|
> 3. 字段名不能猜,必须查源码(已有人踩过)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
## 核心能力
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
| 能力 | 实现方式 |
|
|
|
|
|
|
|---|---|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
| 场次管理 | ShopXO spec = 场次(无需独立表) |
|
|
|
|
|
|
| 商品详情页定制 | **改 `Goods.php` 1 行** + 自定义模板 |
|
2026-04-14 04:01:37 +00:00
|
|
|
|
| 选座 UI | 自定义 Vue 组件,Fork shopxo-uniapp |
|
2026-04-15 00:03:37 +00:00
|
|
|
|
| 观演人收集 | 插件钩子,下单时写入 `vr_tickets` 表 |
|
|
|
|
|
|
| QR 电子票 | 支付成功后钩子生成,AES 加密 |
|
2026-04-14 04:01:37 +00:00
|
|
|
|
| 微信小程序 | shopxo-uniapp 已支持,HBuilderX 一键发行 |
|
|
|
|
|
|
| B 端核销 | Fork `realstore/check/check.vue`,完整参考 |
|
|
|
|
|
|
| 会员/积分/优惠券 | 全部复用 ShopXO 内置能力 |
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-13 07:52:38 +00:00
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-14 04:01:37 +00:00
|
|
|
|
# 1. 克隆本仓库
|
2026-04-13 07:52:38 +00:00
|
|
|
|
git clone http://xmhome.ow-my.com:3000/sileya-ai/vr-shopxo-plugin.git
|
|
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
# 2. 上传插件到 ShopXO
|
2026-04-15 00:03:37 +00:00
|
|
|
|
cp -r vr_ticket /path/to/shopxo/app/plugins/
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
# 3. 数据库迁移(Phase 1)
|
|
|
|
|
|
mysql -u root -p < database/migrations/001_vr_seat_templates.sql
|
|
|
|
|
|
mysql -u root -p < database/migrations/002_vr_tickets.sql
|
|
|
|
|
|
mysql -u root -p < database/migrations/003_vr_verifiers.sql
|
|
|
|
|
|
mysql -u root -p < database/migrations/004_vr_verifications.sql
|
2026-04-14 04:01:37 +00:00
|
|
|
|
|
|
|
|
|
|
# 4. 后台安装
|
2026-04-13 07:52:38 +00:00
|
|
|
|
# 管理后台 → 应用中心 → 插件管理 → 安装 VR票务插件
|
|
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
# 5. 修改 Goods.php(Phase 2)
|
|
|
|
|
|
# 在 ShopXO 源码 app/index/controller/Goods.php 的 Index() 方法中:
|
|
|
|
|
|
# 在 return MyView(); 之前加入 ticket 类型判断(见 docs/GOODS_PHP_MODIFICATION.md)
|
|
|
|
|
|
|
|
|
|
|
|
# 6. shopxo-uniapp 改造
|
2026-04-14 04:01:37 +00:00
|
|
|
|
# HBuilderX 导入 shopxo-uniapp
|
|
|
|
|
|
# 添加 pages/ticket-buy/ 和 pages/ticket-verify/
|
|
|
|
|
|
# 配置 manifest.json 的 AppID
|
|
|
|
|
|
# 发行 → 微信小程序
|
2026-04-13 07:52:38 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-04-14 04:24:33 +00:00
|
|
|
|
## 官方文档(开发前必查)
|
|
|
|
|
|
|
|
|
|
|
|
| 资源 | URL |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| 官方文档首页 | https://doc.shopxo.net/ |
|
|
|
|
|
|
| **插件开发文档** | https://doc.shopxo.net/article/3.html |
|
|
|
|
|
|
| **开发文档索引** | https://doc.shopxo.net/article/4.html |
|
|
|
|
|
|
| uniapp 打包教程 | https://doc.shopxo.net/article/1/293727233598554112.html |
|
|
|
|
|
|
| shopxo-uniapp Gitee | https://gitee.com/zongzhige/shopxo-uniapp |
|
|
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
## 技术调研文档
|
|
|
|
|
|
|
2026-04-16 16:43:34 +00:00
|
|
|
|
- [docs/EXPERIENCES.md](docs/EXPERIENCES.md) — ⚠️ **踩坑经验(必读)** — 16条核心教训
|
2026-04-15 00:03:37 +00:00
|
|
|
|
- [docs/01_SHOPXO_TECHNICAL_RESEARCH.md](docs/01_SHOPXO_TECHNICAL_RESEARCH.md) — ShopXO 技术能力调研
|
|
|
|
|
|
- [docs/02_FRONTEND_CUSTOMIZATION.md](docs/02_FRONTEND_CUSTOMIZATION.md) — uni-app 前端定制
|
|
|
|
|
|
- [docs/03_VERIFICATION_SYSTEM.md](docs/03_VERIFICATION_SYSTEM.md) — 核销系统设计
|
|
|
|
|
|
- [docs/04_IMPLEMENTATION_ROADMAP.md](docs/04_IMPLEMENTATION_ROADMAP.md) — 实施路线图
|
|
|
|
|
|
- [docs/07_SHOPXO_PLUGIN_MECHANISM.md](docs/07_SHOPXO_PLUGIN_MECHANISM.md) — 插件开发机制
|
|
|
|
|
|
- [docs/08_SHOPXO_REQUIREMENTS_MAPPING.md](docs/08_SHOPXO_REQUIREMENTS_MAPPING.md) — 票务需求 → ShopXO 机制映射
|
|
|
|
|
|
- [docs/09_SHOPXO_HOOKS_REFERENCE.md](docs/09_SHOPXO_HOOKS_REFERENCE.md) — ShopXO 全部钩子清单(从源码提取)
|
2026-04-14 04:01:37 +00:00
|
|
|
|
|
2026-04-15 00:03:37 +00:00
|
|
|
|
## 关键发现(2026-04-14/15)
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
- ✅ ShopXO 内置 **CustomView Ace 编辑器**(全代码自定义页面)
|
2026-04-15 00:03:37 +00:00
|
|
|
|
- ✅ 商品详情页 **30+ 插件钩子**
|
2026-04-14 04:01:37 +00:00
|
|
|
|
- ✅ shopxo-uniapp **已支持微信小程序**,条件编译已配置
|
|
|
|
|
|
- ✅ ShopXO 内置 **phpqrcode** QR 码生成库
|
|
|
|
|
|
- ✅ `realstore/check/check.vue` 是 **B 端核销页最佳参考**
|
2026-04-15 00:03:37 +00:00
|
|
|
|
- ✅ `site_type=3`(虚拟商品)可绕过地址选择弹出
|
|
|
|
|
|
- ✅ ShopXO 完全支持修改核心代码(自己部署原则)
|
|
|
|
|
|
- ✅ **推荐:改 Goods.php 1 行**,比 Hook 方案更干净(符合核心原则)
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
## 项目状态
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-16 16:43:34 +00:00
|
|
|
|
✅ **Phase 1 完成**:商品详情页座位图 + 观演人表单
|
|
|
|
|
|
🔜 **Phase 2 进行中**:后台管理(场馆/座位模板/电子票/核销员)
|
|
|
|
|
|
- ✅ 场馆 CRUD + Vue3 编辑器
|
|
|
|
|
|
- 🔜 后台管理添加商品 Hook(快速选择场馆信息)
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
## 仓库地址
|
2026-04-13 07:52:38 +00:00
|
|
|
|
|
2026-04-14 04:01:37 +00:00
|
|
|
|
`http://xmhome.ow-my.com:3000/sileya-ai/vr-shopxo-plugin`
|