VisitRecord.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\api\controller;
  13. use app\api\model\VisitRecord as VisitRecordModel;
  14. use app\api\service\User as UserService;
  15. use app\common\model\PromotionMonitor;
  16. /**
  17. * 统计浏览管理
  18. * Class VisitRecord
  19. * @package app\api\controller
  20. */
  21. class VisitRecord extends Controller
  22. {
  23. public function countRecord()
  24. {
  25. // dd(PromotionMonitor::getPageQrcode(1,4,16));
  26. // 当前用户ID
  27. $user = UserService::getCurrentLoginUser();
  28. $args = $this->request->get();
  29. $client = $args['client'] ?? 0;
  30. $visit_type = $args['visit_type'] ?? 0;
  31. $visit_type_id = $args['visit_type_id'] ?? 0;
  32. $stay_time = $args['stay_time'] ?? 0;
  33. if ($user) {//计算当前UV
  34. $count = VisitRecordModel::where('user_id', $user['user_id'])
  35. ->where('v_type', 1)
  36. ->where('client', $client)
  37. ->where('visit_type', $visit_type)
  38. ->where('visit_type_id', $visit_type_id)
  39. ->count();
  40. if (!$count) {//如果当前用户没有计算UV就添加一条
  41. (new VisitRecordModel)->save([
  42. 'v_type' => 1,
  43. 'client' => $client,
  44. 'visit_type' => $visit_type,
  45. 'user_id' => $user['user_id'],
  46. 'visit_type_id' => $visit_type_id,
  47. 'stay_time' => $stay_time
  48. ]);
  49. }
  50. } else {//未登录计算IP
  51. $ip = request()->ip();
  52. $count = VisitRecordModel::where('client_ip', $ip)
  53. ->where('v_type', 1)
  54. ->where('client', $args['client'])
  55. ->where('visit_type', $visit_type)
  56. ->where('visit_type_id', $visit_type_id)
  57. ->count();
  58. if (!$count) {//如果当前用户没有计算UV就添加一条
  59. (new VisitRecordModel)->save([
  60. 'v_type' => 1,
  61. 'client' => $client,
  62. 'visit_type' => $visit_type,
  63. 'user_id' => 0,
  64. 'client_ip' => $ip,
  65. 'visit_type_id' => $visit_type_id,
  66. 'stay_time' => $stay_time
  67. ]);
  68. }
  69. }
  70. //添加PV
  71. (new VisitRecordModel)->save([
  72. 'v_type' => 0,
  73. 'client' => 0,
  74. 'visit_type' => $visit_type,
  75. 'user_id' => 0,
  76. 'visit_type_id' => $visit_type_id,
  77. // 'stay_time' => $stay_time
  78. ]);
  79. return $this->renderSuccess([], '添加成功');
  80. }
  81. }