diff --git a/shopxo/app/plugins/vr_ticket/admin/Admin.php b/shopxo/app/plugins/vr_ticket/admin/Admin.php
index d77242c..a81e659 100644
--- a/shopxo/app/plugins/vr_ticket/admin/Admin.php
+++ b/shopxo/app/plugins/vr_ticket/admin/Admin.php
@@ -235,11 +235,39 @@ class Admin extends Common
return DataReturn('参数错误', -1);
}
+ $hardDelete = input('hard_delete', 0, 'intval');
$template = \think\facade\Db::name('vr_seat_templates')->where('id', $id)->find();
+
+ if (empty($template)) {
+ return DataReturn('记录不存在', -1);
+ }
+
+ if ($hardDelete) {
+ // 真删除:先检查是否有商品关联
+ $goods = \think\facade\Db::name('Goods')
+ ->where('vr_goods_config', 'like', '%"template_id":' . $id . '%')
+ ->where('is_delete', 0)
+ ->find();
+ if (!empty($goods)) {
+ return DataReturn('该模板有关联商品,请先解除商品绑定后再删除', -402);
+ }
+ \think\facade\Db::name('vr_seat_templates')->where('id', $id)->delete();
+ \app\plugins\vr_ticket\service\AuditService::log(
+ \app\plugins\vr_ticket\service\AuditService::ACTION_DELETE_TEMPLATE,
+ \app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
+ $id,
+ ['name' => $template['name']],
+ "模板: {$template['name']}"
+ );
+ return DataReturn('删除成功', 0);
+ }
+
+ // 软删除(禁用)
\think\facade\Db::name('vr_seat_templates')
->where('id', $id)
->update(['status' => 0, 'upd_time' => time()]);
+
\app\plugins\vr_ticket\service\AuditService::log(
\app\plugins\vr_ticket\service\AuditService::ACTION_DISABLE_TEMPLATE,
\app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
@@ -248,7 +276,35 @@ class Admin extends Common
$template ? "模板: {$template['name']}" : "ID:{$id}"
);
- return DataReturn('删除成功', 0);
+ return DataReturn('已禁用', 0);
+ }
+
+ public function SeatTemplateEnable()
+ {
+ if (!(request()->isAjax() && request()->isPost())) {
+ return DataReturn('非法请求', -1);
+ }
+
+ $id = input('id', 0, 'intval');
+ if ($id <= 0) {
+ return DataReturn('参数错误', -1);
+ }
+
+ \think\facade\Db::name('vr_seat_templates')
+ ->where('id', $id)
+ ->update(['status' => 1, 'upd_time' => time()]);
+
+ \think\facade\Db::name('vr_seat_templates')
+ ->where('id', $id)
+ ->update(['status' => 1, 'upd_time' => time()]);
+ \app\plugins\vr_ticket\service\AuditService::log(
+ \app\plugins\vr_ticket\service\AuditService::ACTION_ENABLE_TEMPLATE,
+ \app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
+ $id,
+ ['after_status' => 1],
+ "模板ID:{$id}"
+ );
+ return DataReturn('已启用', 0);
}
// ============================================================
@@ -811,11 +867,37 @@ class Admin extends Common
return DataReturn('参数错误', -1);
}
+ $hardDelete = input('hard_delete', 0, 'intval');
$template = \think\facade\Db::name('vr_seat_templates')->where('id', $id)->find();
+ if (empty($template)) {
+ return DataReturn('记录不存在', -1);
+ }
+
+ if ($hardDelete) {
+ // 真删除:先检查是否有商品关联
+ $goods = \think\facade\Db::name('Goods')
+ ->where('vr_goods_config', 'like', '%"template_id":' . $id . '%')
+ ->where('is_delete', 0)
+ ->find();
+ if (!empty($goods)) {
+ return DataReturn('该模板有关联商品,请先解除商品绑定后再删除', -402);
+ }
+ \think\facade\Db::name('vr_seat_templates')->where('id', $id)->delete();
+ \app\plugins\vr_ticket\service\AuditService::log(
+ \app\plugins\vr_ticket\service\AuditService::ACTION_DELETE_TEMPLATE,
+ \app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
+ $id,
+ ['name' => $template['name']],
+ "场馆: {$template['name']}"
+ );
+ return DataReturn('删除成功', 0);
+ }
+
+
+ // 软删除(禁用)
\think\facade\Db::name('vr_seat_templates')
->where('id', $id)
->update(['status' => 0, 'upd_time' => time()]);
-
\app\plugins\vr_ticket\service\AuditService::log(
\app\plugins\vr_ticket\service\AuditService::ACTION_DISABLE_TEMPLATE,
\app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
@@ -823,8 +905,31 @@ class Admin extends Common
['before_status' => $template['status'] ?? 1],
$template ? "场馆: {$template['name']}" : "ID:{$id}"
);
+ return DataReturn('已禁用', 0);
+ }
- return DataReturn('删除成功', 0);
+ public function VenueEnable()
+ {
+ if (!(request()->isAjax() && request()->isPost())) {
+ return DataReturn('非法请求', -1);
+ }
+
+ $id = input('id', 0, 'intval');
+ if ($id <= 0) {
+ return DataReturn('参数错误', -1);
+ }
+
+ \think\facade\Db::name('vr_seat_templates')
+ ->where('id', $id)
+ ->update(['status' => 1, 'upd_time' => time()]);
+ \app\plugins\vr_ticket\service\AuditService::log(
+ \app\plugins\vr_ticket\service\AuditService::ACTION_ENABLE_TEMPLATE,
+ \app\plugins\vr_ticket\service\AuditService::TARGET_TEMPLATE,
+ $id,
+ ['after_status' => 1],
+ "场馆ID:{$id}"
+ );
+ return DataReturn('已启用', 0);
}
// ============================================================
diff --git a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html
new file mode 100644
index 0000000..f1a0d8c
--- /dev/null
+++ b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html
@@ -0,0 +1,193 @@
+{{:ModuleInclude('public/header')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
⚠️ 删除记录不会导致已上架商品内容变动。
+
若需要同步场馆信息到已发布商品,请编辑对应商品并保存。
+
+
+
+
+
+
+
+ {{if !empty($list)}}
+ {{$page|raw}}
+ {{/if}}
+
+
+
+
+
+{{:ModuleInclude('public/footer')}}
diff --git a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html
new file mode 100644
index 0000000..a9899ca
--- /dev/null
+++ b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html
@@ -0,0 +1,73 @@
+{{:ModuleInclude('public/header')}}
+
+
+
+
+
+
+ {{if !empty($info)}}
+ 编辑座位模板
+ {{else}}
+ 添加座位模板
+ {{/if}}
+
+
+
+
+
+
+
+{{:ModuleInclude('public/footer')}}
diff --git a/shopxo/app/plugins/vr_ticket/view/venue/list.html b/shopxo/app/plugins/vr_ticket/view/venue/list.html
index d97ac66..8e89414 100644
--- a/shopxo/app/plugins/vr_ticket/view/venue/list.html
+++ b/shopxo/app/plugins/vr_ticket/view/venue/list.html
@@ -114,8 +114,18 @@
编辑
-
-
+ {{if $v.status eq 1}}
+
+
+ {{else}}
+
+ {{/if}}
{{/foreach}}
@@ -127,7 +137,61 @@
-
+
+
+
+
+
+
⚠️ 删除记录不会导致已上架商品内容变动。
+
若需要同步场馆信息到已发布商品,请编辑对应商品并保存。
+
+
+
+
+
+
{{if !empty($list)}}
{{$page|raw}}