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)}} + {{foreach $list as $v}} + + + + + + + + + {{/foreach}} + {{else /}} + + {{/if}} + +
ID模板信息绑定的分类座位数状态操作
+ {{$v.id}} + +
{{$v.name}}
+
+ 座位数:{{$v.seat_count}} +
+
+ {{if !empty($v.category_name)}} + {{$v.category_name}} + {{else /}} + - + {{/if}} + + {{$v.seat_count}} + + {{if $v.status eq 1}} + 启用 + {{else /}} + 禁用 + {{/if}} + + + 编辑 + + {{if $v.status eq 1}} + + + {{else}} + + {{/if}} +
暂无模板数据
+
+
+ + +
+
+
+ + 确定删除此模板? + × +
+
+

⚠️ 删除记录不会导致已上架商品内容变动。

+

若需要同步场馆信息到已发布商品,请编辑对应商品并保存。

+
+ +
+
+ + +
+ {{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}} +
+
+
+ {{if !empty($info)}} + + {{/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}}