|
@@ -4,6 +4,7 @@ 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.position.vo.AppPositionChildrenRespVO;
|
|
|
import com.citu.module.menduner.system.controller.app.position.vo.AppPositionClickReqVO;
|
|
|
import com.citu.module.menduner.system.controller.app.position.vo.AppPositionListReqVO;
|
|
@@ -19,7 +20,6 @@ import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
|
|
|
import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
|
|
|
import com.citu.module.menduner.system.mq.producer.MdeVisitsProducer;
|
|
|
import com.citu.module.menduner.system.service.visits.MdeVisitsService;
|
|
|
-import com.citu.module.menduner.common.util.LoginUserContext;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
@@ -235,7 +235,7 @@ public class PositionServiceImpl implements PositionService {
|
|
|
@Override
|
|
|
public List<AppPositionSimpleRespVO> getHotPosition() {
|
|
|
Long userId = LoginUserContext.getUserId2();
|
|
|
- List<Long> ids = visitsService.getBizIdVisitsTop10List(
|
|
|
+ Map<Long, Integer> idMap = visitsService.getBizIdVisitsTop10List(
|
|
|
MdeVisitsListReqVO.builder()
|
|
|
.type(MdeVisitsEnum.POSITION_CLICK.getType())
|
|
|
.userId(userId)
|
|
@@ -243,16 +243,17 @@ public class PositionServiceImpl implements PositionService {
|
|
|
);
|
|
|
|
|
|
// 推荐数据的数量
|
|
|
- Integer num = 10;
|
|
|
+ int num = 10;
|
|
|
// 职位的层级深度
|
|
|
Integer level = 3;
|
|
|
|
|
|
// 该用户(包括访客)没有埋点
|
|
|
- if (ids.size() < 1) {
|
|
|
+ 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) {
|
|
@@ -268,12 +269,19 @@ public class PositionServiceImpl implements PositionService {
|
|
|
positionDOList1.stream()
|
|
|
.limit(positionDOList1.size() - ids.size()).collect(Collectors.toList()).stream()
|
|
|
).collect(Collectors.toList());
|
|
|
- return PositionConvert.INSTANCE.convertList2(mergedList);
|
|
|
+ return retHotPosition(mergedList, idMap);
|
|
|
}
|
|
|
|
|
|
// 该用户(包括访客)有埋点数据的情况
|
|
|
List<PositionDO> positionDOList = positionMapper.selectListByIdList(ids);
|
|
|
- return PositionConvert.INSTANCE.convertList2(positionDOList);
|
|
|
+ return retHotPosition(positionDOList, idMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<AppPositionSimpleRespVO> retHotPosition(List<PositionDO> positionDOList, Map<Long, Integer> idMap) {
|
|
|
+ List<AppPositionSimpleRespVO> list = PositionConvert.INSTANCE.convertList2(positionDOList);
|
|
|
+ // 将埋点数据按照埋点次数排序
|
|
|
+ list.sort(Comparator.comparingInt((AppPositionSimpleRespVO o) -> idMap.get(o.getId())).reversed());
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Override
|