mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 19:35:50 +00:00
perf: 添加定位签到
This commit is contained in:
parent
13fb884387
commit
e5df3e6746
@ -1376,6 +1376,7 @@ class DialogController extends AbstractController
|
|||||||
* @apiParam {Number} lng 经度
|
* @apiParam {Number} lng 经度
|
||||||
* @apiParam {Number} lat 纬度
|
* @apiParam {Number} lat 纬度
|
||||||
* @apiParam {String} title 位置名称
|
* @apiParam {String} title 位置名称
|
||||||
|
* @apiParam {Number} [distance] 距离(米)
|
||||||
* @apiParam {String} [address] 位置地址
|
* @apiParam {String} [address] 位置地址
|
||||||
* @apiParam {String} [thumb] 预览图片(url)
|
* @apiParam {String} [thumb] 预览图片(url)
|
||||||
*
|
*
|
||||||
@ -1392,6 +1393,7 @@ class DialogController extends AbstractController
|
|||||||
$lng = floatval(Request::input('lng'));
|
$lng = floatval(Request::input('lng'));
|
||||||
$lat = floatval(Request::input('lat'));
|
$lat = floatval(Request::input('lat'));
|
||||||
$title = trim(Request::input('title'));
|
$title = trim(Request::input('title'));
|
||||||
|
$distance = intval(Request::input('distance'));
|
||||||
$address = trim(Request::input('address'));
|
$address = trim(Request::input('address'));
|
||||||
$thumb = trim(Request::input('thumb'));
|
$thumb = trim(Request::input('thumb'));
|
||||||
//
|
//
|
||||||
@ -1411,6 +1413,7 @@ class DialogController extends AbstractController
|
|||||||
'lng' => $lng,
|
'lng' => $lng,
|
||||||
'lat' => $lat,
|
'lat' => $lat,
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
|
'distance' => $distance,
|
||||||
'address' => $address,
|
'address' => $address,
|
||||||
'thumb' => $thumb,
|
'thumb' => $thumb,
|
||||||
];
|
];
|
||||||
|
|||||||
@ -427,7 +427,7 @@ class SystemController extends AbstractController
|
|||||||
}
|
}
|
||||||
if (in_array('locat', $all['modes'])) {
|
if (in_array('locat', $all['modes'])) {
|
||||||
if (empty($all['locat_bd_lbs_key'])) {
|
if (empty($all['locat_bd_lbs_key'])) {
|
||||||
return Base::retError('请填写百度地图LBS Key');
|
return Base::retError('请填写百度地图AK');
|
||||||
}
|
}
|
||||||
if (!is_array($all['locat_bd_lbs_point'])) {
|
if (!is_array($all['locat_bd_lbs_point'])) {
|
||||||
return Base::retError('请选择允许签到位置');
|
return Base::retError('请选择允许签到位置');
|
||||||
|
|||||||
@ -118,7 +118,7 @@ class UserBot extends AbstractModel
|
|||||||
if (in_array('locat', $setting['modes']) && Base::isEEUIApp()) {
|
if (in_array('locat', $setting['modes']) && Base::isEEUIApp()) {
|
||||||
$menu[] = [
|
$menu[] = [
|
||||||
'key' => 'locat-checkin',
|
'key' => 'locat-checkin',
|
||||||
'label' => $setting['locat_remark'] ?: Doo::translate('定位签到'),
|
'label' => Doo::translate('定位签到'),
|
||||||
'config' => [
|
'config' => [
|
||||||
'key' => $setting['locat_bd_lbs_key'],
|
'key' => $setting['locat_bd_lbs_key'],
|
||||||
'lng' => $setting['locat_bd_lbs_point']['lng'],
|
'lng' => $setting['locat_bd_lbs_point']['lng'],
|
||||||
@ -130,7 +130,7 @@ class UserBot extends AbstractModel
|
|||||||
if (in_array('manual', $setting['modes'])) {
|
if (in_array('manual', $setting['modes'])) {
|
||||||
$menu[] = [
|
$menu[] = [
|
||||||
'key' => 'manual-checkin',
|
'key' => 'manual-checkin',
|
||||||
'label' => $setting['manual_remark'] ?: Doo::translate('手动打卡')
|
'label' => Doo::translate('手动签到')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return $menu;
|
return $menu;
|
||||||
@ -177,9 +177,10 @@ class UserBot extends AbstractModel
|
|||||||
* 签到机器人
|
* 签到机器人
|
||||||
* @param $command
|
* @param $command
|
||||||
* @param $userid
|
* @param $userid
|
||||||
|
* @param $extra
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function checkinBotQuickMsg($command, $userid)
|
public static function checkinBotQuickMsg($command, $userid, $extra = [])
|
||||||
{
|
{
|
||||||
if (Cache::get("UserBot::checkinBotQuickMsg:{$userid}") === "yes") {
|
if (Cache::get("UserBot::checkinBotQuickMsg:{$userid}") === "yes") {
|
||||||
return "操作频繁!";
|
return "操作频繁!";
|
||||||
@ -194,7 +195,24 @@ class UserBot extends AbstractModel
|
|||||||
if (!in_array('manual', $setting['modes'])) {
|
if (!in_array('manual', $setting['modes'])) {
|
||||||
return '暂未开放手动签到。';
|
return '暂未开放手动签到。';
|
||||||
}
|
}
|
||||||
if ($error = UserBot::checkinBotCheckin($userid, Base::time(), true)) {
|
if ($error = UserBot::checkinBotCheckin('manual-' . $userid, Base::time(), true)) {
|
||||||
|
return $error;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} elseif ($command === 'locat-checkin') {
|
||||||
|
$setting = Base::setting('checkinSetting');
|
||||||
|
if ($setting['open'] !== 'open') {
|
||||||
|
return '暂未开启签到功能。';
|
||||||
|
}
|
||||||
|
if (!in_array('locat', $setting['modes'])) {
|
||||||
|
return '暂未开放定位签到。';
|
||||||
|
}
|
||||||
|
if ($extra['type'] === 'bd') {
|
||||||
|
// todo 判断距离
|
||||||
|
} else {
|
||||||
|
return '错误的定位签到。';
|
||||||
|
}
|
||||||
|
if ($error = UserBot::checkinBotCheckin('locat-' . $userid, Base::time(), true)) {
|
||||||
return $error;
|
return $error;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -207,7 +225,7 @@ class UserBot extends AbstractModel
|
|||||||
* 签到机器人签到
|
* 签到机器人签到
|
||||||
* @param mixed $mac
|
* @param mixed $mac
|
||||||
* - 多个使用,分隔
|
* - 多个使用,分隔
|
||||||
* - 支持:mac地址、userid、checkin-userid
|
* - 支持:mac地址、(manual|locat|face|checkin)-userid
|
||||||
* @param $time
|
* @param $time
|
||||||
* @param bool $alreadyTip 签到过是否提示
|
* @param bool $alreadyTip 签到过是否提示
|
||||||
* @return string|null 返回string表示错误信息,返回null表示签到成功
|
* @return string|null 返回string表示错误信息,返回null表示签到成功
|
||||||
@ -247,7 +265,15 @@ class UserBot extends AbstractModel
|
|||||||
'remark' => $UserCheckinMac->remark,
|
'remark' => $UserCheckinMac->remark,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
} elseif (Base::isNumber($mac)) {
|
} elseif (preg_match('/^(manual|locat|face|checkin)-(\d+)$/i', $mac, $match)) {
|
||||||
|
$type = str_replace('checkin', 'face', $match[1]);
|
||||||
|
$mac = intval($match[2]);
|
||||||
|
$remark = match ($type) {
|
||||||
|
'manual' => $setting['manual_remark'] ?: 'Manual',
|
||||||
|
'locat' => $setting['locat_remark'] ?: 'Location',
|
||||||
|
'face' => $setting['face_remark'] ?: 'Machine',
|
||||||
|
default => '',
|
||||||
|
};
|
||||||
if ($UserInfo = User::whereUserid($mac)->whereBot(0)->first()) {
|
if ($UserInfo = User::whereUserid($mac)->whereBot(0)->first()) {
|
||||||
$array = [
|
$array = [
|
||||||
'userid' => $UserInfo->userid,
|
'userid' => $UserInfo->userid,
|
||||||
@ -256,20 +282,7 @@ class UserBot extends AbstractModel
|
|||||||
];
|
];
|
||||||
$checkins[] = [
|
$checkins[] = [
|
||||||
'userid' => $UserInfo->userid,
|
'userid' => $UserInfo->userid,
|
||||||
'remark' => $setting['manual_remark'] ?: 'Manual',
|
'remark' => $remark,
|
||||||
];
|
|
||||||
}
|
|
||||||
} elseif (Base::leftExists($mac, "checkin-", true)) {
|
|
||||||
$mac = Base::leftDelete($mac, "checkin-", true);
|
|
||||||
if ($UserInfo = User::whereUserid($mac)->whereBot(0)->first()) {
|
|
||||||
$array = [
|
|
||||||
'userid' => $UserInfo->userid,
|
|
||||||
'mac' => '00:00:00:00:00:00',
|
|
||||||
'date' => $nowDate,
|
|
||||||
];
|
|
||||||
$checkins[] = [
|
|
||||||
'userid' => $UserInfo->userid,
|
|
||||||
'remark' => $setting['face_remark'] ?: 'Machine',
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,6 +63,22 @@ class BotReceiveMsgTask extends AbstractTask
|
|||||||
*/
|
*/
|
||||||
private function botManagerReceive(WebSocketDialogMsg $msg, User $botUser)
|
private function botManagerReceive(WebSocketDialogMsg $msg, User $botUser)
|
||||||
{
|
{
|
||||||
|
// 位置消息
|
||||||
|
if ($msg->type === 'location') {
|
||||||
|
// 签到机器人
|
||||||
|
if ($botUser->email === 'check-in@bot.system') {
|
||||||
|
$content = UserBot::checkinBotQuickMsg('locat-checkin', $msg->userid, $msg->msg);
|
||||||
|
if ($content) {
|
||||||
|
WebSocketDialogMsg::sendMsg(null, $msg->dialog_id, 'template', [
|
||||||
|
'type' => 'content',
|
||||||
|
'content' => $content,
|
||||||
|
], $botUser->userid, false, false, true); // todo 未能在任务end事件来发送任务
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文本消息
|
||||||
if ($msg->type !== 'text') {
|
if ($msg->type !== 'text') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1769,8 +1769,8 @@ export default {
|
|||||||
}
|
}
|
||||||
const thumb = $A.urlAddParams('https://api.map.baidu.com/staticimage/v2', {
|
const thumb = $A.urlAddParams('https://api.map.baidu.com/staticimage/v2', {
|
||||||
ak: item.config.key,
|
ak: item.config.key,
|
||||||
center: `${item.config.lng},${item.config.lat}`,
|
center: `${data.point.lng},${data.point.lat}`,
|
||||||
markers: `${item.config.lng},${item.config.lat}`,
|
markers: `${data.point.lng},${data.point.lat}`,
|
||||||
width: 800,
|
width: 800,
|
||||||
height: 480,
|
height: 480,
|
||||||
zoom: 19,
|
zoom: 19,
|
||||||
@ -1781,6 +1781,7 @@ export default {
|
|||||||
lng: data.point.lng,
|
lng: data.point.lng,
|
||||||
lat: data.point.lat,
|
lat: data.point.lat,
|
||||||
title: data.title,
|
title: data.title,
|
||||||
|
distance: data.distance,
|
||||||
address: data.address || '',
|
address: data.address || '',
|
||||||
thumb
|
thumb
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user