UserLogRepository.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * 用户日志仓库.
  4. *
  5. * @author jim <jim458734573@gmail.com>
  6. * @date 2020-01-29 14:43:58
  7. */
  8. declare(strict_types=1);
  9. namespace App\Repositories;
  10. use App\Model\Mongo\SearchLogModel;
  11. use Carbon\Carbon;
  12. use App\Model\UserLogModel;
  13. use App\Repositories\Service\CommonService;
  14. use Hyperf\Database\Model\Builder;
  15. use KZ2\Repositories\Model\Repository;
  16. class UserLogRepository extends Repository
  17. {
  18. public function model()
  19. {
  20. return UserLogModel::class;
  21. }
  22. /**
  23. * 创建一个日志.
  24. * @param $inputs
  25. * @return \Hyperf\DbConnection\Model\Model
  26. */
  27. public function createOne($inputs)
  28. {
  29. $commonService = make(CommonService::class);
  30. $request = request();
  31. $serverParams = $request->getServerParams();
  32. $clientIp = $commonService->getIp();
  33. $arrUa = $request->getHeader('user-agent');
  34. // 取第一个.
  35. $ua = current($arrUa);
  36. $userId = data_get($inputs, 'user_id', '');
  37. $subject = $inputs['subject']; // 一定是主题的.
  38. $module = data_get($inputs, 'module', '');
  39. $action = data_get($inputs, 'action', '');
  40. $svalue = data_get($inputs, 'svalue', '');
  41. $setarr = [
  42. 'user_id' => $userId,
  43. 'subject' => $subject,
  44. 'module' => $module,
  45. 'action' => $action,
  46. 'svalue' => $svalue,
  47. 'ip' => $clientIp,
  48. 'ua' => $ua,
  49. ];
  50. $log = UserLogModel::create($setarr);
  51. unset($inputs, $setarr);
  52. return $log;
  53. }
  54. /**
  55. * 记录搜索日志.
  56. * @param $eventName
  57. * @param $userCode
  58. * @param $keywords
  59. * @param string $module
  60. * @return \MongoDB\InsertOneResult
  61. */
  62. public function recordSearchLog($eventName, $userCode, $keywords, $module = '')
  63. {
  64. $logObj = make(SearchLogModel::class);
  65. $nowDate = toMongoIsoDate(Carbon::now());
  66. $setarr = [
  67. 'event_name' => $eventName,
  68. 'user_uid' => (string)$userCode,
  69. 'keywords' => (string)$keywords,
  70. 'module' => $module,
  71. 'created_at' => $nowDate,
  72. ];
  73. return $logObj->db()->insertOne($setarr);
  74. }
  75. }