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
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;
|
|
}
|
|
}
|
|
}
|