fuc/src/Controllers/Admin/DetectLogController.php
2025-02-23 13:30:57 +08:00

87 lines
2.5 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace App\Controllers\Admin;
use App\Controllers\BaseController;
use App\Models\DetectLog;
use App\Utils\Tools;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
final class DetectLogController extends BaseController
{
private static array $details =
[
'field' => [
'id' => '事件ID',
'user_id' => '用户ID',
'node_id' => '节点ID',
'node_name' => '节点名',
'list_id' => '规则ID',
'rule_name' => '规则名',
'datetime' => '时间',
],
];
/**
* @throws Exception
*/
public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
{
return $response->write(
$this->view()
->assign('details', self::$details)
->fetch('admin/log/detect.tpl')
);
}
public function ajax(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$length = $request->getParam('length');
$page = $request->getParam('start') / $length + 1;
$draw = $request->getParam('draw');
$detect_log = DetectLog::query();
$search = $request->getParam('search')['value'];
if ($search !== '') {
$detect_log->where('user_id', '=', $search)
->orWhere('list_id', '=', $search)
->orWhere('node_id', '=', $search);
}
$order = $request->getParam('order')[0]['dir'];
if ($request->getParam('order')[0]['column'] !== '0') {
$order_field = self::$details['field'][$request->getParam('order')[0]['column']];
$detect_log->orderBy($order_field, $order)->orderBy('id', 'desc');
} else {
$detect_log->orderBy('id', $order);
}
$filtered = $detect_log->count();
$total = (new DetectLog())->count();
$logs = $detect_log->paginate($length, '*', '', $page);
foreach ($logs as $log) {
$log->node_name = $log->nodeName();
$log->rule_name = $log->ruleName();
$log->datetime = Tools::toDateTime((int) $log->datetime);
}
return $response->withJson([
'draw' => $draw,
'recordsTotal' => $total,
'recordsFiltered' => $filtered,
'logs' => $logs,
]);
}
}