SubLogController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controllers\Admin\UserLog;
  4. use App\Controllers\BaseController;
  5. use App\Models\User;
  6. use App\Models\UserSubscribeLog;
  7. use App\Utils\QQWry;
  8. use App\Utils\ResponseHelper;
  9. use Psr\Http\Message\ResponseInterface;
  10. use Slim\Http\Request;
  11. use Slim\Http\Response;
  12. final class SubLogController extends BaseController
  13. {
  14. /**
  15. * @param array $args
  16. */
  17. public function index(Request $request, Response $response, array $args): ResponseInterface
  18. {
  19. $id = $args['id'];
  20. $user = User::find($id);
  21. return $response->write(
  22. $this->view()
  23. ->assign('table_config', ResponseHelper::buildTableConfig([
  24. 'id' => 'ID',
  25. 'subscribe_type' => '类型',
  26. 'request_ip' => 'IP',
  27. 'location' => '归属地',
  28. 'request_time' => '时间',
  29. 'request_user_agent' => 'User-Agent',
  30. ], 'sublog/ajax'))
  31. ->assign('user', $user)
  32. ->display('admin/user/sublog.tpl')
  33. );
  34. }
  35. /**
  36. * @param array $args
  37. */
  38. public function ajax(Request $request, Response $response, array $args): ResponseInterface
  39. {
  40. $user = User::find($args['id']);
  41. $query = UserSubscribeLog::getTableDataFromAdmin(
  42. $request,
  43. static function (&$order_field): void {
  44. if (\in_array($order_field, ['location'])) {
  45. $order_field = 'request_ip';
  46. }
  47. },
  48. static function ($query) use ($user): void {
  49. $query->where('user_id', $user->id);
  50. }
  51. );
  52. $data = [];
  53. $QQWry = new QQWry();
  54. foreach ($query['datas'] as $value) {
  55. /** @var UserSubscribeLog $value */
  56. $tempdata = [];
  57. $tempdata['id'] = $value->id;
  58. $tempdata['subscribe_type'] = $value->subscribe_type;
  59. $tempdata['request_ip'] = $value->request_ip;
  60. $tempdata['location'] = $value->location($QQWry);
  61. $tempdata['request_time'] = $value->request_time;
  62. $tempdata['request_user_agent'] = $value->request_user_agent;
  63. $data[] = $tempdata;
  64. }
  65. return $response->withJson([
  66. 'draw' => $request->getParam('draw'),
  67. 'recordsTotal' => UserSubscribeLog::where('user_id', $user->id)->count(),
  68. 'recordsFiltered' => $query['count'],
  69. 'data' => $data,
  70. ]);
  71. }
  72. }