diff --git a/app/Http/Controllers/Api/PublicController.php b/app/Http/Controllers/Api/PublicController.php index ea19fd2ac..14ee037fa 100755 --- a/app/Http/Controllers/Api/PublicController.php +++ b/app/Http/Controllers/Api/PublicController.php @@ -65,7 +65,9 @@ class PublicController extends AbstractController } /** - * {post} 签到 - 路由器(openwrt)上报 + * {post} 签到 - 上报 + * - 1、路由器(openwrt)签到上报 + * - 2、考勤机签到上报 * * @apiParam {String} key * @apiParam {String} mac 使用逗号分割多个 @@ -84,6 +86,7 @@ class PublicController extends AbstractController if ($setting['open'] !== 'open') { return 'function off'; } + $alreadyTip = false; if ($type === 'face') { if (!in_array('face', $setting['modes'])) { return 'mode off'; @@ -91,6 +94,7 @@ class PublicController extends AbstractController if ($key != $setting['face_key']) { return 'key error'; } + $alreadyTip = $setting['face_retip'] === 'open'; } else { if (!in_array('auto', $setting['modes'])) { return 'mode off'; @@ -99,8 +103,7 @@ class PublicController extends AbstractController return 'key error'; } } - - if ($error = UserBot::checkinBotCheckin($mac, $time)) { + if ($error = UserBot::checkinBotCheckin($mac, $time, $alreadyTip)) { return $error; } return 'success'; diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index 055256e4e..82984f641 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -399,7 +399,10 @@ class SystemController extends AbstractController 'remindin', 'remindexceed', 'edit', - 'faceupload', + 'face_upload', + 'face_remark', + 'face_retip', + 'manual_remark', 'modes', 'key', ])) { @@ -433,7 +436,10 @@ class SystemController extends AbstractController } // $setting['open'] = $setting['open'] ?: 'close'; - $setting['faceupload'] = $setting['faceupload'] ?: 'close'; + $setting['face_upload'] = $setting['face_upload'] ?: 'close'; + $setting['face_remark'] = $setting['face_remark'] ?: Doo::translate('考勤机'); + $setting['face_retip'] = $setting['face_retip'] ?: 'open'; + $setting['manual_remark'] = $setting['manual_remark'] ?: Doo::translate('手动签到'); $setting['time'] = $setting['time'] ? Base::json2array($setting['time']) : ['09:00', '18:00']; $setting['advance'] = intval($setting['advance']) ?: 120; $setting['delay'] = intval($setting['delay']) ?: 120; diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 8e87dc02c..6ba776532 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -1680,7 +1680,11 @@ class UsersController extends AbstractController * @apiGroup users * @apiName checkin__save * - * @apiParam {Array} list 优先级数据,格式:[{mac,remark}] + * @apiParam {String} type 类型 + * - face: 人脸识别设置 + * - mac: MAC设置 + * @apiParam {String} faceimg 人脸图片地址 + * @apiParam {Array} list 优先级数据,格式:[{mac,remark}] * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -1694,52 +1698,52 @@ class UsersController extends AbstractController if ($setting['open'] !== 'open') { return Base::retError('此功能未开启,请联系管理员开启'); } - if ($setting['edit'] !== 'open' && $setting['faceupload'] !== 'open') { - return Base::retError('未开放修改权限,请联系管理员'); - } // + $type = Request::input('type'); $list = Request::input('list'); $faceimg = Request::input('faceimg'); - // 默认返回值,使用用户传递数据 + // $data = [ 'list' => $list, 'faceimg' => $faceimg ]; - // 当mac允许修改 - if ($setting['edit' === 'open']) { - $array = []; - if (empty($list) || !is_array($list)) { - return Base::retError('参数错误'); - } - foreach ($list AS $item) { - $item = Base::newTrim($item); - if (Base::isMac($item['mac'])) { - $mac = strtoupper($item['mac']); - $array[$mac] = [ - 'mac' => $mac, - 'remark' => substr($item['remark'], 0, 50), - ]; + switch ($type) { + case 'face': + if ($setting['face_upload'] !== 'open') { + return Base::retError('未开放修改权限,请联系管理员'); } - } - if (count($array) > 3) { - return Base::retError('最多只能添加3个MAC地址'); - } - $saveMacRes = UserCheckinMac::saveMac($user->userid, $array); - $data['list'] = $saveMacRes['data']; - } else { - $list = UserCheckinMac::whereUserid($user->userid)->orderBy('id')->get(); - $data['list'] = $list; + UserCheckinFace::saveFace($user->userid, $user->nickname(), $faceimg, "用户上传"); + break; + + case 'mac': + if ($setting['edit'] !== 'open') { + return Base::retError('未开放修改权限,请联系管理员'); + } + $array = []; + if (empty($list) || !is_array($list)) { + return Base::retError('参数错误'); + } + foreach ($list as $item) { + $item = Base::newTrim($item); + if (Base::isMac($item['mac'])) { + $mac = strtoupper($item['mac']); + $array[$mac] = [ + 'mac' => $mac, + 'remark' => substr($item['remark'], 0, 50), + ]; + } + } + if (count($array) > 3) { + return Base::retError('最多只能添加3个MAC地址'); + } + $saveMacRes = UserCheckinMac::saveMac($user->userid, $array); + $data['list'] = $saveMacRes['data']; + break; + + default: + return Base::retError('参数错误'); } - - - // 当图片允许修改 - if ($setting['faceupload'] === 'open') { - UserCheckinFace::saveFace($user->userid, $user->nickname(), $faceimg, "用户上传"); - } else { - $userface = UserCheckinFace::whereUserid($user->userid)->first(); - $data['faceimg'] = $userface; - } - + // return Base::retSuccess('修改成功', $data); } diff --git a/app/Models/UserBot.php b/app/Models/UserBot.php index dc20f3642..d9b75d3b3 100644 --- a/app/Models/UserBot.php +++ b/app/Models/UserBot.php @@ -231,7 +231,7 @@ class UserBot extends AbstractModel ]; $checkins[] = [ 'userid' => $UserInfo->userid, - 'remark' => '手动签到', + 'remark' => $setting['manual_remark'] ?: 'Manual', ]; } } elseif (Base::leftExists($mac, "checkin-", true)) { @@ -244,7 +244,7 @@ class UserBot extends AbstractModel ]; $checkins[] = [ 'userid' => $UserInfo->userid, - 'remark' => '考勤机', + 'remark' => $setting['face_remark'] ?: 'Machine', ]; } } @@ -278,6 +278,7 @@ class UserBot extends AbstractModel if (Cache::get($cacheKey) === "yes") { if ($alreadyTip && $dialog = WebSocketDialog::checkUserDialog($botUser, $checkin['userid'])) { $text = "今日已{$typeContent}打卡,无需重复打卡。"; + $text .= $checkin['remark'] ? " ({$checkin['remark']})": ""; WebSocketDialogMsg::sendMsg(null, $dialog->id, 'template', [ 'type' => 'content', 'content' => $text, diff --git a/resources/assets/js/pages/manage/components/TeamManagement.vue b/resources/assets/js/pages/manage/components/TeamManagement.vue index 3dda810fe..337bbaa7b 100644 --- a/resources/assets/js/pages/manage/components/TeamManagement.vue +++ b/resources/assets/js/pages/manage/components/TeamManagement.vue @@ -1147,7 +1147,7 @@ export default { type: data.type, userid: data.userid, nickname: data.nickname, - checkin_face: data.faceimg[0] ? data.faceimg[0].url : '' + checkin_face: $A.arrayLength(data.faceimg) > 0 ? data.faceimg[0].url : '' } } else if (data.type == 'department') { this.departmentEditLoading++; diff --git a/resources/assets/js/pages/manage/setting/checkin.vue b/resources/assets/js/pages/manage/setting/checkin.vue index a7b59a8ba..e8b792302 100644 --- a/resources/assets/js/pages/manage/setting/checkin.vue +++ b/resources/assets/js/pages/manage/setting/checkin.vue @@ -20,7 +20,7 @@ {{ $L('签到设置') }}
- + {{ $L('人脸图片') }} @@ -84,14 +84,13 @@ export default { loadIng: 0, formData: [], - faceimgs: [], nullDatum: { 'mac': '', 'remark': '', }, - checkinTabs: "receive", + checkinTabs: "face", latelyLoad: 0, latelyData: [], @@ -144,12 +143,16 @@ export default { remark: item.remark.trim() } }); - const faceimg = this.faceimgs ? this.faceimgs[0].url : '' + const faceimg = $A.arrayLength(this.faceimgs) > 0 ? this.faceimgs[0].url : '' // this.loadIng++; this.$store.dispatch("call", { url: 'users/checkin/save', - data: {list, faceimg}, + data: { + type: this.checkinTabs, + list, + faceimg, + }, method: 'post', }).then(({data}) => { this.formData = data.list; diff --git a/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue b/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue index 0f71c5221..24f1e7999 100644 --- a/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue +++ b/resources/assets/js/pages/manage/setting/components/SystemCheckin.vue @@ -56,7 +56,7 @@ - + {{ $L('允许') }} {{ $L('禁止') }} @@ -69,13 +69,13 @@ - {{$L('WiFi签到')}} {{$L('人脸签到')}} + {{$L('WiFi签到')}} {{$L('手动签到')}} {{$L('定位签到')}} -
{{$L('WiFi签到')}}: {{$L('详情看下文安装说明')}}
{{$L('人脸签到')}}: {{$L('通过人脸识别机签到')}}
+
{{$L('WiFi签到')}}: {{$L('详情看下文安装说明')}}
{{$L('手动签到')}}: {{$L('通过在签到打卡机器人发送指令签到')}}
{{$L('定位签到')}}: {{$L('通过在签到打卡机器人发送位置签到')}}
@@ -83,21 +83,51 @@
-