This commit is contained in:
parent
69d900b1f9
commit
617cabbe4c
|
@ -98,7 +98,7 @@ export const asyncRoutes = [
|
|||
component: () => import('@/views/onlines/online.vue'),
|
||||
name: 'onlines',
|
||||
meta: {
|
||||
title: '客服在线列表',
|
||||
title: '在线客服列表',
|
||||
roles: ['admin']
|
||||
}
|
||||
}/*,
|
||||
|
|
|
@ -10,12 +10,6 @@
|
|||
<el-tag v-if="scope.row.isOnline === 2" type="info">没上线</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" label="是否分单" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.isEndWork === 0" type="border-card">否</el-tag>
|
||||
<el-tag v-if="scope.row.isEndWork === 1" type="success">是</el-tag>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column align="center" label="是否分单" width="100">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.isEndWork" :active-value="1" :inactive-value="0" @change="updateStatus(scope.row)" />
|
||||
|
@ -31,12 +25,12 @@
|
|||
{{ Math.floor((scope.row.data ? scope.row.data.onlineTime : scope.row.onlineTime) / 3600) || '--' }} 分钟
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="138px" align="center" label="上班时间">
|
||||
<el-table-column width="138px" align="center" label="开始分单的时间">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.start_work_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="138px" align="center" label="下班时间">
|
||||
<el-table-column width="138px" align="center" label="停止分单的时间">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.end_work_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</template>
|
||||
|
|
|
@ -17,6 +17,7 @@ class IndexController extends base
|
|||
|
||||
public function isWork(Request $request)
|
||||
{
|
||||
Redis::set('CRM:USER:ONLINE:WATCH:' . $request->admin->id, time());
|
||||
|
||||
$lastTime = Redis::get('CRM:USER:ONLINE:' . $request->admin->id);
|
||||
$end = Redis::hGet('CRM:USER:ONLINE:END', $request->admin->id);
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\model\Admins;
|
||||
use support\Log;
|
||||
use support\Redis;
|
||||
use think\db\exception\DbException;
|
||||
|
||||
class WatchController extends base
|
||||
{
|
||||
public static function watchIsWork()
|
||||
{
|
||||
$nowTime = time();
|
||||
$datas = Admins::order('create_time desc')->select();
|
||||
foreach ($datas as $data) {
|
||||
$item = [];
|
||||
$watch = Redis::get('CRM:USER:ONLINE:WATCH:'.$data->id);
|
||||
|
||||
if (empty($data->start_work_time)){
|
||||
$item['start_work_time'] = $nowTime;
|
||||
}
|
||||
if (($nowTime - $watch) > 0 && ($nowTime - $watch) <= 6*60){
|
||||
$item['end_work_time'] = $nowTime;
|
||||
}
|
||||
Log::warning('watchIsWork',['data'=>$item]);
|
||||
if (!empty($item)){
|
||||
try {
|
||||
Admins::where('id', $data->id)->update($item);
|
||||
} catch (DbException $e) {
|
||||
Log::error('watchIsWork',['error'=>$e]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "========watchIsWork end======\n";
|
||||
return;
|
||||
}
|
||||
}
|
|
@ -34,7 +34,8 @@
|
|||
"vlucas/phpdotenv": "^5.5",
|
||||
"qiniu/php-sdk": "^7.12",
|
||||
"webman/console": "^1.3",
|
||||
"mk-j/php_xlsxwriter": "^0.39.0"
|
||||
"mk-j/php_xlsxwriter": "^0.39.0",
|
||||
"workerman/crontab": "^1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-event": "For better performance. "
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "ea0dd6c24e2c79f4af8509724c30fa0f",
|
||||
"content-hash": "c5d73376efb82db5d880157187b7a430",
|
||||
"packages": [
|
||||
{
|
||||
"name": "carbonphp/carbon-doctrine-types",
|
||||
|
@ -2768,6 +2768,56 @@
|
|||
},
|
||||
"time": "2023-04-23T14:40:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "workerman/crontab",
|
||||
"version": "v1.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/walkor/crontab.git",
|
||||
"reference": "b78f1556f2977715b9cb5653129e6d9cf160d966"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/walkor/crontab/zipball/b78f1556f2977715b9cb5653129e6d9cf160d966",
|
||||
"reference": "b78f1556f2977715b9cb5653129e6d9cf160d966",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0",
|
||||
"workerman/workerman": ">=4.0.20"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Workerman\\Crontab\\": "./src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "walkor",
|
||||
"email": "walkor@workerman.net",
|
||||
"homepage": "http://www.workerman.net",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A crontab written in PHP based on workerman",
|
||||
"homepage": "http://www.workerman.net",
|
||||
"keywords": [
|
||||
"crontab"
|
||||
],
|
||||
"support": {
|
||||
"email": "walkor@workerman.net",
|
||||
"forum": "http://wenda.workerman.net/",
|
||||
"issues": "https://github.com/walkor/workerman/issues",
|
||||
"source": "https://github.com/walkor/crontab",
|
||||
"wiki": "http://doc.workerman.net/"
|
||||
},
|
||||
"time": "2022-10-17T01:59:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "workerman/webman-framework",
|
||||
"version": "v1.5.18",
|
||||
|
|
|
@ -14,10 +14,12 @@
|
|||
|
||||
namespace process;
|
||||
|
||||
use app\admin\controller\WatchController;
|
||||
use FilesystemIterator;
|
||||
use RecursiveDirectoryIterator;
|
||||
use RecursiveIteratorIterator;
|
||||
use SplFileInfo;
|
||||
use Workerman\Crontab\Crontab;
|
||||
use Workerman\Timer;
|
||||
use Workerman\Worker;
|
||||
|
||||
|
@ -240,4 +242,12 @@ class Monitor
|
|||
}
|
||||
return $memoryLimit;
|
||||
}
|
||||
|
||||
public function onWorkerStart()
|
||||
{
|
||||
// 每秒钟执行一次
|
||||
new Crontab('*/1 * * * * *', function(){
|
||||
WatchController::watchIsWork();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue