This commit is contained in:
张成
2025-12-29 18:35:57 +08:00
parent 2786202212
commit 8fa06435a9
4 changed files with 864 additions and 93 deletions

View File

@@ -680,13 +680,120 @@ class PlaAccountService {
}
});
const taskId = await scheduleManager.taskQueue.addTask(account.sn_code, {
taskType: taskType,
taskName: `手动任务 - ${taskName}`,
taskParams: {
keyword: account.keyword,
platform: account.platform_type
}
});
return {
message: '任务已添加到队列',
taskId: task.id
taskId: taskId
};
}
/**
* 创建搜索职位列表任务(支持可选投递)
* @param {Object} params - 任务参数
* @param {number} params.id - 账号ID
* @param {string} params.keyword - 搜索关键词
* @param {Object} params.searchParams - 搜索条件(城市、薪资、经验、学历等)
* @param {number} params.pageCount - 获取页数
* @param {boolean} params.autoDeliver - 是否自动投递默认false
* @param {Object} params.filterRules - 过滤规则autoDeliver=true时使用
* @param {number} params.maxCount - 最大投递数量autoDeliver=true时使用
* @returns {Promise<Object>} 任务创建结果 { taskId, message, jobCount, deliveredCount }
*/
async createSearchJobListTask(params) {
const pla_account = db.getModel('pla_account');
const task_status = db.getModel('task_status');
const {
id,
keyword,
searchParams = {},
pageCount = 3,
autoDeliver = false,
filterRules = {},
maxCount = 10
} = params;
// 1. 验证账号和授权
if (!id) {
throw new Error('账号ID不能为空');
}
const account = await pla_account.findByPk(id);
if (!account) {
throw new Error('账号不存在');
}
// 检查账号是否启用
if (!account.is_enabled) {
throw new Error('账号未启用,无法执行任务');
}
// 检查授权状态
const authCheck = await authorizationService.checkAuthorization(id, 'id');
if (!authCheck.is_authorized) {
throw new Error(authCheck.message);
}
// 检查MQTT客户端
if (!scheduleManager.mqttClient) {
throw new Error('MQTT客户端未初始化');
}
const sn_code = account.sn_code;
const platform = account.platform_type || 'boss';
// 2. 创建任务记录(使用新的搜索任务类型)
const taskType = 'search_jobs';
const taskName = autoDeliver ? '搜索并投递职位' : '搜索职位列表';
const task = await task_status.create({
sn_code: sn_code,
taskType: taskType,
taskName: taskName,
taskParams: JSON.stringify({
keyword: keyword || account.keyword || '',
searchParams: searchParams,
pageCount: pageCount,
autoDeliver: autoDeliver,
filterRules: filterRules,
maxCount: maxCount,
platform: platform
}),
status: 'pending',
progress: 0
});
console.log(`[账号服务] 创建搜索任务: ${taskName} (ID: ${task.id}, 设备: ${sn_code})`);
// 3. 将任务添加到队列,由 handleSearchJobListTask 处理
const taskId = await scheduleManager.taskQueue.addTask(sn_code, {
taskType: taskType,
taskName: taskName,
taskParams: {
keyword: keyword || account.keyword || '',
searchParams: searchParams,
pageCount: pageCount,
autoDeliver: autoDeliver,
filterRules: filterRules,
maxCount: maxCount,
platform: platform
}
});
return {
taskId: taskId,
message: `搜索任务已创建任务ID: ${taskId}`,
jobCount: 0,
deliveredCount: 0
};
}
/**