|
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
|
-import com.citu.module.menduner.common.util.LoginUserContext;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.position.vo.AppPositionChildrenRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.position.vo.AppPositionClickReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.position.vo.AppPositionListReqVO;
|
|
@@ -12,9 +11,9 @@ import com.citu.module.menduner.system.controller.app.jobhunt.position.vo.AppPos
|
|
|
import com.citu.module.menduner.system.controller.base.position.PositionListReqVO;
|
|
|
import com.citu.module.menduner.system.controller.base.position.PositionPageReqVO;
|
|
|
import com.citu.module.menduner.system.controller.base.position.PositionSaveReqVO;
|
|
|
-import com.citu.module.menduner.system.controller.base.visits.MdeVisitsListReqVO;
|
|
|
import com.citu.module.menduner.system.convert.PositionConvert;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
|
|
|
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
|
|
|
import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
|
|
|
import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
|
|
@@ -31,7 +30,6 @@ import org.springframework.web.client.RestTemplate;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
-import java.util.stream.Stream;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@@ -56,6 +54,9 @@ public class PositionServiceImpl implements PositionService {
|
|
|
@Resource
|
|
|
private MdeVisitsService visitsService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private JobAdvertisedMapper jobAdvertisedMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private RestTemplate restTemplate;
|
|
|
|
|
@@ -227,7 +228,7 @@ public class PositionServiceImpl implements PositionService {
|
|
|
positionMapper.insert(obj);
|
|
|
|
|
|
// 递归处理子分类
|
|
|
- parseAndSavePosition(position,jobList, obj.getId(), obj.getLevel() + 1);
|
|
|
+ parseAndSavePosition(position, jobList, obj.getId(), obj.getLevel() + 1);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -254,7 +255,7 @@ public class PositionServiceImpl implements PositionService {
|
|
|
positionMapper.insert(childObj); // 假设insertReturnId方法返回新插入记录的ID
|
|
|
|
|
|
// 继续递归处理更深层次的子分类
|
|
|
- parseAndSavePosition(child,jobList, childObj.getId(), level + 1);
|
|
|
+ parseAndSavePosition(child, jobList, childObj.getId(), level + 1);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -323,47 +324,49 @@ public class PositionServiceImpl implements PositionService {
|
|
|
|
|
|
@Override
|
|
|
public List<AppPositionSimpleRespVO> getHotPosition() {
|
|
|
- Long userId = LoginUserContext.getUserId2();
|
|
|
- Map<Long, Integer> idMap = visitsService.getBizIdVisitsTop10List(
|
|
|
- MdeVisitsListReqVO.builder()
|
|
|
- .type(MdeVisitsEnum.POSITION_CLICK.getType())
|
|
|
- .userId(userId)
|
|
|
- .build()
|
|
|
- );
|
|
|
-
|
|
|
- // 推荐数据的数量
|
|
|
- int num = 10;
|
|
|
- // 职位的层级深度
|
|
|
- Integer level = 3;
|
|
|
-
|
|
|
- // 该用户(包括访客)没有埋点
|
|
|
- if (idMap.isEmpty() || idMap.size() < 1) {
|
|
|
- // 随机十条,深度为{level}的数据
|
|
|
- return PositionConvert.INSTANCE.convertList2(positionMapper.getRandomTenByLevel(level));
|
|
|
-
|
|
|
- }
|
|
|
- List<Long> ids = new ArrayList<>(idMap.keySet());
|
|
|
-
|
|
|
- // 埋点数据不够
|
|
|
- if (ids.size() < num) {
|
|
|
- // 随机十条,深度为{level}的数据
|
|
|
- List<PositionDO> positionDOList1 = positionMapper.getRandomTenByLevel(level);
|
|
|
- // 找出埋点的职位数据
|
|
|
- List<PositionDO> positionDOList2 = positionMapper.selectListByIdList(ids);
|
|
|
- // 合并数据
|
|
|
- List<PositionDO> mergedList = Stream.concat(
|
|
|
- // positionDOList2 数据
|
|
|
- positionDOList2.stream(),
|
|
|
- // positionDOList1 取前 (positionDOList1.size()-ids.size())条数据
|
|
|
- positionDOList1.stream()
|
|
|
- .limit(positionDOList1.size() - ids.size()).collect(Collectors.toList()).stream()
|
|
|
- ).collect(Collectors.toList());
|
|
|
- return retHotPosition(mergedList, idMap);
|
|
|
- }
|
|
|
-
|
|
|
- // 该用户(包括访客)有埋点数据的情况
|
|
|
- List<PositionDO> positionDOList = positionMapper.selectListByIdList(ids);
|
|
|
- return retHotPosition(positionDOList, idMap);
|
|
|
+// Long userId = LoginUserContext.getUserId2();
|
|
|
+// Map<Long, Integer> idMap = visitsService.getBizIdVisitsTop10List(
|
|
|
+// MdeVisitsListReqVO.builder()
|
|
|
+// .type(MdeVisitsEnum.POSITION_CLICK.getType())
|
|
|
+// .userId(userId)
|
|
|
+// .build()
|
|
|
+// );
|
|
|
+//
|
|
|
+// // 推荐数据的数量
|
|
|
+// int num = 10;
|
|
|
+// // 职位的层级深度
|
|
|
+// Integer level = 3;
|
|
|
+//
|
|
|
+// // 该用户(包括访客)没有埋点
|
|
|
+// if (idMap.isEmpty() || idMap.size() < 1) {
|
|
|
+// // 随机十条,深度为{level}的数据
|
|
|
+// return PositionConvert.INSTANCE.convertList2(positionMapper.getRandomTenByLevel(level));
|
|
|
+//
|
|
|
+// }
|
|
|
+// List<Long> ids = new ArrayList<>(idMap.keySet());
|
|
|
+//
|
|
|
+// // 埋点数据不够
|
|
|
+// if (ids.size() < num) {
|
|
|
+// // 随机十条,深度为{level}的数据
|
|
|
+// List<PositionDO> positionDOList1 = positionMapper.getRandomTenByLevel(level);
|
|
|
+// // 找出埋点的职位数据
|
|
|
+// List<PositionDO> positionDOList2 = positionMapper.selectListByIdList(ids);
|
|
|
+// // 合并数据
|
|
|
+// List<PositionDO> mergedList = Stream.concat(
|
|
|
+// // positionDOList2 数据
|
|
|
+// positionDOList2.stream(),
|
|
|
+// // positionDOList1 取前 (positionDOList1.size()-ids.size())条数据
|
|
|
+// positionDOList1.stream()
|
|
|
+// .limit(positionDOList1.size() - ids.size()).collect(Collectors.toList()).stream()
|
|
|
+// ).collect(Collectors.toList());
|
|
|
+// return retHotPosition(mergedList, idMap);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 该用户(包括访客)有埋点数据的情况
|
|
|
+// List<PositionDO> positionDOList = positionMapper.selectListByIdList(ids);
|
|
|
+// return retHotPosition(positionDOList, idMap);
|
|
|
+ List<Long> ids = jobAdvertisedMapper.selectTopPositionIdsByFrequency(10);
|
|
|
+ return PositionConvert.INSTANCE.convertList2(positionMapper.selectListByIdList(ids));
|
|
|
}
|
|
|
|
|
|
private List<AppPositionSimpleRespVO> retHotPosition(List<PositionDO> positionDOList, Map<Long, Integer> idMap) {
|