vr-shopxo-plugin/shopxo/app/plugins/vr_ticket/hook
Council 73e21da656 feat(vr_ticket): 票务商品 site_type 锁定为虚拟
票务商品的结算/拆单/加购流程强依赖虚拟商品类型(site_type=3)。
当商品设为票务(item_type=ticket)时,三层防御锁定 site_type:

1. UI 层(新增 AdminGoodsSaveForbid 钩子)
   监听 plugins_service_goods_base_forbid_operate_data,
   把 site_type 加入禁用列表,触发 saveinfo.html 第 228 行 disabled 渲染。

2. 服务端层(AdminGoodsSaveHandle)
   plugins_service_goods_save_handle 票务分支新增
   $params['data']['site_type'] = 3,强制覆盖。

3. 前端 JS 层(AdminGoodsSave)
   新增 syncSiteTypeLock(),watch(isTicket) 中调用,
   isTicket=true 强制 value=3 + disabled;
   isTicket=false 解除(仅移除插件添加的标记)。

仅在票务关闭(item_type=normal)后才允许修改 site_type。

风险等级:LOW(gitnexus detect_changes: 0 affected processes)
2026-06-27 23:28:59 +08:00
..
AdminGoodsIndex.php fix(ticket): 修复票务勾选时下拉框不刷新的 JS 报错 2026-06-12 13:51:24 +08:00
AdminGoodsSave.php feat(vr_ticket): 票务商品 site_type 锁定为虚拟 2026-06-27 23:28:59 +08:00
AdminGoodsSaveForbid.php feat(vr_ticket): 票务商品 site_type 锁定为虚拟 2026-06-27 23:28:59 +08:00
AdminGoodsSaveHandle.php feat(vr_ticket): 票务商品 site_type 锁定为虚拟 2026-06-27 23:28:59 +08:00
DiyHomeCityRouter.php feat(city-filter): 城市坐标筛选核心 - GeoCityService + 商品列表/搜索钩子 2026-06-11 22:28:47 +08:00
ViewGoodsCss.php