|
@@ -0,0 +1,249 @@
|
|
|
+package com.citu.module.menduner.system.service.fair;
|
|
|
+
|
|
|
+
|
|
|
+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.PageResult;
|
|
|
+import com.citu.framework.common.util.object.BeanUtils;
|
|
|
+import com.citu.framework.dict.core.DictFrameworkUtils;
|
|
|
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
+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.recruit.job.vo.joinJobFairReqVO;
|
|
|
+import com.citu.module.menduner.system.controller.base.job.fair.JobFairPageReqVO;
|
|
|
+import com.citu.module.menduner.system.controller.base.job.fair.JobFairSaveReqVO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.fair.FairDetailDO;
|
|
|
+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.mysql.fair.FairDetailMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.fair.FairMapper;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.fair.FairWhiteMapper;
|
|
|
+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.service.area.AreaService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
+import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
|
|
|
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_FAIR_NOT_EXISTS;
|
|
|
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_FAIR_TIME_OVER;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 招聘会 Service 实现类
|
|
|
+ *
|
|
|
+ * @author Rayson
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Validated
|
|
|
+public class FairServiceImpl implements FairService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private FairMapper fairMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private FairDetailMapper fairDetailMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private FairWhiteMapper fairWhiteMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AreaService areaService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PositionMapper positionMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MajorMapper majorMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long createJobFair(JobFairSaveReqVO createReqVO) {
|
|
|
+ // 插入
|
|
|
+ FairDO jobFair = BeanUtils.toBean(createReqVO, FairDO.class);
|
|
|
+ fairMapper.insert(jobFair);
|
|
|
+ // 返回
|
|
|
+ return jobFair.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateJobFair(JobFairSaveReqVO updateReqVO) {
|
|
|
+ // 校验存在
|
|
|
+ validateJobFairExists(updateReqVO.getId());
|
|
|
+ // 更新
|
|
|
+ FairDO updateObj = BeanUtils.toBean(updateReqVO, FairDO.class);
|
|
|
+ fairMapper.updateById(updateObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteJobFair(Long id) {
|
|
|
+ // 校验存在
|
|
|
+ validateJobFairExists(id);
|
|
|
+ // 删除
|
|
|
+ fairMapper.deleteById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ private FairDO validateJobFairExists(Long id) {
|
|
|
+ FairDO jobFair = fairMapper.selectById(id);
|
|
|
+ if (null == jobFair) {
|
|
|
+ throw exception(JOB_FAIR_NOT_EXISTS);
|
|
|
+ }
|
|
|
+ return jobFair;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public FairDO getJobFair(Long id) {
|
|
|
+ return validateJobFairExists(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<FairDO> getJobFairPage(JobFairPageReqVO pageReqVO) {
|
|
|
+ return fairMapper.selectPage(pageReqVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkJobFairExpired(FairDO fairDO) {
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ // 检查是否在时间范围内
|
|
|
+ if (now.isBefore(fairDO.getStartTime()) || now.isAfter(fairDO.getEndTime())) {
|
|
|
+ throw exception(JOB_FAIR_TIME_OVER);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FairDO> list() {
|
|
|
+ LocalDate date = LocalDate.now();
|
|
|
+ return fairMapper.selectList(new LambdaQueryWrapperX<FairDO>()
|
|
|
+ .ge(FairDO::getEndTime, date.atStartOfDay())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void joinJobFair(joinJobFairReqVO reqVO) {
|
|
|
+ FairDetailDO detailDO = fairDetailMapper
|
|
|
+ .selectOne(FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
|
|
|
+ FairDetailDO::getJobId, reqVO.getJobId());
|
|
|
+ if (null != detailDO) {
|
|
|
+ // 已经加入
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ FairDO fairDO = getJobFair(reqVO.getJobFairId());
|
|
|
+ checkJobFairExpired(fairDO);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(fairDO.getVipRequire())) {
|
|
|
+ // 效验是否符合会员要求
|
|
|
+ // 不符合抛出异常提示
|
|
|
+ }
|
|
|
+ FairDetailDO detail = FairDetailDO.builder()
|
|
|
+ .jobFairId(fairDO.getId())
|
|
|
+ .enterpriseId(LoginUserContext.getEnterpriseId())
|
|
|
+ .jobId(reqVO.getJobId())
|
|
|
+ .build();
|
|
|
+ fairDetailMapper.insert(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void quitJobFair(joinJobFairReqVO reqVO) {
|
|
|
+ FairDetailDO detailDO = fairDetailMapper
|
|
|
+ .selectOne(FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
|
|
|
+ FairDetailDO::getJobId, reqVO.getJobId());
|
|
|
+ if (null == detailDO) {
|
|
|
+ // 不在招聘会里面
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ fairDetailMapper.deleteById(detailDO.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<AppFlameJobRespVO> getFlameJobPage(AppFlameJobPageReqVO reqVO) {
|
|
|
+ IPage<AppFlameJobRespVO> pageResult = fairDetailMapper.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;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getJobIdListByJobFairIdAndEnterpriseId(Long jobFairId, Long enterpriseId) {
|
|
|
+ return fairDetailMapper.selectByJobFairIdAndEnterpriseIdList(jobFairId, enterpriseId)
|
|
|
+ .stream()
|
|
|
+ .map(FairDetailDO::getJobId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @DSTransactional
|
|
|
+ public void addWhiteList(Long fairId,List<Long> enterpriseIds) {
|
|
|
+ for (Long enterpriseId : enterpriseIds) {
|
|
|
+ FairWhiteDO fairWhiteDO = fairWhiteMapper.selectByJobFairIdAndEnterpriseId(fairId, enterpriseId);
|
|
|
+ if(null != fairWhiteDO) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ fairWhiteMapper.insert(FairWhiteDO.builder()
|
|
|
+ .jobFairId(fairId)
|
|
|
+ .enterpriseId(enterpriseId)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @DSTransactional
|
|
|
+ public void removeWhiteList(Long fairId,List<Long> enterpriseIds) {
|
|
|
+ for (Long enterpriseId : enterpriseIds) {
|
|
|
+ FairWhiteDO fairWhiteDO = fairWhiteMapper.selectByJobFairIdAndEnterpriseId(fairId, enterpriseId);
|
|
|
+ if (null == fairWhiteDO) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ fairWhiteMapper.deleteById(fairWhiteDO.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getWhiteListByFairId(Long fairId) {
|
|
|
+ return fairWhiteMapper.selectByJobFairIdList(fairId)
|
|
|
+ .stream()
|
|
|
+ .map(FairWhiteDO::getEnterpriseId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+}
|