作者 赵彬吉

update

  1 +<?php
  2 +
  3 +namespace App\Http\Controllers\Bside;
  4 +
  5 +
  6 +use App\Http\Logic\Bside\VisitLogic;
  7 +use Illuminate\Http\Request;
  8 +
  9 +
  10 +/**
  11 + * 访问明细
  12 + * Class VisitController
  13 + * @package App\Http\Controllers\Bside
  14 + * @author zbj
  15 + * @date 2023/5/22
  16 + */
  17 +class VisitController extends BaseController
  18 +{
  19 +
  20 + public function index(VisitLogic $logic)
  21 + {
  22 + $data = $logic->getList();
  23 + return $this->success($data);
  24 + }
  25 +
  26 + public function item(Request $request, VisitLogic $logic){
  27 + $request->validate([
  28 + 'id'=>'required'
  29 + ],[
  30 + 'id.required' => 'ID不能为空'
  31 + ]);
  32 + $map = [
  33 + ['customer_visit_id' => $this->param['id']]
  34 + ];
  35 + $data = $logic->getItemList($map);
  36 + return $this->success($data);
  37 + }
  38 +
  39 +}
  1 +<?php
  2 +
  3 +namespace App\Http\Logic\Bside;
  4 +
  5 +use App\Http\Logic\Logic;
  6 +use App\Models\Visit\Visit;
  7 +use App\Models\Visit\VisitItem;
  8 +
  9 +
  10 +/**
  11 + * Class VisitLogic
  12 + * @package App\Http\Logic\Bside
  13 + * @author zbj
  14 + * @date 2023/5/22
  15 + */
  16 +class VisitLogic extends BaseLogic
  17 +{
  18 + public function __construct()
  19 + {
  20 + parent::__construct();
  21 +
  22 + $this->model = new Visit();
  23 + }
  24 +
  25 + public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20)
  26 + {
  27 + return Logic::getList($map, $sort, ['id', 'url', 'referrer_url', 'device_port', 'country', 'ip', 'depth', 'created_at'], $limit);
  28 + }
  29 +
  30 + public function getItemList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20){
  31 + $this->model = new VisitItem();
  32 + return Logic::getList($map, $sort, ['url', 'created_at'], 0);
  33 + }
  34 +
  35 +}
  1 +<?php
  2 +
  3 +namespace App\Models\Visit;
  4 +
  5 +
  6 +use App\Models\Base;
  7 +
  8 +/**
  9 + * Class Visit
  10 + * @package App\Models
  11 + * @author zbj
  12 + * @date 2023/5/22
  13 + */
  14 +class Visit extends Base
  15 +{
  16 +
  17 + //设置关联表名
  18 + protected $table = 'gl_customer_visit';
  19 +
  20 + protected $appends = ['device_text'];
  21 +
  22 + public static function deviceMap(){
  23 + return [
  24 + 1 => 'PC',
  25 + 2 => '移动端'
  26 + ];
  27 + }
  28 +
  29 + /**
  30 + * @return string
  31 + * @author zbj
  32 + * @date 2023/5/22
  33 + */
  34 + public function getDeviceTextAttribute(){
  35 + return self::deviceMap()[$this->device_port] ?? '';
  36 + }
  37 +
  38 +
  39 +}
  1 +<?php
  2 +
  3 +namespace App\Models\Visit;
  4 +
  5 +use App\Models\Base;
  6 +
  7 +/**
  8 + * Class VisitItem
  9 + * @package App\Models
  10 + * @author zbj
  11 + * @date 2023/5/22
  12 + */
  13 +class VisitItem extends Base
  14 +{
  15 +
  16 + //设置关联表名
  17 + protected $table = 'gl_customer_visit_item';
  18 +
  19 +
  20 +}
@@ -262,6 +262,11 @@ Route::middleware(['bloginauth'])->group(function () { @@ -262,6 +262,11 @@ Route::middleware(['bloginauth'])->group(function () {
262 Route::any('/get_google_rank', [\App\Http\Controllers\Bside\RankDataController::class, 'get_google_rank'])->name('rank_data_get_google_rank'); 262 Route::any('/get_google_rank', [\App\Http\Controllers\Bside\RankDataController::class, 'get_google_rank'])->name('rank_data_get_google_rank');
263 }); 263 });
264 264
  265 + //访问数据
  266 + Route::prefix('visit')->group(function () {
  267 + Route::any('/', [\App\Http\Controllers\Bside\VisitController::class, 'index'])->name('visit_list');
  268 + Route::any('/item', [\App\Http\Controllers\Bside\VisitController::class, 'item'])->name('visit_item');
  269 + });
265 270
266 }); 271 });
267 //无需登录验证的路由组 272 //无需登录验证的路由组