feat: Add job fair status tracking and corresponding unit tests

This commit is contained in:
2026-07-21 09:41:20 +08:00
parent 25f73dc580
commit 2dcf674fac
4 changed files with 91 additions and 3 deletions

View File

@@ -39,6 +39,9 @@ public class PublicJobFair implements Serializable {
@ApiModelProperty("招聘会结束时间")
private Date jobFairEndTime;
@ApiModelProperty("举办状态(未举办、正在举办、已举办)")
private String jobFairStatus;
@ApiModelProperty("主办单位")
private String jobFairHostUnit;

View File

@@ -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<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
fillJobFairStatus(list);
fillCompanyApplyState(list);
PageInfo<PublicJobFair> pageInfo = new PageInfo<>(list);
@@ -154,12 +159,16 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
@Override
public List<PublicJobFair> getCurrentQuarterFairs() {
return publicJobFairMapper.getCurrentQuarterFairs();
List<PublicJobFair> list = publicJobFairMapper.getCurrentQuarterFairs();
fillJobFairStatus(list);
return list;
}
@Override
public List<PublicJobFair> getCurrentMonthFairs() {
return publicJobFairMapper.getCurrentMonthFairs();
List<PublicJobFair> list = publicJobFairMapper.getCurrentMonthFairs();
fillJobFairStatus(list);
return list;
}
@Override
@@ -172,6 +181,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
@Override
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
List<PublicJobFair> 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<PublicJobFairCompanyVO> 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<PublicJobFair> 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;
}
/**
* 为企业端列表补充报名状态和按钮状态。
*/

View File

@@ -99,7 +99,7 @@
and to_char(job_fair_end_time, 'YYYY-MM-DD') &gt;= #{query.zphjbsj}
</if>
</where>
order by job_fair_start_time desc
order by job_fair_start_time desc nulls last, create_time desc nulls last
</select>
<select id="selectPublicJobFairDetailById" resultMap="DetailResult">

View File

@@ -0,0 +1,46 @@
package com.ruoyi.cms.service.rc.impl;
import org.junit.jupiter.api.Test;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
class PublicJobFairServiceImplTest
{
private static final Date START_TIME = new Date(1_000L);
private static final Date END_TIME = new Date(2_000L);
@Test
void statusIsNotStartedBeforeStartTime()
{
assertEquals("未举办", resolveStatus(new Date(999L)));
}
@Test
void statusIsInProgressWithinTimeRangeIncludingBoundaries()
{
assertEquals("正在举办", resolveStatus(START_TIME));
assertEquals("正在举办", resolveStatus(new Date(1_500L)));
assertEquals("正在举办", resolveStatus(END_TIME));
}
@Test
void statusIsFinishedAfterEndTime()
{
assertEquals("已举办", resolveStatus(new Date(2_001L)));
}
@Test
void statusIsUnknownWhenTimeRangeIsIncomplete()
{
assertNull(PublicJobFairServiceImpl.resolveJobFairStatus(null, END_TIME, START_TIME));
assertNull(PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, null, END_TIME));
}
private String resolveStatus(Date now)
{
return PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, END_TIME, now);
}
}