From 96bf05bb197617ba6776f2a42863f051264d30e1 Mon Sep 17 00:00:00 2001 From: liaodeity Date: Thu, 6 May 2021 14:46:36 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BD=91=E7=AB=99?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E4=BA=BA=E6=95=B0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Home/PublicController.php | 47 +++++++++++++++++++ app/Models/WebView.php | 22 +++++++++ resources/views/layouts/app.blade.php | 2 + resources/views/layouts/home.blade.php | 2 + routes/web.php | 13 +++-- 5 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/Home/PublicController.php create mode 100644 app/Models/WebView.php diff --git a/app/Http/Controllers/Home/PublicController.php b/app/Http/Controllers/Home/PublicController.php new file mode 100644 index 0000000..e2ce300 --- /dev/null +++ b/app/Http/Controllers/Home/PublicController.php @@ -0,0 +1,47 @@ + +|----------------------------------------------------------------------------------------------------------- +*/ + +namespace App\Http\Controllers\Home; + + +use App\Http\Controllers\Controller; +use App\Models\WebView; +use Illuminate\Http\Request; + +class PublicController extends Controller +{ + public function webViewBrowsing (Request $request) + { + $web_user = get_login_user_id (); + $userAgent = $request->userAgent (); + $clientId = $request->getClientIp (); + $viewUrl = $request->input ('url'); + if (!$viewUrl) { + $viewUrl = $request->header ('referer'); + } + if (!$web_user) { + $web_user = session ()->getId (); + } + $insArr = [ + 'web_user' => $web_user, + 'user_agent' => $userAgent, + 'client_id' => $clientId, + 'view_url' => $viewUrl, + 'view_at' => now () + ]; + $ret = WebView::create ($insArr); + $data = ['result' => $ret ? true : false]; + + return ajax_success_result ('', $data); + } +} diff --git a/app/Models/WebView.php b/app/Models/WebView.php new file mode 100644 index 0000000..33dc0d3 --- /dev/null +++ b/app/Models/WebView.php @@ -0,0 +1,22 @@ + +|----------------------------------------------------------------------------------------------------------- +*/ + +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; + +class WebView extends Model +{ + public $timestamps = false; + protected $fillable = ['web_user', 'view_url', 'client_ip', 'user_agent', 'view_at']; +} diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 8c1ddc8..78d57d1 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -64,6 +64,8 @@ layui.use(['element', 'layer'], function () { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); + //记录浏览记录 + $.post('{{url('view_browsing')}}'); }); @yield('footer') diff --git a/resources/views/layouts/home.blade.php b/resources/views/layouts/home.blade.php index 58151e8..e0a1f1d 100644 --- a/resources/views/layouts/home.blade.php +++ b/resources/views/layouts/home.blade.php @@ -63,6 +63,8 @@ layui.use(['element', 'layer'], function () { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); + //记录浏览记录 + $.post('{{url('view_browsing')}}'); }); @yield('footer') diff --git a/routes/web.php b/routes/web.php index f362dee..59dbdc2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,11 +24,18 @@ Route::get ('/', function () { return view ('welcome'); }); +/*前台*/ +Route::namespace ('Home')->middleware ('home')->group (function () { + //Route::get ('/', 'IndexController@index'); + Route::post ('/view_browsing', [\App\Http\Controllers\Home\PublicController::class, 'webViewBrowsing']); +}); + + +/*后台*/ Route::get ('admin/login', [LoginController::class, 'index'])->name ('admin.login'); Route::post ('admin/login/check', [LoginController::class, 'check'])->name ('admin.login.check'); Route::get ('admin/login/captcha', [LoginController::class, 'captcha'])->name ('admin.login.captcha'); - Route::middleware ('admin')->prefix ('admin')->group (function () { Route::get ('/', [MainController::class, 'index'])->name ('admin'); Route::get ('main/init', [MainController::class, 'init'])->name ('admin.main.init'); @@ -36,8 +43,8 @@ Route::middleware ('admin')->prefix ('admin')->group (function () { Route::get ('main/logout', [MainController::class, 'logout'])->name ('admin.main.logout'); Route::get ('main/clear', [MainController::class, 'clear'])->name ('admin.main.clear'); Route::post ('main/logs', [MainController::class, 'logs'])->name ('admin.main.logs'); - Route::post ('/main/sync_real_num', [MainController::class, 'sync_real_num']); - Route::post ('/main/get_echart', [MainController::class, 'get_echart']); + Route::post ('/main/sync_real_num', [MainController::class, 'syncRealNum']); + Route::post ('/main/get_echart', [MainController::class, 'getEchart']); //上传 Route::post ('/upload', [UploadController::class, 'image'])->name ('upload.image'); -- Gitee From 53ebec2be62d43e4e15f39a5037579b6982f01fd Mon Sep 17 00:00:00 2001 From: liaodeity Date: Thu, 6 May 2021 14:47:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/lay-module/layuimini/miniAdmin.js | 4 +- resources/views/admin/config/add.blade.php | 459 ------------------ .../views/admin/config/setting.blade.php | 6 +- .../admin/config_base_info/add.blade.php | 6 +- .../admin/image_manager/create.blade.php | 2 +- 5 files changed, 9 insertions(+), 468 deletions(-) delete mode 100644 resources/views/admin/config/add.blade.php diff --git a/public/static/layuimini/js/lay-module/layuimini/miniAdmin.js b/public/static/layuimini/js/lay-module/layuimini/miniAdmin.js index e4ba12c..a7afc4b 100644 --- a/public/static/layuimini/js/lay-module/layuimini/miniAdmin.js +++ b/public/static/layuimini/js/lay-module/layuimini/miniAdmin.js @@ -262,9 +262,9 @@ layui.define(["jquery", "miniMenu", "element","miniTab", "miniTheme"], function $.getJSON(clearUrl, function (data, status) { layer.close(loading); if (data.code !== 0) { - return miniAdmin.error(data.msg); + return miniAdmin.error(data.message); } else { - return miniAdmin.success(data.msg); + return miniAdmin.success(data.message); } }).fail(function () { layer.close(loading); diff --git a/resources/views/admin/config/add.blade.php b/resources/views/admin/config/add.blade.php deleted file mode 100644 index f73d8c1..0000000 --- a/resources/views/admin/config/add.blade.php +++ /dev/null @@ -1,459 +0,0 @@ -@extends('layouts.app') -@section('style') - -@endsection - -@section('content') - -
-
-
- {{method_field ('PUT')}} -
-
    -
  • 基本信息
  • -
  • 联系信息
  • -
-
-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- -
-
-
- -
- -
-
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
- 选择显示的内容: - 不勾选显示内容; - 设置地图区域大小: - 自定义:尺寸:(宽)566 x(高)223;名片生成地址:http://api.map.baidu.com/mapCard/setInformation.html -
-
- -
-
- -
-
- @if( check_admin_auth ($MODULE_NAME.' edit')) - - @endif -
-
-
-
-
-
-
-@endsection - -@section('footer') - -@endsection diff --git a/resources/views/admin/config/setting.blade.php b/resources/views/admin/config/setting.blade.php index 997b081..2e13749 100644 --- a/resources/views/admin/config/setting.blade.php +++ b/resources/views/admin/config/setting.blade.php @@ -77,7 +77,7 @@ $("#logo_id").val(res.data.id) $("#logo_src").attr('src', res.data.src).removeClass('layui-hide') } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 @@ -97,7 +97,7 @@ $("#mp_id").val(res.data.id) $("#mp_src").attr('src', res.data.src).removeClass('layui-hide') } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 @@ -123,7 +123,7 @@ ' >\n' + ' '); } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 diff --git a/resources/views/admin/config_base_info/add.blade.php b/resources/views/admin/config_base_info/add.blade.php index 66adeb0..00ddb1e 100644 --- a/resources/views/admin/config_base_info/add.blade.php +++ b/resources/views/admin/config_base_info/add.blade.php @@ -77,7 +77,7 @@ $("#logo_id").val(res.data.id) $("#logo_src").attr('src', res.data.src).removeClass('layui-hide') } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 @@ -97,7 +97,7 @@ $("#mp_id").val(res.data.id) $("#mp_src").attr('src', res.data.src).removeClass('layui-hide') } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 @@ -123,7 +123,7 @@ ' >\n' + ' '); } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 diff --git a/resources/views/admin/image_manager/create.blade.php b/resources/views/admin/image_manager/create.blade.php index 95e5281..63f1c92 100644 --- a/resources/views/admin/image_manager/create.blade.php +++ b/resources/views/admin/image_manager/create.blade.php @@ -84,7 +84,7 @@ if (res.code === 0) { location.reload(); } else { - top.layer.msg(res.msg, { + top.layer.msg(res.message, { icon: 2, time: FAIL_TIME, shade: 0.3 -- Gitee From fcb65c3db365afbdbc42e619f1067b1604f9917e Mon Sep 17 00:00:00 2001 From: liaodeity Date: Thu, 6 May 2021 14:48:05 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Admin/MainController.php | 75 ++++++------- resources/views/admin/main/console.blade.php | 106 ++++++++---------- 2 files changed, 81 insertions(+), 100 deletions(-) diff --git a/app/Http/Controllers/Admin/MainController.php b/app/Http/Controllers/Admin/MainController.php index fcb275b..5f43d91 100644 --- a/app/Http/Controllers/Admin/MainController.php +++ b/app/Http/Controllers/Admin/MainController.php @@ -23,6 +23,7 @@ use App\Models\Log; use App\Models\Menu; use App\Models\Recall; use App\Models\User; +use App\Models\WebView; use Illuminate\Http\Request; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Artisan; @@ -45,7 +46,7 @@ class MainController extends Controller $shortcutList = Menu::where ('status', 1)->where ('is_shortcut', 1)->orderBy ('sort', 'ASC')->get (); foreach ($shortcutList as $key => $menu) { //屏蔽无权限菜单 - if ($menu['auth_name'] && !check_admin_auth ($menu['auth_name'].'_index')) { + if ($menu['auth_name'] && !check_admin_auth ($menu['auth_name'] . '_index')) { unset($shortcutList[ $key ]); } } @@ -226,40 +227,25 @@ class MainController extends Controller /** * 获取实时统计数据 add by gui */ - public function sync_real_num () + public function syncRealNum () { $monthDate = date ('Y-m-01'); $userId = get_login_user_id (); - $noDone = 0; - $againNoDone = 0; - $monthDone = 0; - $allDone = 0; - $noAssigner = 0; - if (User::onlyOperatorAuth ()) { - //只有话务员权限的时候 - $noDone = Recall::where ('is_done', 0)->where ('recall_user_id', $userId)->count ('id'); - $againNoDone = Recall::where ('is_done', 0)->where ('recallstatus', '>', 0)->where ('recall_user_id', $userId)->count ('id'); - $monthDone = Recall::where ('is_done', 1)->where ('recalldate', '>=', $monthDate)->where ('recall_user_id', $userId)->count ('id'); - $allDone = Recall::where ('is_done', 1)->where ('recall_user_id', $userId)->count ('id'); - } else { - $noDone = Recall::where ('is_done', 0)->count ('id'); - $againNoDone = Recall::where ('is_done', 0)->where ('recallstatus', '>', 0)->count ('id'); - $monthDone = Recall::where ('is_done', 1)->where ('recalldate', '>=', $monthDate)->count ('id'); - $allDone = Recall::where ('is_done', 1)->count ('id'); - $noAssigner = Recall::where ('recall_user_id', 0)->count ('id'); - } + $todayOrderCount = 0; + $monthOrderCount = 0; + $monthOrderMoney = '0.00'; + $memberCount = User\UserMember::count (); - $result['no_done'] = $noDone; - $result['again_no_done'] = $againNoDone; - $result['month_done'] = $monthDone; - $result['all_done'] = $allDone; - $result['no_assigner'] = $noAssigner; + $result['member'] = $memberCount; + $result['today_order'] = $todayOrderCount; + $result['month_order'] = $monthOrderCount; + $result['month_order_money'] = $monthOrderMoney; return ajax_success_result ('', $result); } - public function get_echart () + public function getEchart () { $date_str = request ()->input ('dates'); $date = array_get_date ($date_str); @@ -273,29 +259,36 @@ class MainController extends Controller if (empty($end_date)) { $end_date = Carbon::now ()->toDateString (); } - //已完成回访数 - $doneRecall = Recall::selectRaw ('COUNT(1) as count,DATE(recalldate) as date') - ->whereDate ('recalldate', '>=', $start_date) - ->whereDate ('recalldate', '<=', $end_date) - ->where ('is_done', '=', 1) - ->groupByRaw ('DATE(recalldate)') - ->orderBy ('date', 'ASC'); - $doneDate = []; - if (User::onlyOperatorAuth ()) { - //只有话务员权限的时候 - $doneRecall = $doneRecall->where ('recall_user_id', get_login_user_id ()); + //访问用户 + $webUser = WebView::selectRaw ('COUNT(DISTINCT web_user) as count,DATE(view_at) as date') + ->whereDate ('view_at', '>=', $start_date) + ->whereDate ('view_at', '<=', $end_date) + ->groupByRaw ('DATE(view_at)') + ->orderBy ('date', 'ASC')->get (); + $userData = []; + + foreach ($webUser as $log) { + $userData[ $log->date ] = $log->count ?? 0; } - foreach ($doneRecall->get () as $log) { - $doneDate[ $log->date ] = $log->count ?? 0; + //访问次数 + $webView = WebView::selectRaw ('COUNT(web_user) as count,DATE(view_at) as date') + ->whereDate ('view_at', '>=', $start_date) + ->whereDate ('view_at', '<=', $end_date) + ->groupByRaw ('DATE(view_at)') + ->orderBy ('date', 'ASC')->get(); + $viewData = []; + foreach ($webView as $log) { + $viewData[ $log->date ] = $log->count ?? 0; } - for ($i = 0; $i < 90; $i++) { + for ($i = 0; $i < 100; $i++) { $_date = Carbon::parse ($start_date)->addDays ($i)->toDateString (); if ($_date > $end_date) { break; } $x_data[] = $_date; - $series['done'][] = isset($doneDate[ $_date ]) ? $doneDate[ $_date ] : 0; + $series['users'][] = isset($userData[ $_date ]) ? $userData[ $_date ] : 0; + $series['views'][] = isset($viewData[ $_date ]) ? $viewData[ $_date ] : 0; } return ajax_success_result ('', [ diff --git a/resources/views/admin/main/console.blade.php b/resources/views/admin/main/console.blade.php index a13560c..37ed1bb 100644 --- a/resources/views/admin/main/console.blade.php +++ b/resources/views/admin/main/console.blade.php @@ -174,56 +174,39 @@
实时(10s) -
未完成回访数
+
用户数
-

-

- 截止今天还需回访的数量 +

-

+ 截止今天用户的数量
- @if(\App\Models\User::onlyOperatorAuth()) -
-
-
-
- 实时(10s) -
已回访未成功数
-
-
-

-

- 截止今天还需再次回访的数量 -
+
+
+
+
+ 实时(10s) +
今日订单
-
-
- @else -
-
-
-
- 实时(10s) -
未分配数
-
-
-

-

- 截止今天还存在回访任务未分配的数量 -
+
+

-

+ 今天的订单数据
- @endif +
- 实时(10s) -
本月已完成回访数
+ 实时(10s) +
本月订单
-

-

- 截止今天本月已完成回访数量 +

-

+ 截止今天本月订单数量
@@ -232,16 +215,17 @@
- 实时(10s) -
已完成回访数
+ 实时(10s) +
本月订单金额
-

-

- 累计已经完成的回访数量 +

-

+ 截止今天本月订单金额
+
@@ -321,11 +305,10 @@ }, success: function (data) { if (data.code === 0) { - $("#sync_real_no_done").text(data.no_done); - $('#sync_real_again_no_done').text(data.again_no_done); - $('#sync_real_month_done').text(data.month_done); - $('#sync_real_all_done').text(data.all_done); - $('#sync_real_no_assigner').text(data.no_assigner); + $("#sync_real_member").text(data.member); + $("#sync_real_today_order").text(data.today_order); + $("#sync_real_month_order").text(data.month_order); + $('#sync_real_month_order_money').text(data.month_order_money); } } }) @@ -343,7 +326,7 @@ trigger: 'axis' }, legend: { - data: ['已完成回访数'] + data: ['访问人数','浏览次数'] }, grid: { left: '3%', @@ -384,9 +367,14 @@ optionRecords.xAxis.data = data.x_data; var series = [ { - name: '已完成回访数', + name: '访问人数', + type: 'line', + data: data.series.users + }, + { + name: '浏览次数', type: 'line', - data: data.series.done + data: data.series.views } ] optionRecords.series = series; @@ -408,19 +396,19 @@ echarts = layui.echarts; laydate = layui.laydate; miniTab.listen(); - // get_sync_real_num(); - // $(".real_second").text(SECOND); - // setInterval(function () { - // var num = $(".real_second:first").text(); - // num--; - // if(num > 0){ - // $(".real_second").text(num); - // }else{ - // $(".real_second").text(SECOND); - // get_sync_real_num() - // } - // }, 1000); - // set_echart(); + get_sync_real_num(); + $(".real_second").text(SECOND); + setInterval(function () { + var num = $(".real_second:first").text(); + num--; + if(num > 0){ + $(".real_second").text(num); + }else{ + $(".real_second").text(SECOND); + get_sync_real_num() + } + }, 1000); + set_echart(); //日期 laydate.render({ elem: '#start_date', -- Gitee From 640b86b1d145a6c80f360a1129960bec4354cfac Mon Sep 17 00:00:00 2001 From: liaodeity Date: Thu, 6 May 2021 15:08:05 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.md b/readme.md index 735148c..d522bb9 100644 --- a/readme.md +++ b/readme.md @@ -67,7 +67,6 @@ php artisan serve ### 开发文档 - [https://www.jianbaizhan.com/cmf/docs](https://www.jianbaizhan.com/cmf/docs) -- [https://gitee.com/liaodeiy/laravel-admin-docs](https://gitee.com/liaodeiy/laravel-admin-docs) -- Gitee