Commit Graph

9 Commits (fix/ticket-select-refresh)

Author SHA1 Message Date
Council 2ceb7824aa feat(ticket): 新增观影人信息管理功能
- AdminGoodsSave.php: 添加观影人配置UI(版本 v1.0.1)
  - 支持勾选是否需要观影人信息
  - 支持配置必填字段:手机号(默认)、姓名、身份证号
  - Vue 初始化和还原时自动补充 viewer_config 默认值

- Hook.php: BuyCheck 中新增观影人信息校验
  - 校验 viewer_data 必填性
  - 手机号格式校验(/^1[3-9]\d{9}$/)
  - 姓名和身份证号必填校验
  - 阶段1:支持单个观影人(所有座位共用)

数据结构:viewer_config 嵌入到每个场馆配置中
兼容性:老数据自动补充默认值(不要求观影人信息)
2026-06-24 09:06:44 +08:00
Council e282a5af2b feat(city-filter): 城市坐标筛选核心 - GeoCityService + 商品列表/搜索钩子
- 新增 GeoCityService::FindNearestCityId():根据用户坐标反推最近城市ID(使用GeoTransUtil距离计算)
- 新增 Hook::OnGoodsListBegin():商品列表查询钩子,注入 produce_region 城市筛选
- 新增 Hook::OnSearchListBegin():搜索列表查询钩子,注入 produce_region 城市筛选
- 新增 Hook::OnSearchListResult():搜索结果后处理钩子,票务商品按 coding 合并(优先选最近演出日期)
- SearchService.php:增加 plugins_service_search_goods_list_result 钩子触发点
- event.php:注册新的3个钩子(goods_list_begin / search_list_begin / search_list_result)
- config.json:同步注册新钩子
- 新增 DiyHomeCityRouter:根据用户坐标路由到城市专属DIY首页模板
2026-06-11 22:28:47 +08:00
Council c5eb2e9996 feat: VR ticket plugin full update - Tree API, City selector, seatmap service, wallet plugin
Core changes:
- Add Tree API design docs + implementation plan (14/15/16_*.md)
- Add CityService + City API (city selector component)
- Enhance SeatMapService + SeatSkuService (seatmap.test.json)
- Add Hook.php event injection, AdminGoodsSave hooks
- Update ticket_detail.html, venue/save.html views
- Add CORS middleware, Weixin payment fix

Wallet plugin (new submodule):
- Full wallet plugin: admin (Cash/Recharge/Transfer/Config)
- API layer: User/Walletlog/Recharge/Cash/Transfer endpoints
- Hook integration

Docs:
- VR_TICKET_TREE_API.md, VR_TICKET_WALLET_VERIFY_API.md
- Council evaluation report, test files

Tools:
- strip_batch.py, strip_page.py (cleanup utilities)

(153 files, +27784/-686 lines)
2026-06-03 13:34:38 +08:00
Council 29f4c61110 feat(Task1): seat_number display + CODE128 barcode rendering
- WalletService: add seat_number field (parseSeatNumber helper)
- ticket_card.html: seat_info → seat_number in all 3 locations
  (card template + viewTicket modal + showTicketDetail modal)
- ticket_card.html: add barcode canvas in both modals
- ticket_card.html: JsBarcode() calls after renderQrCode (3 locations)
- ticket_wallet.html: load JsBarcode.all.min.js before ticket_card.js
2026-04-24 23:58:09 +08:00
Council d05a9aef2d feat: restore vr_ticket event hooks (手误移除修复)
commit ac676d00b refactor时错误移除了所有event.php vr_ticket钩子。
这7个钩子与QR payload实时化无关,是vr_ticket正常运作所必需的:

- plugins_service_admin_menu_data         管理员侧边栏菜单
- plugins_service_order_pay_success_handle_end  订单支付成功处理
- plugins_service_order_delete_success     订单删除处理
- plugins_view_admin_goods_save          商品保存钩子(item_type解析)
- plugins_service_goods_save_handle      商品保存事务钩子
- plugins_service_goods_save_thing_end   同上
- plugins_css_data                      CSS注入
2026-04-24 00:11:03 +08:00
Council ac676d00be refactor: 移除 qr_issued_at 字段
QR payload 改为实时生成,不存储发放时间。
前端 localStorage 自行管理缓存。
2026-04-23 14:37:10 +08:00
Council c581395a9c feat(Phase2): Issue 1 修复购买提交流程
- Goods.php: 注入 seatSpecMap 到票务模板
- ticket_detail.html: submit() 改 POST + 4维spec数组

关键修复:
- submit() 使用隐藏表单 POST 到 Buy 链路(不再用 location.href)
- spec 从 seatSpecMap[seatKey].spec 读取完整4维数组
- extension_data 嵌套在 order_base 内
- 直接 JSON.stringify,不需要 base64
2026-04-21 11:41:59 +08:00
Council dc63cff77c chore: clean up my_test_plugin residual hooks from event.php
删除 event.php 中的 my_test_plugin 残留引用(插件已删除)。
保留 vr_ticket 所有钩子映射不变。
2026-04-19 15:56:48 +08:00
Council bbb2e65330 fix: 修复 vr_ticket 插件文件被 gitignore 忽略的问题
- 强制追踪 vr_ticket/Event.php(被 shopxo/app/.gitignore 的 event.php 规则遮蔽)
- 强制追踪 vr_ticket/database/migrations/*.sql(被全局 gitignore 的 database 规则遮蔽)
- 删除 shopxo/app/.gitignore(规则过宽,影响插件文件)
- 追踪 shopxo/app/event.php(ShopXO 源码,被上条 .gitignore 遮蔽)
- 更新项目 .gitignore(vendor/upload/adminufgeyw/强制追踪database)
2026-04-19 15:54:03 +08:00