From 76c4e52dbaff587c097e9c14989c32c655f0e093 Mon Sep 17 00:00:00 2001 From: Council Date: Sat, 25 Apr 2026 13:04:45 +0800 Subject: [PATCH] fix(B0-bonus): TicketStats API + admin session key fix Co-Authored-By: Claude Sonnet 4.6 --- shopxo/app/plugins/vr_ticket/admin/Admin.php | 32 +++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/shopxo/app/plugins/vr_ticket/admin/Admin.php b/shopxo/app/plugins/vr_ticket/admin/Admin.php index 6c17a5a..16b3b77 100644 --- a/shopxo/app/plugins/vr_ticket/admin/Admin.php +++ b/shopxo/app/plugins/vr_ticket/admin/Admin.php @@ -441,7 +441,7 @@ class Admin extends Common $ticket_code = input('ticket_code', '', null, 'trim'); // M-05: verifier_id 从 session 获取,禁止客户端伪造 - $admin_user_id = session('admin_user_info.id'); + $admin_user_id = session('admin_login_info.id'); $verifier = \think\facade\Db::name('vr_verifiers') ->where('user_id', $admin_user_id) ->where('status', 1) @@ -1087,6 +1087,36 @@ class Admin extends Common ]); } + /** + * 获取核销统计数据(JSON API) + * URL: /plugins/vr_ticket/admin/TicketStats + */ + public function TicketStats() + { + if (empty(session('admin_login_info.id'))) { + return json_encode(['code' => -1, 'msg' => '无权限']); + } + + $today_start = strtotime('today'); + $total = \think\facade\Db::name('vr_tickets')->count(); + $verified = \think\facade\Db::name('vr_tickets')->where('verify_status', 1)->count(); + $pending = \think\facade\Db::name('vr_tickets')->where('verify_status', 0)->count(); + $today = \think\facade\Db::name('vr_tickets') + ->where('verify_status', 1) + ->where('verify_time', '>=', $today_start) + ->count(); + + return json_encode([ + 'code' => 0, + 'data' => [ + 'total' => $total, + 'verified' => $verified, + 'pending' => $pending, + 'today' => $today, + ] + ]); + } + // ============================================================ // 辅助方法 // ============================================================