|
@@ -1,17 +1,20 @@
|
|
|
package com.citu.module.menduner.system.service.job;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.citu.framework.common.pojo.PageParam;
|
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
|
+import com.citu.framework.dict.core.DictFrameworkUtils;
|
|
|
+import com.citu.framework.mybatis.core.util.MyBatisUtils;
|
|
|
import com.citu.module.menduner.common.util.LoginUserContext;
|
|
|
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobPageReqVO;
|
|
|
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSearchPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobCvLookRespVO;
|
|
|
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
|
|
|
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
|
|
|
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
|
|
|
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
|
|
|
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.*;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidatePageReqVO;
|
|
@@ -26,17 +29,23 @@ import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.job.JobFairDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.job.JobFairDetailDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
|
|
|
import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
|
|
|
import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.job.JobFairDetailMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.major.MajorMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.unfit.UnfitCandidateMapper;
|
|
|
import com.citu.module.menduner.system.service.area.AreaService;
|
|
|
import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
|
import com.citu.module.menduner.system.service.interview.InterviewInviteService;
|
|
|
+import com.citu.module.menduner.system.service.job.fair.JobFairService;
|
|
|
import com.citu.module.menduner.system.util.ESQueryBuildUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
@@ -50,6 +59,7 @@ import org.springframework.data.elasticsearch.core.SearchHits;
|
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
|
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -58,6 +68,8 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
|
|
|
+
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
@Validated
|
|
@@ -90,12 +102,21 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
|
|
|
@Resource
|
|
|
private PositionMapper positionMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private MajorMapper majorMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private UnfitCandidateMapper unfitCandidateMapper;
|
|
|
|
|
|
@Resource
|
|
|
private ElasticsearchRestTemplate elasticsearchTemplate;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private JobFairService jobFairService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private JobFairDetailMapper jobFairDetailMapper;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 包装职位发布联系人
|
|
@@ -352,7 +373,7 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
|
|
|
// 重复名字就取第一条
|
|
|
job.setPositionId(positionList.get(0).getId());
|
|
|
}
|
|
|
- List<AreaDO> areaList = areaMapper.selectListByNameList(item.getArea());
|
|
|
+ List<AreaDO> areaList = areaMapper.selectListByNameList(item.getArea());
|
|
|
if (CollUtil.isNotEmpty(areaList)) {
|
|
|
// 重复名字就取第一条
|
|
|
job.setAreaId(areaList.get(0).getId());
|
|
@@ -360,4 +381,77 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
|
|
|
jobAdvertisedService.save(job);
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void joinJobFair(joinJobFairReqVO reqVO) {
|
|
|
+ JobFairDetailDO detailDO = jobFairDetailMapper
|
|
|
+ .selectOne(JobFairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
|
|
|
+ JobFairDetailDO::getJobId, reqVO.getJobId());
|
|
|
+ if (null != detailDO) {
|
|
|
+ // 已经加入
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ JobFairDO jobFairDO = jobFairService.getJobFair(reqVO.getJobFairId());
|
|
|
+ jobFairService.checkJobFairExpired(jobFairDO);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(jobFairDO.getVipRequire())) {
|
|
|
+ // 效验是否符合会员要求
|
|
|
+ // 不符合抛出异常提示
|
|
|
+ }
|
|
|
+ JobFairDetailDO detail = JobFairDetailDO.builder()
|
|
|
+ .jobFairId(jobFairDO.getId())
|
|
|
+ .enterpriseId(LoginUserContext.getEnterpriseId())
|
|
|
+ .jobId(reqVO.getJobId())
|
|
|
+ .build();
|
|
|
+ jobFairDetailMapper.insert(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void quitJobFair(joinJobFairReqVO reqVO) {
|
|
|
+ JobFairDetailDO detailDO = jobFairDetailMapper
|
|
|
+ .selectOne(JobFairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
|
|
|
+ JobFairDetailDO::getJobId, reqVO.getJobId());
|
|
|
+ if (null == detailDO) {
|
|
|
+ // 不在招聘会里面
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ jobFairDetailMapper.deleteById(detailDO.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<AppFlameJobRespVO> getFlameJobPage(AppFlameJobPageReqVO reqVO) {
|
|
|
+ IPage<AppFlameJobRespVO> pageResult = jobFairDetailMapper.search(MyBatisUtils.buildPage(reqVO), reqVO);
|
|
|
+ PageResult<AppFlameJobRespVO> result = new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
|
|
|
+ for (AppFlameJobRespVO record : result.getList()) {
|
|
|
+ if (StringUtils.hasText(record.getJob().getPayUnit())) {
|
|
|
+ record.getJob().setPayUnit(DictFrameworkUtils.getDictDataLabel(MENDUNER_PAY_UNIT, record.getJob().getPayUnit()));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(record.getJob().getExpType())) {
|
|
|
+ record.getJob().setExpType(DictFrameworkUtils.getDictDataLabel(MENDUNER_EXP_TYPE, record.getJob().getExpType()));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(record.getJob().getEduType())) {
|
|
|
+ record.getJob().setEduType(DictFrameworkUtils.getDictDataLabel(MENDUNER_EDUCATION_TYPE, record.getJob().getEduType()));
|
|
|
+ }
|
|
|
+ if (null != record.getJob().getAreaId()) {
|
|
|
+ AreaDO area = areaService.getArea(record.getJob().getAreaId());
|
|
|
+ record.getJob().setAreaName(null != area ? area.getName() : null);
|
|
|
+ }
|
|
|
+ if (null != record.getJob().getPositionId()) {
|
|
|
+ PositionDO position = positionMapper.selectById(record.getJob().getPositionId());
|
|
|
+ record.getJob().setPositionName(null != position ? position.getNameCn() : null);
|
|
|
+ }
|
|
|
+ if (null != record.getJobExtend().getMajorId()) {
|
|
|
+ MajorDO major = majorMapper.selectById(record.getJobExtend().getMajorId());
|
|
|
+ record.getJobExtend().setMajorName(null != major ? major.getNameCn() : null);
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(record.getEnterprise().getFinancingStatus())) {
|
|
|
+ record.getEnterprise().setFinancingStatus(DictFrameworkUtils.getDictDataLabel(MENDUNER_FINANCING_STATUS, record.getEnterprise().getFinancingStatus()));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(record.getEnterprise().getScale())) {
|
|
|
+ record.getEnterprise().setScale(DictFrameworkUtils.getDictDataLabel(MENDUNER_SCALE, record.getEnterprise().getScale()));
|
|
|
+ }
|
|
|
+ record.getJob().setStatus(DictFrameworkUtils.getDictDataLabel(MENDUNER_JOB_STATUS, record.getJob().getStatus()));
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|