mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 12:02:51 +00:00
perf: 请假或外出时取消打卡提醒
This commit is contained in:
parent
dd0720afa7
commit
bcc74dd927
@ -16,6 +16,7 @@ use App\Tasks\PushTask;
|
|||||||
use App\Module\BillExport;
|
use App\Module\BillExport;
|
||||||
use App\Models\WebSocketDialog;
|
use App\Models\WebSocketDialog;
|
||||||
use App\Models\ApproveProcMsg;
|
use App\Models\ApproveProcMsg;
|
||||||
|
use App\Models\ApproveProcInstHistory;
|
||||||
use App\Exceptions\ApiException;
|
use App\Exceptions\ApiException;
|
||||||
use App\Models\UserDepartment;
|
use App\Models\UserDepartment;
|
||||||
use App\Models\WebSocketDialogMsg;
|
use App\Models\WebSocketDialogMsg;
|
||||||
@ -1146,13 +1147,9 @@ class ApproveController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function user__status()
|
public function user__status()
|
||||||
{
|
{
|
||||||
$data['userid'] = intval(Request::input('userid'));
|
$userid = intval(Request::input('userid'));
|
||||||
$ret = Ihttp::ihttp_get($this->flow_url . '/api/v1/workflow/process/getUserApprovalStatus?' . http_build_query($data));
|
$status = ApproveProcInstHistory::getUserApprovalStatus($userid);
|
||||||
$procdef = json_decode($ret['ret'] == 1 ? $ret['data'] : '{}', true);
|
return Base::retSuccess('success', $status);
|
||||||
if (isset($procdef['status']) && $procdef['status'] == 200) {
|
|
||||||
return Base::retSuccess('success', $procdef['data']["proc_def_name"] ?? '');
|
|
||||||
}
|
|
||||||
return Base::retSuccess('success', '');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
45
app/Models/ApproveProcInstHistory.php
Normal file
45
app/Models/ApproveProcInstHistory.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Cache;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use DB;
|
||||||
|
|
||||||
|
class ApproveProcInstHistory extends AbstractModel
|
||||||
|
{
|
||||||
|
protected $table = 'approve_proc_inst_history';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户审批状态(请假、外出)
|
||||||
|
* @param $userid
|
||||||
|
* @return mixed|null
|
||||||
|
*/
|
||||||
|
public static function getUserApprovalStatus($userid)
|
||||||
|
{
|
||||||
|
if (empty($userid)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return Cache::remember('user_is_leave_' . $userid, Carbon::now()->addMinute(), function () use ($userid) {
|
||||||
|
return self::where([
|
||||||
|
['start_user_id', '=', $userid],
|
||||||
|
[DB::raw("JSON_UNQUOTE(JSON_EXTRACT(var, '$.startTime'))"), '<=', Carbon::now()->toDateTimeString()],
|
||||||
|
[DB::raw("JSON_UNQUOTE(JSON_EXTRACT(var, '$.endTime'))"), '>=', Carbon::now()->toDateTimeString()],
|
||||||
|
['state', '=', 2]
|
||||||
|
])->where(function ($query) {
|
||||||
|
$query->where('proc_def_name', 'like', '%请假%')
|
||||||
|
->orWhere('proc_def_name', 'like', '%外出%');
|
||||||
|
})->orderByDesc('id')->value('proc_def_name');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断用户是否请假(包含:请假、外出)
|
||||||
|
* @param $userid
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function userIsLeave($userid)
|
||||||
|
{
|
||||||
|
return (bool)self::getUserApprovalStatus($userid);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Tasks;
|
namespace App\Tasks;
|
||||||
|
|
||||||
|
use App\Models\ApproveProcInstHistory;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\UserCheckinRecord;
|
use App\Models\UserCheckinRecord;
|
||||||
use App\Models\WebSocketDialog;
|
use App\Models\WebSocketDialog;
|
||||||
use App\Models\WebSocketDialogMsg;
|
use App\Models\WebSocketDialogMsg;
|
||||||
use App\Module\Base;
|
use App\Module\Base;
|
||||||
use App\Module\Doo;
|
|
||||||
use App\Module\Extranet;
|
use App\Module\Extranet;
|
||||||
use App\Module\Timer;
|
use App\Module\Timer;
|
||||||
use Cache;
|
use Cache;
|
||||||
@ -82,6 +82,9 @@ class CheckinRemindTask extends AbstractTask
|
|||||||
if (!UserCheckinRecord::whereUserid($user->userid)->where('created_at', '>', Carbon::now()->subDays(3))->exists()) {
|
if (!UserCheckinRecord::whereUserid($user->userid)->where('created_at', '>', Carbon::now()->subDays(3))->exists()) {
|
||||||
continue; // 3天内没有打卡
|
continue; // 3天内没有打卡
|
||||||
}
|
}
|
||||||
|
if (ApproveProcInstHistory::userIsLeave($user->userid)) {
|
||||||
|
continue; // 请假、外出
|
||||||
|
}
|
||||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $user->userid);
|
$dialog = WebSocketDialog::checkUserDialog($botUser, $user->userid);
|
||||||
if ($dialog) {
|
if ($dialog) {
|
||||||
if ($type === 'exceed') {
|
if ($type === 'exceed') {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user