This commit is contained in:
张成
2025-12-29 21:07:52 +08:00
parent 8fa06435a9
commit 5035b9aa72
4 changed files with 134 additions and 18 deletions

View File

@@ -144,7 +144,7 @@ class JobManager {
}
/**
* 多条件搜索职位列表(新指令)
* 多条件搜索职位列表(新指令使用新的MQTT action
* @param {string} sn_code - 设备SN码
* @param {object} mqttClient - MQTT客户端
* @param {object} params - 搜索参数
@@ -249,7 +249,7 @@ class JobManager {
console.log(`[工作管理] 开始搜索并投递职位,设备: ${sn_code}, 关键词: ${keyword}`);
// 1. 先执行搜索
// 1. 先执行搜索使用search_jobs_with_params新的搜索指令
const searchResult = await this.search_jobs_with_params(sn_code, mqttClient, {
keyword,
platform,
@@ -360,15 +360,16 @@ class JobManager {
console.warn(`[工作管理] 解析职位原始数据失败:`, e);
}
// 执行投递
const deliverResult = await this.applyJob(sn_code, mqttClient, {
// 执行投递使用新的deliver_resume_search action
const deliverResult = await this.deliver_resume(sn_code, mqttClient, {
jobId: jobData.jobId,
encryptBossId: jobData.encryptBossId || '',
securityId: securityId,
brandName: jobData.companyName || '',
jobTitle: jobData.jobTitle || '',
companyName: jobData.companyName || '',
platform: platform
platform: platform,
action: 'deliver_resume_search' // 搜索并投递使用新的action
});
if (deliverResult && deliverResult.success) {
@@ -394,14 +395,99 @@ class JobManager {
}
/**
* 获取岗位列表
* 获取岗位列表(支持多条件搜索)
* @param {string} sn_code - 设备SN码
* @param {object} mqttClient - MQTT客户端
* @param {object} params - 参数
* @returns {Promise<object>} 岗位列表
*/
async get_job_list(sn_code, mqttClient, params = {}) {
const { keyword = '前端', platform = 'boss', pageCount = 3 } = params;
const {
keyword = '前端',
platform = 'boss',
pageCount = 3,
city = '',
cityName = '',
salary = '',
experience = '',
education = '',
industry = '',
companySize = '',
financingStage = '',
page = 1,
pageSize = 20
} = params;
// 判断是否是多条件搜索(如果包含多条件参数,使用多条件搜索逻辑)
const hasMultiParams = city || cityName || salary || experience || education ||
industry || companySize || financingStage || page || pageSize;
if (hasMultiParams) {
// 使用多条件搜索逻辑
console.log(`[工作管理] 开始多条件搜索设备 ${sn_code} 的职位,关键词: ${keyword}, 城市: ${cityName || city}`);
// 构建完整的搜索参数对象
const searchData = {
keyword,
pageCount
};
// 添加可选搜索条件
if (city) searchData.city = city;
if (cityName) searchData.cityName = cityName;
if (salary) searchData.salary = salary;
if (experience) searchData.experience = experience;
if (education) searchData.education = education;
if (industry) searchData.industry = industry;
if (companySize) searchData.companySize = companySize;
if (financingStage) searchData.financingStage = financingStage;
if (page) searchData.page = page;
if (pageSize) searchData.pageSize = pageSize;
// 通过MQTT指令获取岗位列表保持action不变前端已使用
const response = await mqttClient.publishAndWait(sn_code, {
platform,
action: "get_job_list", // 保持与原有get_job_list相同的action前端已使用
data: searchData
});
if (!response || response.code !== 200) {
console.error(`[工作管理] 多条件搜索职位失败:`, response);
throw new Error('多条件搜索职位失败');
}
// 处理职位列表数据
let jobs = [];
if (Array.isArray(response.data)) {
for (const item of response.data) {
if (item.data?.zpData?.jobList && Array.isArray(item.data.zpData.jobList)) {
jobs = jobs.concat(item.data.zpData.jobList);
}
}
} else if (response.data?.data?.zpData?.jobList) {
jobs = response.data.data.zpData.jobList || [];
} else if (response.data?.zpData?.jobList) {
jobs = response.data.zpData.jobList || [];
}
console.log(`[工作管理] 成功获取岗位数据,共 ${jobs.length} 个岗位`);
// 保存职位到数据库
try {
await this.saveJobsToDatabase(sn_code, platform, keyword, jobs);
} catch (error) {
console.error(`[工作管理] 保存职位到数据库失败:`, error);
}
return {
jobs: jobs,
keyword: keyword,
platform: platform,
count: jobs.length
};
}
// 简单搜索逻辑(保持原有逻辑)
console.log(`[工作管理] 开始获取设备 ${sn_code} 的岗位列表,关键词: ${keyword}`);
// 通过MQTT指令获取岗位列表
@@ -570,10 +656,11 @@ class JobManager {
* @param {string} params.brandName - 公司名称(可选)
* @param {string} params.jobTitle - 职位标题(可选)
* @param {string} params.companyName - 公司名称(可选)
* @param {string} params.action - MQTT Action默认deliver_resume可选deliver_resume_search
* @returns {Promise<object>} 投递结果
*/
async applyJob(sn_code, mqttClient, params = {}) {
const { platform = 'boss', jobId, encryptBossId, securityId, brandName, jobTitle, companyName } = params;
async deliver_resume(sn_code, mqttClient, params = {}) {
const { platform = 'boss', jobId, encryptBossId, securityId, brandName, jobTitle, companyName, action = 'deliver_resume' } = params;
if (!jobId) {
throw new Error('jobId 参数不能为空请指定要投递的职位ID');
@@ -651,10 +738,10 @@ class JobManager {
console.log(`[工作管理] 投递职位: ${jobData.jobTitle} @ ${jobData.companyName}`);
// 通过MQTT指令投递简历
// 通过MQTT指令投递简历支持自定义action
const response = await mqttClient.publishAndWait(sn_code, {
platform,
action: "deliver_resume",
action: action, // 使用传入的action参数默认为"deliver_resume"
data: {
encryptJobId: jobData.jobId,
securityId: jobData.securityId || securityId || '',