perf: 时间范围任务
This commit is contained in:
parent
6c34f083e3
commit
663a8bb06d
@ -34,16 +34,10 @@ class ProjectController extends AbstractController
|
|||||||
$data = [];
|
$data = [];
|
||||||
|
|
||||||
// 今日待完成
|
// 今日待完成
|
||||||
$between = [
|
|
||||||
Carbon::today()->startOfDay(),
|
|
||||||
Carbon::today()->endOfDay()
|
|
||||||
];
|
|
||||||
$data['today'] = ProjectTask::authData(null, true)->whereParentId(0)
|
$data['today'] = ProjectTask::authData(null, true)->whereParentId(0)
|
||||||
->whereNull('archived_at')
|
->whereNull('archived_at')
|
||||||
->whereNull('complete_at')
|
->whereNull('complete_at')
|
||||||
->where(function ($query) use ($between) {
|
->betweenTime(Carbon::today()->startOfDay(), Carbon::today()->endOfDay())
|
||||||
$query->whereBetween('start_at', $between)->orWhereBetween('end_at', $between);
|
|
||||||
})
|
|
||||||
->count();
|
->count();
|
||||||
|
|
||||||
// 超期未完成
|
// 超期未完成
|
||||||
@ -610,13 +604,7 @@ class ProjectController extends AbstractController
|
|||||||
$builder->whereNotNull('end_at')->where('end_at', '<', Carbon::parse($time_before));
|
$builder->whereNotNull('end_at')->where('end_at', '<', Carbon::parse($time_before));
|
||||||
} elseif (is_array($time)) {
|
} elseif (is_array($time)) {
|
||||||
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
||||||
$between = [
|
$builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay());
|
||||||
Carbon::parse($time[0])->startOfDay(),
|
|
||||||
Carbon::parse($time[1])->endOfDay()
|
|
||||||
];
|
|
||||||
$builder->where(function ($query) use ($between) {
|
|
||||||
$query->whereBetween('start_at', $between)->orWhereBetween('end_at', $between);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
@ -54,6 +54,7 @@ use Request;
|
|||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTaskUser[] $taskUser
|
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTaskUser[] $taskUser
|
||||||
* @property-read int|null $task_user_count
|
* @property-read int|null $task_user_count
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask authData($userid = null, $owner = false)
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask authData($userid = null, $owner = false)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask betweenTime($start, $end)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery()
|
||||||
* @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed()
|
* @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed()
|
||||||
@ -283,6 +284,27 @@ class ProjectTask extends AbstractModel
|
|||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定范围内的任务
|
||||||
|
* @param $query
|
||||||
|
* @param $start
|
||||||
|
* @param $end
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function scopeBetweenTime($query, $start, $end)
|
||||||
|
{
|
||||||
|
$query->where(function ($q1) use ($start, $end) {
|
||||||
|
$q1->where(function ($q2) use ($start) {
|
||||||
|
$q2->where('start_at', '<=', $start)->where('end_at', '>=', $start);
|
||||||
|
})->orWhere(function ($q2) use ($end) {
|
||||||
|
$q2->where('start_at', '<=', $end)->where('end_at', '>=', $end);
|
||||||
|
})->orWhere(function ($q2) use ($start, $end) {
|
||||||
|
$q2->where('start_at', '>', $start)->where('end_at', '<', $end);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加任务
|
* 添加任务
|
||||||
* @param $data
|
* @param $data
|
||||||
|
@ -172,7 +172,7 @@ export default {
|
|||||||
data._end_time = end;
|
data._end_time = end;
|
||||||
switch (dashboard) {
|
switch (dashboard) {
|
||||||
case 'today':
|
case 'today':
|
||||||
return (start >= todayStart && start <= todayEnd) || (end >= todayStart && end <= todayEnd);
|
return (start <= todayStart && todayStart <= end) || (start <= todayEnd && todayEnd <= end) || (start > todayStart && todayEnd > end);
|
||||||
case 'overdue':
|
case 'overdue':
|
||||||
return end <= todayStart;
|
return end <= todayStart;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user