Browse Source

新增定时任务

master
王泽彦 9 months ago
parent
commit
c47c998b66
  1. 100
      niucloud/app/job/transfer/schedule/CourseScheduleJob.php
  2. 46
      niucloud/app/job/transfer/schedule/ResourceAutoAllocation.php

100
niucloud/app/job/transfer/schedule/CourseScheduleJob.php

@ -0,0 +1,100 @@
<?php
namespace app\job\transfer\schedule;
use app\model\course_schedule\CourseSchedule;
use core\base\BaseJob;
class CourseScheduleJob extends BaseJob
{
/**
* 处理自动排课数据,按月份检查并插入不存在的课程
* @param int $month 月份(1-12)
* @param int $year 年份
* @return array 处理结果
*/
public function processAutoSchedule($month, $year)
{
// 获取所有auto_schedule=1的课程
$autoSchedules = CourseSchedule::where('auto_schedule', 1)->where('course_date', date('Y-m-d'))->select();
$results = [];
foreach ($autoSchedules as $schedule) {
// 构造课程日期(基于给定的月份和年份)
$courseDate = $this->getCourseDate($schedule->course_date, $month, $year);
// 检查该月份是否有相同的课程安排
$exists = $this->checkCourseExists($schedule, $courseDate);
if (!$exists) {
// 如果不存在,则插入新的课程安排
$newSchedule = $this->createNewSchedule($schedule, $courseDate);
$results[] = [
'status' => 'inserted',
'schedule' => $newSchedule
];
} else {
$results[] = [
'status' => 'exists',
'schedule' => $schedule
];
}
}
return $results;
}
/**
* 根据原始课程日期和目标月份、年份计算新的课程日期
* @param string $originalDate 原始课程日期(格式:Y-m-d)
* @param int $targetMonth 目标月份
* @param int $targetYear 目标年份
* @return string 新的课程日期
*/
protected function getCourseDate($originalDate, $targetMonth, $targetYear)
{
$date = \DateTime::createFromFormat('Y-m-d', $originalDate);
$date->setDate($targetYear, $targetMonth, $date->format('d'));
return $date->format('Y-m-d');
}
/**
* 检查指定月份是否有相同的课程安排
* @param CourseSchedule $schedule 原始课程安排
* @param string $courseDate 课程日期
* @return bool 是否存在
*/
protected function checkCourseExists(CourseSchedule $schedule, $courseDate)
{
$exists = CourseSchedule::where(function ($query) use ($schedule, $courseDate) {
$query->where('campus_id', $schedule->campus_id)
->where('venue_id', $schedule->venue_id)
->where('course_date', $courseDate)
->where('time_slot', $schedule->time_slot)
->where('course_id', $schedule->course_id);
})->count();
return $exists > 0;
}
/**
* 创建新的课程安排
* @param CourseSchedule $schedule 原始课程安排
* @param string $courseDate 课程日期
* @return CourseSchedule 新创建的课程安排
*/
protected function createNewSchedule(CourseSchedule $schedule, $courseDate)
{
$newSchedule = new CourseSchedule();
$newSchedule->campus_id = $schedule->campus_id;
$newSchedule->venue_id = $schedule->venue_id;
$newSchedule->course_date = $courseDate;
$newSchedule->time_slot = $schedule->time_slot;
$newSchedule->course_id = $schedule->course_id;
$newSchedule->auto_schedule = 1;
// 复制其他需要的字段...
$newSchedule->save();
return $newSchedule;
}
}

46
niucloud/app/job/transfer/schedule/ResourceAutoAllocation.php

@ -0,0 +1,46 @@
<?php
namespace app\job\transfer\schedule;
use core\base\BaseJob;
use think\facade\Log;
/**
* 自动分配资源
*/
class ResourceAutoAllocation extends BaseJob
{
public function doJob()
{
Log::write('自动分配资源');
}
/**
* 获取销售人员
*/
public function getSalesman()
{
Log::write('获取销售人员');
}
/**
* 获取资源
*/
public function getResource()
{
Log::write('获取资源');
course_schedule
::where('status', 1)->select();
}
/**
* 按照现在销售人员的资源拥有情况分配资源
*/
public function allocateResource()
{
Log::write('按照现在销售人员的资源拥有情况分配资源');
}
}
Loading…
Cancel
Save