From 10936bcdb5fd7bea581c8371541e2e6d4585bcb3 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 28 Jan 2023 22:44:52 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=AD=BE=E5=88=B0=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/PublicController.php | 28 +++++++++++- app/Http/Controllers/Api/SystemController.php | 6 ++- app/Models/User.php | 4 ++ .../setting/components/SystemCheckin.vue | 40 ++++++++++++++---- .../public/images/avatar/default_checkin.png | Bin 0 -> 9528 bytes 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 resources/assets/statics/public/images/avatar/default_checkin.png diff --git a/app/Http/Controllers/Api/PublicController.php b/app/Http/Controllers/Api/PublicController.php index 0bd1c097c..d066d9b1e 100755 --- a/app/Http/Controllers/Api/PublicController.php +++ b/app/Http/Controllers/Api/PublicController.php @@ -2,8 +2,11 @@ namespace App\Http\Controllers\Api; +use App\Models\User; use App\Models\UserCheckinMac; use App\Models\UserCheckinRecord; +use App\Models\WebSocketDialog; +use App\Models\WebSocketDialogMsg; use App\Module\Base; use Request; @@ -87,10 +90,19 @@ class PublicController extends AbstractController if ($key != $setting['key']) { return 'key error'; } + $setting['time'] = $setting['time'] ? Base::json2array($setting['time']) : ['00:00', '23:59']; // $nowDate = date("Y-m-d"); $nowTime = date("H:i:s"); + // + $timeStart = strtotime(date("{$nowDate} {$setting['time'][0]}")); + $timeEnd = strtotime(date("{$nowDate} {$setting['time'][1]}")); + if (Base::time() < $timeStart || Base::time() > $timeEnd) { + return "not in valid time, valid time is {$setting['time'][0]}-{$setting['time'][1]}"; + } + // $macs = explode(",", $mac); + $creates = []; foreach ($macs as $mac) { $mac = strtoupper($mac); if (Base::isMac($mac) && $UserCheckinMac = UserCheckinMac::whereMac($mac)->first()) { @@ -102,11 +114,25 @@ class PublicController extends AbstractController $record = UserCheckinRecord::where($array)->first(); if (empty($record)) { $record = UserCheckinRecord::createInstance($array); - $record->save(); + $creates[] = $UserCheckinMac->userid; } $record->times = Base::array2json(array_merge($record->times, [$nowTime])); $record->report_time = $time; $record->save(); + + } + } + // + if ($creates) { + $botUser = User::botGetOrCreate('check-in'); + if ($botUser) { + foreach ($creates as $create) { + $dialog = WebSocketDialog::checkUserDialog($botUser->userid, $create); + if ($dialog) { + $text = "签到成功,签到时间:" . date("H:i"); + WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $text], $botUser->userid); // todo 未能在任务end事件来发送任务 + } + } } } return 'success'; diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index 40eddb365..44831de41 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -224,7 +224,7 @@ class SystemController extends AbstractController * * @apiParam {String} type * - get: 获取(默认) - * - save: 保存设置(参数:['open', 'edit', 'key']) + * - save: 保存设置(参数:['open', 'time', 'notice', 'edit', 'key']) * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) * @apiSuccess {Object} data 返回数据 @@ -242,6 +242,8 @@ class SystemController extends AbstractController foreach ($all as $key => $value) { if (!in_array($key, [ 'open', + 'time', + 'notice', 'edit', 'key', ])) { @@ -262,6 +264,8 @@ class SystemController extends AbstractController } // $setting['open'] = $setting['open'] ?: 'close'; + $setting['time'] = $setting['time'] ? Base::json2array($setting['time']) : ['00:00', '23:59']; + $setting['notice'] = $setting['notice'] ?: 'close'; $setting['edit'] = $setting['edit'] ?: 'close'; $setting['cmd'] = "curl -sSL '" . Base::fillUrl("api/public/checkin/install?key={$setting['key']}") . "' | sh"; // diff --git a/app/Models/User.php b/app/Models/User.php index e49d62eac..4dd86e2e6 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -553,6 +553,8 @@ class User extends AbstractModel return url("images/avatar/default_system.png"); } elseif ($email == 'task-alert@bot.system') { return url("images/avatar/default_task.png"); + } elseif ($email == 'check-in@bot.system') { + return url("images/avatar/default_checkin.png"); } elseif ($email == 'bot-manager@bot.system') { return url("images/avatar/default_bot.png"); } @@ -628,6 +630,8 @@ class User extends AbstractModel $update['nickname'] = '系统消息'; } elseif ($key === 'task-alert') { $update['nickname'] = '任务提醒'; + } elseif ($key === 'check-in') { + $update['nickname'] = '签到打卡'; } elseif ($key === 'bot-manager') { $update['nickname'] = '机器人管理'; } diff --git a/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue b/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue index c751017f2..d06c2199d 100644 --- a/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue +++ b/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue @@ -2,7 +2,7 @@
-

{{ $L('自动签到') }}

+

{{ $L('签到设置') }}

{{ $L('开启') }} @@ -14,6 +14,21 @@
+ +