diff --git a/client-api/src/main/java/org/jiayunet/controller/RecruitAnnouncementController.java b/client-api/src/main/java/org/jiayunet/controller/RecruitAnnouncementController.java index 52044c5..034b658 100644 --- a/client-api/src/main/java/org/jiayunet/controller/RecruitAnnouncementController.java +++ b/client-api/src/main/java/org/jiayunet/controller/RecruitAnnouncementController.java @@ -2,6 +2,7 @@ package org.jiayunet.controller; import lombok.AllArgsConstructor; import org.jiayunet.pojo.PageResult; +import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementDetailDto; import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementDto; import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementStatisticsDto; import org.jiayunet.pojo.param.recruitAnnouncement.RecruitAnnouncementQueryParam; @@ -49,6 +50,12 @@ public class RecruitAnnouncementController { return recruitAnnouncementService.pageAnnouncement(param); } + /** 查询公告详情 */ + @GetMapping("/detail") + public RecruitAnnouncementDetailDto getDetail(@RequestParam Long id) { + return recruitAnnouncementService.getDetail(id); + } + /** 根据公告id查询公告地址 */ @GetMapping("/announcementUrl") public String getAnnouncementUrl(@RequestParam Long id) { diff --git a/client-api/src/main/java/org/jiayunet/pojo/dto/recruitAnnouncement/RecruitAnnouncementDetailDto.java b/client-api/src/main/java/org/jiayunet/pojo/dto/recruitAnnouncement/RecruitAnnouncementDetailDto.java new file mode 100644 index 0000000..9e85375 --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/pojo/dto/recruitAnnouncement/RecruitAnnouncementDetailDto.java @@ -0,0 +1,103 @@ +package org.jiayunet.pojo.dto.recruitAnnouncement; + +import lombok.Data; + +import java.time.Instant; +import java.util.List; + +/** + * 招聘公告详情返回 + *

公告主表字段(不含公告地址/投递地址/投递邮箱)+ 公司logo与类型 + 全部多值维度

+ * + * @author zk + */ +@Data +public class RecruitAnnouncementDetailDto { + + /** 公告ID */ + private Long id; + + /** 公司ID */ + private Long companyId; + + /** 公司名称 */ + private String companyName; + + /** 公司logo */ + private String logoUrl; + + /** 公司类型 */ + private String companyType; + + /** 公告标题 */ + private String title; + + /** 公司简介 */ + private String companyIntro; + + /** 面向对象,如2027届本硕博 */ + private String targetAudience; + + /** 专业要求 */ + private String majorRequire; + + /** 招聘岗位 */ + private String recruitPosition; + + /** 备注 */ + private String remark; + + /** 是否笔试:有 / 无 / 未明确 */ + private String writtenExam; + + /** 投递开始时间 */ + private Instant applyStartTime; + + /** 投递结束时间 */ + private Instant applyEndTime; + + /** 投递截止描述 */ + private String applyEndDesc; + + /** 专属内推码 */ + private String inviteCode; + + /** 信息来源说明 */ + private String source; + + /** 公告发布/更新时间 */ + private Instant publishTime; + + /** 清洗状态:0-清洗中 1-清洗完成 */ + private Integer cleanStatus; + + /** 状态:0-失效 1-有效 */ + private Integer status; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; + + /** 行业列表 */ + private List industryNames; + + /** 岗位大类列表 */ + private List categoryNames; + + /** 热招城市列表 */ + private List cityNames; + + /** 学历要求列表 */ + private List educationNames; + + /** 招聘届数列表 */ + private List recruitYears; + + /** 批次列表 */ + private List batchNames; + + /** 标签列表 */ + private List tagNames; +} diff --git a/client-api/src/main/java/org/jiayunet/service/RecruitAnnouncementService.java b/client-api/src/main/java/org/jiayunet/service/RecruitAnnouncementService.java index 894f841..d853b36 100644 --- a/client-api/src/main/java/org/jiayunet/service/RecruitAnnouncementService.java +++ b/client-api/src/main/java/org/jiayunet/service/RecruitAnnouncementService.java @@ -3,6 +3,9 @@ package org.jiayunet.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +import org.jiayunet.exception.BusinessException; +import org.jiayunet.exception.BusinessExpCodeEnum; +import org.jiayunet.mapper.CompanyMapper; import org.jiayunet.mapper.RecruitAnnouncementBatchMapper; import org.jiayunet.mapper.RecruitAnnouncementMapper; import org.jiayunet.mapper.RecruitAnnouncementCategoryMapper; @@ -12,15 +15,18 @@ import org.jiayunet.mapper.RecruitAnnouncementIndustryMapper; import org.jiayunet.mapper.RecruitAnnouncementTagMapper; import org.jiayunet.mapper.RecruitAnnouncementYearMapper; import org.jiayunet.pojo.PageResult; +import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementDetailDto; import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementDto; import org.jiayunet.pojo.dto.recruitAnnouncement.RecruitAnnouncementStatisticsDto; import org.jiayunet.pojo.param.recruitAnnouncement.RecruitAnnouncementQueryParam; +import org.jiayunet.pojo.po.Company; import org.jiayunet.pojo.po.RecruitAnnouncement; import org.jiayunet.pojo.po.RecruitAnnouncementBatch; import org.jiayunet.pojo.po.RecruitAnnouncementCategory; import org.jiayunet.pojo.po.RecruitAnnouncementCity; import org.jiayunet.pojo.po.RecruitAnnouncementEducation; import org.jiayunet.pojo.po.RecruitAnnouncementIndustry; +import org.jiayunet.pojo.po.RecruitAnnouncementTag; import org.jiayunet.pojo.po.RecruitAnnouncementYear; import org.jiayunet.pojo.vo.RecruitAnnouncementListItemVo; import org.jiayunet.pojo.vo.RecruitAnnouncementStatisticsVo; @@ -55,6 +61,9 @@ public class RecruitAnnouncementService { @Autowired private RecruitAnnouncementMapper recruitAnnouncementMapper; + @Autowired + private CompanyMapper companyMapper; + @Autowired private RecruitAnnouncementBatchMapper batchMapper; @@ -124,6 +133,40 @@ public class RecruitAnnouncementService { return new PageResult<>(page.getCurrent(), page.getSize(), page.getTotal(), dtoList); } + /** + * 查询公告详情 + *

1. 查公告主表(不存在或已失效则报错) 2. 补公司logo与类型 3. 按公告id查7张从表组装多值维度

+ */ + public RecruitAnnouncementDetailDto getDetail(Long id) { + + // 查询公告 + RecruitAnnouncement announcement = recruitAnnouncementMapper.selectById(id); + if (announcement == null || announcement.getStatus() == 0 || announcement.getCleanStatus() == 0) { + throw new BusinessException(BusinessExpCodeEnum.DATA_NOT_EXIST, "公告不存在"); + } + RecruitAnnouncementDetailDto dto = new RecruitAnnouncementDetailDto(); + BeanUtils.copyProperties(announcement, dto); + + // 补公司logo与类型 + if (announcement.getCompanyId() != null) { + Company company = companyMapper.selectOne(new LambdaQueryWrapper().select(Company::getLogoUrl, Company::getCompanyType).eq(Company::getId, announcement.getCompanyId())); + if (company != null) { + dto.setLogoUrl(company.getLogoUrl()); + dto.setCompanyType(company.getCompanyType()); + } + } + + // 组装多值维度 + dto.setIndustryNames(industryMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementIndustry::getAnnouncementId, id)).stream().map(RecruitAnnouncementIndustry::getIndustryName).collect(Collectors.toList())); + dto.setCategoryNames(categoryMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementCategory::getAnnouncementId, id)).stream().map(RecruitAnnouncementCategory::getCategoryName).collect(Collectors.toList())); + dto.setCityNames(cityMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementCity::getAnnouncementId, id)).stream().map(RecruitAnnouncementCity::getCityName).collect(Collectors.toList())); + dto.setEducationNames(educationMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementEducation::getAnnouncementId, id)).stream().map(RecruitAnnouncementEducation::getEducationName).collect(Collectors.toList())); + dto.setRecruitYears(yearMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementYear::getAnnouncementId, id)).stream().map(RecruitAnnouncementYear::getRecruitYear).collect(Collectors.toList())); + dto.setBatchNames(batchMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementBatch::getAnnouncementId, id)).stream().map(RecruitAnnouncementBatch::getBatchName).collect(Collectors.toList())); + dto.setTagNames(tagMapper.selectList(new LambdaQueryWrapper().eq(RecruitAnnouncementTag::getAnnouncementId, id)).stream().map(RecruitAnnouncementTag::getTagName).collect(Collectors.toList())); + return dto; + } + /** * 根据公告id查询公告地址 *

只查单列,公告不存在时返回null

diff --git a/manager/src/main/resources/mapper/RecruitAnnouncementMapper.xml b/manager/src/main/resources/mapper/RecruitAnnouncementMapper.xml index 11cdf62..8347c1b 100644 --- a/manager/src/main/resources/mapper/RecruitAnnouncementMapper.xml +++ b/manager/src/main/resources/mapper/RecruitAnnouncementMapper.xml @@ -49,8 +49,7 @@ ra.apply_end_desc FROM bg_recruit_announcement ra INNER JOIN bg_company c ON ra.company_id = c.id - WHERE c.status = 1 - AND ra.status = 1 + WHERE c.status = 1 AND ra.status = 1 and ra.clean_status = 1 AND (