diff --git a/app/Http/Controllers/Admin/CurrencyLogController.php b/app/Http/Controllers/Admin/CurrencyLogController.php new file mode 100644 index 0000000..68f3422 --- /dev/null +++ b/app/Http/Controllers/Admin/CurrencyLogController.php @@ -0,0 +1,70 @@ +with('user'); + + // 查询条件过滤 + if ($request->filled('username')) { + $query->where('username', 'like', '%'.$request->input('username').'%'); + } + + if ($request->filled('currency')) { + $query->where('currency', $request->input('currency')); + } + + if ($request->filled('source')) { + $query->where('source', $request->input('source')); + } + + if ($request->filled('remark')) { + $query->where('remark', 'like', '%'.$request->input('remark').'%'); + } + + if ($request->filled('direction')) { + if ($request->input('direction') === 'in') { + $query->where('amount', '>', 0); + } elseif ($request->input('direction') === 'out') { + $query->where('amount', '<', 0); + } + } + + if ($request->filled('date_start')) { + $query->whereDate('created_at', '>=', $request->input('date_start')); + } + + if ($request->filled('date_end')) { + $query->whereDate('created_at', '<=', $request->input('date_end')); + } + + // 默认按时间倒序 + $logs = $query->latest('id')->paginate(50)->withQueryString(); + + $allSources = CurrencySource::cases(); + + return view('admin.currency-logs.index', compact('logs', 'allSources')); + } +} diff --git a/resources/views/admin/currency-logs/index.blade.php b/resources/views/admin/currency-logs/index.blade.php new file mode 100644 index 0000000..a3f2030 --- /dev/null +++ b/resources/views/admin/currency-logs/index.blade.php @@ -0,0 +1,181 @@ +@extends('admin.layouts.app') + +@section('title', '金币/积分流水查询') + +@section('content') + +
+
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + 重置 + +
+
+
+ + +
+
+ + + + + + + + + + + + + + + @forelse ($logs as $log) + + + + + + + + + + + @empty + + + + @endforelse + +
记录ID用户类型变动数额变后余额来源备注信息发生时间
+ #{{ $log->id }} + +
+ {{ $log->username }} + ID: {{ $log->user_id }} +
+
+ @if($log->currency === 'gold') + + 💰 金币 + + @elseif($log->currency === 'exp') + + ⭐ 经验 + + @elseif($log->currency === 'charm') + + 💖 魅力 + + @else + {{ $log->currency }} + @endif + + @if ($log->amount > 0) + +{{ $log->amount }} + @elseif ($log->amount === 0) + 0 + @else + {{ $log->amount }} + @endif + + {{ $log->balance_after }} + + @php + $sourceLabel = \App\Enums\CurrencySource::tryFrom($log->source)?->label() ?? $log->source; + @endphp + + {{ $sourceLabel }} + + + {{ $log->remark }} + @if($log->room_id) +
房间ID: {{ $log->room_id }}
+ @endif +
+ {{ $log->created_at->format('Y-m-d H:i:s') }} +
+ 📭 暂无相关流水记录 +
+
+ @if ($logs->hasPages()) +
+ {{ $logs->links() }} +
+ @endif +
+@endsection diff --git a/resources/views/admin/layouts/app.blade.php b/resources/views/admin/layouts/app.blade.php index c81e307..8dda275 100644 --- a/resources/views/admin/layouts/app.blade.php +++ b/resources/views/admin/layouts/app.blade.php @@ -54,6 +54,10 @@ class="block px-4 py-3 rounded-md transition {{ request()->routeIs('admin.system.*') ? 'bg-indigo-600 font-bold' : 'hover:bg-white/10' }}"> {!! '⚙️ 聊天室参数' !!} + + {!! '💴 全局金币流水' !!} + {!! '🏠 房间管理' !!} diff --git a/routes/web.php b/routes/web.php index b97b216..b0c13ee 100644 --- a/routes/web.php +++ b/routes/web.php @@ -407,6 +407,9 @@ Route::middleware(['chat.auth', 'chat.has_position'])->prefix('admin')->name('ad Route::put('/vip/{vip}', [\App\Http\Controllers\Admin\VipController::class, 'update'])->name('vip.update'); Route::delete('/vip/{vip}', [\App\Http\Controllers\Admin\VipController::class, 'destroy'])->name('vip.destroy'); + // 全局用户金币/积分流水 + Route::get('/currency-logs', [\App\Http\Controllers\Admin\CurrencyLogController::class, 'index'])->name('currency-logs.index'); + // 🛒 商店商品管理(查看/编辑所有 superlevel 可用,新增/删除仅 id=1) Route::get('/shop', [\App\Http\Controllers\Admin\ShopItemController::class, 'index'])->name('shop.index'); Route::post('/shop', [\App\Http\Controllers\Admin\ShopItemController::class, 'store'])->name('shop.store');