mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-01 13:40:46 +00:00
perf: 签到成功通知
This commit is contained in:
parent
3b346046ae
commit
10936bcdb5
@ -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';
|
||||
|
||||
@ -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";
|
||||
//
|
||||
|
||||
@ -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'] = '机器人管理';
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<div class="setting-component-item">
|
||||
<Form ref="formData" :model="formData" :rules="ruleData" label-width="auto" @submit.native.prevent>
|
||||
<div class="block-setting-box">
|
||||
<h3>{{ $L('自动签到') }}</h3>
|
||||
<h3>{{ $L('签到设置') }}</h3>
|
||||
<FormItem :label="$L('功能开启')" prop="open">
|
||||
<RadioGroup v-model="formData.open">
|
||||
<Radio label="open">{{ $L('开启') }}</Radio>
|
||||
@ -14,6 +14,21 @@
|
||||
</div>
|
||||
</FormItem>
|
||||
<template v-if="formData.open === 'open'">
|
||||
<FormItem :label="$L('签到时间')" prop="time">
|
||||
<TimePicker
|
||||
v-model="formData.time"
|
||||
type="timerange"
|
||||
format="HH:mm"
|
||||
:placeholder="$L('请选择签到时间')"/>
|
||||
<div class="form-tip">{{$L('每日首次签到成功消息通知')}}</div>
|
||||
</FormItem>
|
||||
<FormItem :label="$L('签到通知')" prop="notice">
|
||||
<RadioGroup v-model="formData.notice">
|
||||
<Radio label="open">{{ $L('开启') }}</Radio>
|
||||
<Radio label="close">{{ $L('关闭') }}</Radio>
|
||||
</RadioGroup>
|
||||
<div class="form-tip">{{$L('每日首次签到成功消息通知')}}</div>
|
||||
</FormItem>
|
||||
<FormItem :label="$L('允许修改')" prop="edit">
|
||||
<RadioGroup v-model="formData.edit">
|
||||
<Radio label="open">{{ $L('允许') }}</Radio>
|
||||
@ -21,16 +36,23 @@
|
||||
</RadioGroup>
|
||||
<div class="form-tip">{{$L('允许成员自己修改MAC地址')}}</div>
|
||||
</FormItem>
|
||||
<FormItem :label="$L('安装说明')" prop="explain">
|
||||
<p>1. {{$L('签到延迟时长为±1分钟。')}}</p>
|
||||
<p>2. {{$L('设备连接上指定路由器(WiFi)后自动签到。')}}</p>
|
||||
<p>3. {{$L('仅支持Openwrt系统的路由器。')}}</p>
|
||||
<p>4. {{$L('关闭签到功能再开启需要重新安装。')}}</p>
|
||||
<p>5. {{$L('进入路由器终端执行以下命令即可完成安装:')}}</p>
|
||||
<Input ref="cmd" @on-focus="clickCmd" style="margin-top:6px" type="textarea" readonly :value="formData.cmd"/>
|
||||
</FormItem>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<template v-if="formData.open === 'open'">
|
||||
<div class="block-setting-placeholder"></div>
|
||||
<div class="block-setting-box">
|
||||
<h3>{{ $L('自动签到') }}</h3>
|
||||
<FormItem :label="$L('安装说明')" prop="explain">
|
||||
<p>1. {{ $L('自动签到延迟时长为±1分钟。') }}</p>
|
||||
<p>2. {{ $L('设备连接上指定路由器(WiFi)后自动签到。') }}</p>
|
||||
<p>3. {{ $L('仅支持Openwrt系统的路由器。') }}</p>
|
||||
<p>4. {{ $L('关闭签到功能再开启需要重新安装。') }}</p>
|
||||
<p>5. {{ $L('进入路由器终端执行以下命令即可完成安装:') }}</p>
|
||||
<Input ref="cmd" @on-focus="clickCmd" style="margin-top:6px" type="textarea" readonly :value="formData.cmd"/>
|
||||
</FormItem>
|
||||
</div>
|
||||
</template>
|
||||
</Form>
|
||||
<div class="setting-footer">
|
||||
<Button :loading="loadIng > 0" type="primary" @click="submitForm">{{ $L('提交') }}</Button>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.3 KiB |
Loading…
x
Reference in New Issue
Block a user