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 |