1
0

DetectBanLogController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controllers\Admin;
  4. use App\Controllers\BaseController;
  5. use App\Models\DetectBanLog;
  6. use App\Utils\ResponseHelper;
  7. use Psr\Http\Message\ResponseInterface;
  8. use Slim\Http\ServerRequest;
  9. use Slim\Http\Response;
  10. final class DetectBanLogController extends BaseController
  11. {
  12. /**
  13. * @param array $args
  14. */
  15. public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
  16. {
  17. return $response->write(
  18. $this->view()
  19. ->assign('table_config', ResponseHelper::buildTableConfig([
  20. 'id' => 'ID',
  21. 'user_id' => '用户ID',
  22. 'user_name' => '用户名',
  23. 'email' => '用户邮箱',
  24. 'detect_number' => '违规次数',
  25. 'ban_time' => '封禁时长(分钟)',
  26. 'start_time' => '统计开始时间',
  27. 'end_time' => '统计结束以及封禁开始时间',
  28. 'ban_end_time' => '封禁结束时间',
  29. 'all_detect_number' => '累计违规次数',
  30. ], 'ban/ajax'))
  31. ->fetch('admin/detect/ban.tpl')
  32. );
  33. }
  34. /**
  35. * @param array $args
  36. */
  37. public function ajaxLog(ServerRequest $request, Response $response, array $args): ResponseInterface
  38. {
  39. $query = DetectBanLog::getTableDataFromAdmin(
  40. $request,
  41. static function (&$order_field): void {
  42. if (\in_array($order_field, ['ban_end_time'])) {
  43. $order_field = 'end_time';
  44. }
  45. }
  46. );
  47. $data = [];
  48. foreach ($query['datas'] as $value) {
  49. /** @var DetectBanLog $value */
  50. if ($value->user() === null) {
  51. DetectBanLog::userIsNull($value);
  52. continue;
  53. }
  54. $tempdata = [];
  55. $tempdata['id'] = $value->id;
  56. $tempdata['user_id'] = $value->user_id;
  57. $tempdata['user_name'] = $value->user_name;
  58. $tempdata['email'] = $value->email;
  59. $tempdata['detect_number'] = $value->detect_number;
  60. $tempdata['ban_time'] = $value->ban_time;
  61. $tempdata['start_time'] = $value->startTime();
  62. $tempdata['end_time'] = $value->endTime();
  63. $tempdata['ban_end_time'] = $value->banEndTime();
  64. $tempdata['all_detect_number'] = $value->all_detect_number;
  65. $data[] = $tempdata;
  66. }
  67. return $response->withJson([
  68. 'draw' => $request->getParam('draw'),
  69. 'recordsTotal' => DetectBanLog::count(),
  70. 'recordsFiltered' => $query['count'],
  71. 'data' => $data,
  72. ]);
  73. }
  74. }