Commit Graph

7 Commits (d704a482c7ed92f8d339df801c8a856ec8cd46a1)

Author SHA1 Message Date
Council e053e03c7c feat(ticket): 票务管理后台增强 - 订单信息展示、城市筛选修复、观影人管理
- Admin.php: 票详情页新增订单信息、用户信息展示
- Hook.php: 修复城市筛选只对票务商品生效
- Ticket.php: 核销记录新增短码、观演人手机号、订单号、购买者信息
- AdminGoodsSaveHandle.php: 新增商品保存后置处理 - SKU重建、价格刷新、缓存清理
- AdminGoodsSave.php: 观影人配置UI优化
- detail.html: 票详情页重构 - 新增订单信息展示面板
- list.html: 票列表新增订单号、手机号列,优化列宽
2026-06-25 17:16:58 +08:00
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 39230958a0 fix(ticket): 修复票务勾选时下拉框不刷新的 JS 报错 2026-06-12 13:51:24 +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 da001797ab fix(vr_ticket): template_snapshot 重建逻辑重写 + 幽灵配置过滤
=== 问题 1: template_snapshot.rooms 为空 ===

根因:前端 outputBase64 根本不包含 template_snapshot,导致:
- template_snapshot 永远是空的
- 无论 v1/v3 格式,rooms 信息都丢失

修复(AdminGoodsSaveHandle.php):
- 条件从「template_snapshot 为空才读 DB」改为「selected_rooms 有值就永远从 DB 重建」
- 读 DB 时同时做 v1→v3 迁移(sections+map → rooms 数组)
- ID 匹配支持前端标准化的 "room_0" 格式和 DB 原始 "0" 格式双向兼容
- PHP 7.x 兼容(strpos 而非 str_starts_with)

=== 问题 2: 幽灵配置(软删除场馆仍出现在表单)===

根因:AdminGoodsSave.php 查询模板时用 where('status', 1),软删除模板不加载,
但 configs.value 里还保留着旧配置 → 场馆 checkbox 选中但无法操作。

修复(AdminGoodsSave.php):
- 加载时用 Set 过滤掉 status=0 模板的配置
- 幽灵配置在编辑表单加载时直接排除,不出现在 UI
2026-04-20 12:16:31 +08:00
Council 9603ab42f6 refactor(vr_ticket): Admin.php root pattern → Hook-based goods save
- DELETE old Admin.php root controller (Vrticket.php)
- DELETE old Layui view files (seat_template/ticket/venue/verification/verifier)
- ADD hook/AdminGoodsSave.php: plugins_view_admin_goods_save hook (Vue3 form injection)
- ADD hook/AdminGoodsSaveHandle.php: handle save flow (save_handle + save_thing_end)
- UPDATE config.json: register 3 new hooks
- UPDATE SeatSkuService.php: refactored BatchGenerate
- ADD data.db: SQLite venue data
- UPDATE venue/save.html: venue editing form
- docs: add GOODS_ADD_HOOK_RESEARCH.md + update plan.md
2026-04-19 05:46:37 +08:00