From 2dcf674fac9489252d61cc7441a73b9cf45640ed Mon Sep 17 00:00:00 2001 From: lapuda <577732344@qq.com> Date: Tue, 21 Jul 2026 09:41:20 +0800 Subject: [PATCH] feat: Add job fair status tracking and corresponding unit tests --- .../ruoyi/cms/domain/rc/PublicJobFair.java | 3 ++ .../rc/impl/PublicJobFairServiceImpl.java | 43 ++++++++++++++++- .../mapper/rc/PublicJobFairMapper.xml | 2 +- .../rc/impl/PublicJobFairServiceImplTest.java | 46 +++++++++++++++++++ 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 ruoyi-bussiness/src/test/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImplTest.java diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java index 8d9d4af..b9843cd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java @@ -39,6 +39,9 @@ public class PublicJobFair implements Serializable { @ApiModelProperty("招聘会结束时间") private Date jobFairEndTime; + @ApiModelProperty("举办状态(未举办、正在举办、已举办)") + private String jobFairStatus; + @ApiModelProperty("主办单位") private String jobFairHostUnit; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java index a2d87ab..5b3590b 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java @@ -41,6 +41,10 @@ import java.util.stream.Collectors; @Service public class PublicJobFairServiceImpl implements IPublicJobFairService { + private static final String JOB_FAIR_STATUS_NOT_STARTED = "未举办"; + private static final String JOB_FAIR_STATUS_IN_PROGRESS = "正在举办"; + private static final String JOB_FAIR_STATUS_FINISHED = "已举办"; + @Autowired private PublicJobFairMapper publicJobFairMapper; @@ -57,6 +61,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) { PageHelper.startPage(query.getPageNum(), query.getPageSize()); List list = publicJobFairMapper.selectPublicJobFairList(query); + fillJobFairStatus(list); fillCompanyApplyState(list); PageInfo pageInfo = new PageInfo<>(list); @@ -154,12 +159,16 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { @Override public List getCurrentQuarterFairs() { - return publicJobFairMapper.getCurrentQuarterFairs(); + List list = publicJobFairMapper.getCurrentQuarterFairs(); + fillJobFairStatus(list); + return list; } @Override public List getCurrentMonthFairs() { - return publicJobFairMapper.getCurrentMonthFairs(); + List list = publicJobFairMapper.getCurrentMonthFairs(); + fillJobFairStatus(list); + return list; } @Override @@ -172,6 +181,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { @Override public List selectList(PublicJobFairQuery query) { List list = publicJobFairMapper.selectPublicJobFairList(query); + fillJobFairStatus(list); fillCompanyApplyState(list); return list; } @@ -180,6 +190,8 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { public PublicJobFair selectById(String jobFairId) { PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId); if (jobFair != null) { + jobFair.setJobFairStatus(resolveJobFairStatus( + jobFair.getJobFairStartTime(), jobFair.getJobFairEndTime(), new Date())); // 查询关联的企业及岗位 List companyList = getEnterprisesWithJobs(jobFairId); jobFair.setCompanyList(companyList); @@ -485,6 +497,33 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { return publicJobFairMapper.selectJobListByJobFairIdAndCompanyId(jobFairId, company.getCompanyId()); } + /** + * 根据招聘会开始、结束时间补充实时举办状态。 + */ + private void fillJobFairStatus(List list) { + if (list == null || list.isEmpty()) { + return; + } + Date now = new Date(); + for (PublicJobFair fair : list) { + fair.setJobFairStatus(resolveJobFairStatus( + fair.getJobFairStartTime(), fair.getJobFairEndTime(), now)); + } + } + + static String resolveJobFairStatus(Date startTime, Date endTime, Date now) { + if (startTime == null || endTime == null || now == null) { + return null; + } + if (now.before(startTime)) { + return JOB_FAIR_STATUS_NOT_STARTED; + } + if (now.after(endTime)) { + return JOB_FAIR_STATUS_FINISHED; + } + return JOB_FAIR_STATUS_IN_PROGRESS; + } + /** * 为企业端列表补充报名状态和按钮状态。 */ diff --git a/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml index 6d7afb8..98864cb 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml @@ -99,7 +99,7 @@ and to_char(job_fair_end_time, 'YYYY-MM-DD') >= #{query.zphjbsj} - order by job_fair_start_time desc + order by job_fair_start_time desc nulls last, create_time desc nulls last