智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
3.7 KiB

<?php
// +----------------------------------------------------------------------
// | 教研管理人员同步定时任务
// +----------------------------------------------------------------------
// | 定时同步教练部人员权限到教研管理模块
// +----------------------------------------------------------------------
namespace app\job\schedule;
use app\service\admin\lesson_course_teaching\LessonCourseTeachingService;
use think\facade\Log;
/**
* 教研管理人员同步定时任务
* Class TeachingPersonnelSync
* @package app\job\schedule
*/
class TeachingPersonnelSync
{
/**
* 执行教研管理人员同步任务
* @return string
*/
public function doJob()
{
try {
Log::info('教研管理人员同步任务开始执行');
$service = new LessonCourseTeachingService();
// 获取配置中的同步设置
$config = config('teaching_management.teaching_management.cron_config.sync_personnel', []);
$enabled = $config['enabled'] ?? true;
// 检查任务是否启用
if (!$enabled) {
$message = '教研管理人员同步任务已禁用';
Log::info($message);
return $message;
}
// 执行批量人员权限同步
$result = $service->batchUpdatePersonnelPermissions();
$message = sprintf(
'教研管理人员同步完成 - 总计: %d, 成功: %d, 失败: %d',
$result['total'],
$result['success'],
$result['failed']
);
Log::info($message, $result);
// 如果有失败的记录,记录详细错误信息
if ($result['failed'] > 0 && !empty($result['errors'])) {
Log::warning('教研管理人员同步部分失败', [
'failed_count' => $result['failed'],
'errors' => $result['errors']
]);
}
return $message;
} catch (\Exception $e) {
$error = '教研管理人员同步任务执行失败: ' . $e->getMessage();
Log::error($error, [
'file' => $e->getFile(),
'line' => $e->getLine(),
'trace' => $e->getTraceAsString()
]);
return $error;
}
}
/**
* 手动执行同步任务(用于测试)
* @param array|null $tableTypes 指定要同步的table_type数组
* @return string
*/
public function manualSync(?array $tableTypes = null)
{
try {
Log::info('手动执行教研管理人员同步任务', ['table_types' => $tableTypes]);
$service = new LessonCourseTeachingService();
// 执行指定模块的批量人员权限同步
$result = $service->batchUpdatePersonnelPermissions($tableTypes);
$message = sprintf(
'手动同步完成 - 总计: %d, 成功: %d, 失败: %d',
$result['total'],
$result['success'],
$result['failed']
);
Log::info($message, $result);
return $message;
} catch (\Exception $e) {
$error = '手动同步任务执行失败: ' . $e->getMessage();
Log::error($error, [
'file' => $e->getFile(),
'line' => $e->getLine()
]);
return $error;
}
}
}