|
@@ -1,13 +1,13 @@
|
|
package com.citu.module.menduner.system.service.job;
|
|
package com.citu.module.menduner.system.service.job;
|
|
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.citu.framework.common.pojo.PageParam;
|
|
import com.citu.framework.common.pojo.PageParam;
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
import com.citu.framework.security.core.LoginUser;
|
|
import com.citu.framework.security.core.LoginUser;
|
|
import com.citu.module.menduner.common.util.LoginUserContext;
|
|
import com.citu.module.menduner.common.util.LoginUserContext;
|
|
-import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
|
|
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
|
|
import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
|
|
@@ -15,12 +15,15 @@ import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedPag
|
|
import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSaveReqVO;
|
|
import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSaveReqVO;
|
|
import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
|
|
import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
|
|
import com.citu.module.menduner.system.controller.base.CommonRespVO;
|
|
import com.citu.module.menduner.system.controller.base.CommonRespVO;
|
|
-import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
|
|
|
|
|
|
+import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserContactRespVO;
|
|
|
|
+import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
|
|
import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
|
|
import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
|
|
import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
|
|
import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
|
|
import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
|
|
import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
|
|
+import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
|
|
import com.citu.module.menduner.system.enums.MathOperationEnum;
|
|
import com.citu.module.menduner.system.enums.MathOperationEnum;
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
import com.citu.module.menduner.system.enums.account.BalanceBizTypeEnum;
|
|
import com.citu.module.menduner.system.enums.account.BalanceBizTypeEnum;
|
|
@@ -37,10 +40,7 @@ import org.springframework.validation.annotation.Validated;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
-import java.util.Objects;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
@@ -60,6 +60,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
@Resource
|
|
@Resource
|
|
private JobAdvertisedMapper jobAdvertisedMapper;
|
|
private JobAdvertisedMapper jobAdvertisedMapper;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private JobInterestedMapper jobInterestedMapper;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private EnterpriseService enterpriseService;
|
|
private EnterpriseService enterpriseService;
|
|
|
|
|
|
@@ -117,11 +120,68 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public PageResult<AppJobAdvertisedHomeRespVO> getRecommendedPage(PageParam pageParam) {
|
|
public PageResult<AppJobAdvertisedHomeRespVO> getRecommendedPage(PageParam pageParam) {
|
|
|
|
+
|
|
|
|
+
|
|
AppJobAdvertisedPageReqVO pageReqVO =
|
|
AppJobAdvertisedPageReqVO pageReqVO =
|
|
new AppJobAdvertisedPageReqVO(pageParam, AppJobAdvertisedPageReqVO.RECOMMEND);
|
|
new AppJobAdvertisedPageReqVO(pageParam, AppJobAdvertisedPageReqVO.RECOMMEND);
|
|
pageReqVO.setTop(true);
|
|
pageReqVO.setTop(true);
|
|
pageReqVO.setHire(false);
|
|
pageReqVO.setHire(false);
|
|
|
|
+ Long userId = LoginUserContext.getUserId2();
|
|
|
|
+ if (null == userId) {
|
|
|
|
+ // 未登录
|
|
|
|
+ PageResult<AppJobAdvertisedHomeRespVO> result = jobAdvertisedMapper.selectPage(pageReqVO);
|
|
|
|
+ if(CollUtil.isEmpty(result.getList())) {
|
|
|
|
+ // 没有数据, 再算一遍
|
|
|
|
+ pageReqVO.setTop(null);
|
|
|
|
+ return jobAdvertisedMapper.selectPage(pageReqVO);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 基于求职意向计算
|
|
|
|
+ List<JobInterestedDO> interestList = jobInterestedMapper.selectByUserIdList(userId);
|
|
|
|
+ if(CollUtil.isEmpty(interestList)) {
|
|
|
|
+ return jobAdvertisedMapper.selectPage(pageReqVO);
|
|
|
|
+ }
|
|
|
|
+ // 感兴趣的职位
|
|
|
|
+ List<Long> positionIds = interestList.stream()
|
|
|
|
+ .map(JobInterestedDO::getPositionId).collect(Collectors.toList());
|
|
|
|
+ // 希望工作的城市
|
|
|
|
+ List<Long> workAreaIds = interestList.stream()
|
|
|
|
+ .map(JobInterestedDO::getWorkAreaId).collect(Collectors.toList());
|
|
|
|
+ // 感兴趣的城市
|
|
|
|
+ List<Long> interestedAreaIds = interestList.stream()
|
|
|
|
+ .map(JobInterestedDO::getInterestedAreaIdList)
|
|
|
|
+ .filter(interestedAreaIdList ->CollUtil.isNotEmpty(interestedAreaIdList))
|
|
|
|
+ .flatMap(Collection::stream) // 将嵌套列表展平为一个流
|
|
|
|
+ .map(Long::valueOf)
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ // 感兴趣的行业
|
|
|
|
+ List<Long> inductionIds = interestList.stream()
|
|
|
|
+ .map(JobInterestedDO::getIndustryIdList)
|
|
|
|
+ .filter(industryIdList ->CollUtil.isNotEmpty(industryIdList))
|
|
|
|
+ .flatMap(Collection::stream) // 将嵌套列表展平为一个流
|
|
|
|
+ .map(Long::valueOf)
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ pageReqVO.setJobTypes(interestList
|
|
|
|
+ .stream()
|
|
|
|
+ .map(JobInterestedDO::getJobType)
|
|
|
|
+ .collect(Collectors.toList())
|
|
|
|
+ );
|
|
|
|
+ pageReqVO.setPositionIds(positionIds);
|
|
|
|
+ pageReqVO.setIndustryIds(inductionIds);
|
|
|
|
+ pageReqVO.setAreaIds(
|
|
|
|
+ CollUtil.union(workAreaIds, interestedAreaIds)
|
|
|
|
+ .stream().distinct()
|
|
|
|
+ .collect(Collectors.toList())
|
|
|
|
+ );
|
|
|
|
+ pageReqVO.setAcquainted(true);
|
|
|
|
+ pageReqVO.setTop(false);
|
|
return jobAdvertisedMapper.selectPage(pageReqVO);
|
|
return jobAdvertisedMapper.selectPage(pageReqVO);
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -200,12 +260,12 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
respVO.setJobAdvertisedNum(jobAdvertisedMapper.countByEnterpriseId(job.getEnterpriseId()));
|
|
respVO.setJobAdvertisedNum(jobAdvertisedMapper.countByEnterpriseId(job.getEnterpriseId()));
|
|
|
|
|
|
// 查询企业信息
|
|
// 查询企业信息
|
|
- AppEnterpriseSimpleRespVO enterprise = enterpriseService.
|
|
|
|
|
|
+ EnterpriseBaseSimpleRespVO enterprise = enterpriseService.
|
|
getEnterpriseSimple(job.getEnterpriseId());
|
|
getEnterpriseSimple(job.getEnterpriseId());
|
|
respVO.setEnterprise(enterprise);
|
|
respVO.setEnterprise(enterprise);
|
|
|
|
|
|
// 查询联系人信息
|
|
// 查询联系人信息
|
|
- AppEnterpriseUserContactRespVO contactRespVO = userBindService.
|
|
|
|
|
|
+ EnterpriseUserContactRespVO contactRespVO = userBindService.
|
|
getContact(enterprise.getId(), respVO.getUserId());
|
|
getContact(enterprise.getId(), respVO.getUserId());
|
|
respVO.setContact(contactRespVO);
|
|
respVO.setContact(contactRespVO);
|
|
return respVO;
|
|
return respVO;
|