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 @@
1. {{ $L('自动签到延迟时长为±1分钟。') }}
+2. {{ $L('设备连接上指定路由器(WiFi)后自动签到。') }}
+3. {{ $L('仅支持Openwrt系统的路由器。') }}
+4. {{ $L('关闭签到功能再开启需要重新安装。') }}
+5. {{ $L('进入路由器终端执行以下命令即可完成安装:') }}
+ +