feat: Add job fair status tracking and corresponding unit tests
This commit is contained in:
@@ -39,6 +39,9 @@ public class PublicJobFair implements Serializable {
|
|||||||
@ApiModelProperty("招聘会结束时间")
|
@ApiModelProperty("招聘会结束时间")
|
||||||
private Date jobFairEndTime;
|
private Date jobFairEndTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("举办状态(未举办、正在举办、已举办)")
|
||||||
|
private String jobFairStatus;
|
||||||
|
|
||||||
@ApiModelProperty("主办单位")
|
@ApiModelProperty("主办单位")
|
||||||
private String jobFairHostUnit;
|
private String jobFairHostUnit;
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,10 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
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
|
@Autowired
|
||||||
private PublicJobFairMapper publicJobFairMapper;
|
private PublicJobFairMapper publicJobFairMapper;
|
||||||
|
|
||||||
@@ -57,6 +61,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
|
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
|
||||||
PageHelper.startPage(query.getPageNum(), query.getPageSize());
|
PageHelper.startPage(query.getPageNum(), query.getPageSize());
|
||||||
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||||
|
fillJobFairStatus(list);
|
||||||
fillCompanyApplyState(list);
|
fillCompanyApplyState(list);
|
||||||
PageInfo<PublicJobFair> pageInfo = new PageInfo<>(list);
|
PageInfo<PublicJobFair> pageInfo = new PageInfo<>(list);
|
||||||
|
|
||||||
@@ -154,12 +159,16 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PublicJobFair> getCurrentQuarterFairs() {
|
public List<PublicJobFair> getCurrentQuarterFairs() {
|
||||||
return publicJobFairMapper.getCurrentQuarterFairs();
|
List<PublicJobFair> list = publicJobFairMapper.getCurrentQuarterFairs();
|
||||||
|
fillJobFairStatus(list);
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PublicJobFair> getCurrentMonthFairs() {
|
public List<PublicJobFair> getCurrentMonthFairs() {
|
||||||
return publicJobFairMapper.getCurrentMonthFairs();
|
List<PublicJobFair> list = publicJobFairMapper.getCurrentMonthFairs();
|
||||||
|
fillJobFairStatus(list);
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -172,6 +181,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
@Override
|
@Override
|
||||||
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
|
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
|
||||||
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||||
|
fillJobFairStatus(list);
|
||||||
fillCompanyApplyState(list);
|
fillCompanyApplyState(list);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -180,6 +190,8 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
public PublicJobFair selectById(String jobFairId) {
|
public PublicJobFair selectById(String jobFairId) {
|
||||||
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
|
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
|
||||||
if (jobFair != null) {
|
if (jobFair != null) {
|
||||||
|
jobFair.setJobFairStatus(resolveJobFairStatus(
|
||||||
|
jobFair.getJobFairStartTime(), jobFair.getJobFairEndTime(), new Date()));
|
||||||
// 查询关联的企业及岗位
|
// 查询关联的企业及岗位
|
||||||
List<PublicJobFairCompanyVO> companyList = getEnterprisesWithJobs(jobFairId);
|
List<PublicJobFairCompanyVO> companyList = getEnterprisesWithJobs(jobFairId);
|
||||||
jobFair.setCompanyList(companyList);
|
jobFair.setCompanyList(companyList);
|
||||||
@@ -485,6 +497,33 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
return publicJobFairMapper.selectJobListByJobFairIdAndCompanyId(jobFairId, company.getCompanyId());
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 为企业端列表补充报名状态和按钮状态。
|
* 为企业端列表补充报名状态和按钮状态。
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
and to_char(job_fair_end_time, 'YYYY-MM-DD') >= #{query.zphjbsj}
|
and to_char(job_fair_end_time, 'YYYY-MM-DD') >= #{query.zphjbsj}
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
order by job_fair_start_time desc
|
order by job_fair_start_time desc nulls last, create_time desc nulls last
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectPublicJobFairDetailById" resultMap="DetailResult">
|
<select id="selectPublicJobFairDetailById" resultMap="DetailResult">
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user