diff --git a/client-api/src/main/java/org/jiayunet/controller/JobController.java b/client-api/src/main/java/org/jiayunet/controller/JobController.java index 093f1f8..5d188cf 100644 --- a/client-api/src/main/java/org/jiayunet/controller/JobController.java +++ b/client-api/src/main/java/org/jiayunet/controller/JobController.java @@ -169,4 +169,19 @@ public class JobController { Long userId = UserSecurityTool.getUserId(); return jobService.recommendJobs(param, userId); } + + /** + * 根据岗位来源地址查询岗位信息 + *

通过岗位的原始链接(如招聘网站URL)查询对应的岗位信息

+ */ + @GetMapping("/findByUrl") + public JobDto findJobBySourceUrl(@RequestParam String sourceUrl) { + Long userId = 0L; + try { + userId = UserSecurityTool.getUserId(); + } catch (Exception e) { + // 接口允许不登录,不处理 + } + return jobService.findJobBySourceUrl(sourceUrl, userId); + } } diff --git a/client-api/src/main/java/org/jiayunet/service/JobService.java b/client-api/src/main/java/org/jiayunet/service/JobService.java index 4457a5f..236c1c5 100644 --- a/client-api/src/main/java/org/jiayunet/service/JobService.java +++ b/client-api/src/main/java/org/jiayunet/service/JobService.java @@ -719,4 +719,27 @@ public class JobService { } } + /** + * 根据岗位来源地址查询岗位信息 + *

1. 通过 sourceUrl 查询岗位ID

+ *

2. 复用 listJobs 查询岗位详情

+ */ + public JobDto findJobBySourceUrl(String sourceUrl, Long userId) { + // 1. 通过 sourceUrl 查询岗位 + Job job = jobMapper.selectOne(new LambdaQueryWrapper().eq(Job::getSourceUrl, sourceUrl).select(Job::getId).last("LIMIT 1")); + if (job == null) { + return null; + } + + // 2. 复用 listJobs 查询 + JobQueryParam queryParam = new JobQueryParam(); + queryParam.setPageNum(1); + queryParam.setPageSize(1); + queryParam.setJobIds(Collections.singletonList(job.getId())); + queryParam.setStatusFilter(Arrays.asList(0, 1, 2)); + + PageResult result = listJobs(queryParam, userId); + return result.getList().isEmpty() ? null : result.getList().get(0); + } + }