UrlsService.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Basic\Services;
  3. use App\Base\Services\BaseService;
  4. use App\Basic\Models\UrlsLogModel;
  5. use App\Basic\Models\UrlsModel;
  6. class UrlsService extends BaseService
  7. {
  8. private $urlsLogModel;
  9. public function __construct(UrlsModel $model, UrlsLogModel $urlsLogModel)
  10. {
  11. $this->model = $model;
  12. $this->urlsLogModel = $urlsLogModel;
  13. }
  14. /**
  15. * 添加短地址访问日志
  16. */
  17. public function addLog($urlsId, $ip)
  18. {
  19. $data = [
  20. "urls_id" => $urlsId,
  21. "ip" => $ip
  22. ];
  23. return $this->urlsLogModel->insertData($data);
  24. }
  25. /**
  26. * 日志详情
  27. */
  28. public function findOneLogInfo($params, $fields = '')
  29. {
  30. $map = [];
  31. if (empty($params['urls_id'])) {
  32. $map['urls_id'] = $params['urls_id'];
  33. }
  34. if (empty($params['ip'])) {
  35. $map['ip'] = $params['ip'];
  36. }
  37. return $this->urlsLogModel->findOneBy($map, $fields);
  38. }
  39. /**
  40. * 获取短地址详情
  41. */
  42. public function getShortUrlHits($urls)
  43. {
  44. $map = [];
  45. $keys = $this->getKeyByUrls($urls);
  46. if (is_array($urls)) {
  47. $map['key'] = ['in', $keys];
  48. } else {
  49. $map['key'] = $keys;
  50. }
  51. $list = $this->findBy($map, '`key`,hits,uv');
  52. if (is_array($urls)) {
  53. return $list;
  54. } else {
  55. return $list[0] ?? [];
  56. }
  57. }
  58. /**
  59. * 获取url对应的key
  60. */
  61. public function getKeyByUrls($urls)
  62. {
  63. $keys = [];
  64. if (is_array($urls)) {
  65. foreach ($urls as $url) {
  66. $pathInfo = parse_url($url);
  67. $keys[] = trim($pathInfo['path'], '/');
  68. }
  69. return $keys;
  70. } else {
  71. $pathInfo = parse_url($urls);
  72. return trim($pathInfo['path'], '/');
  73. }
  74. }
  75. }