首页-国家列表-排序
This commit is contained in:
@@ -69,7 +69,7 @@ public class RoomTabRegionAdminService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<HomeRoomVo> homeRoomList = sortService.sort(roomUidSet, partitionId, roomTab);
|
||||
List<HomeRoomVo> homeRoomList = sortService.roomTabRegionSort(roomUidSet, partitionId, roomTab, true);
|
||||
return homeV2Service.decorator(homeRoomList, partitionId);
|
||||
}
|
||||
|
||||
|
@@ -1,18 +1,18 @@
|
||||
package com.accompany.business.service.homeV2.sort;
|
||||
|
||||
import com.accompany.business.model.roomtab.RoomTab;
|
||||
import com.accompany.business.model.roomtab.RoomTabHome;
|
||||
import com.accompany.business.model.roomtab.RoomTabMap;
|
||||
import com.accompany.business.service.roomtab.RoomTabHomeService;
|
||||
import com.accompany.business.service.roomtab.RoomTabMapService;
|
||||
import com.accompany.business.vo.home.HomeRoomVo;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import jodd.util.StringUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -35,7 +35,7 @@ public class HomeRoomSortService {
|
||||
}
|
||||
|
||||
if (roomTab.getHomeRegionId() > 0){
|
||||
return decorateSortValue(roomUidSet, partitionId, roomTab.getHomeRegionId());
|
||||
return roomTabRegionSort(roomUidSet, partitionId, roomTab, false);
|
||||
}
|
||||
|
||||
return roomTab.getIsHomeRecommend()?
|
||||
@@ -43,6 +43,51 @@ public class HomeRoomSortService {
|
||||
sort(roomUidSet, partitionId, HomeRoomSorterEnum.Newest.name());
|
||||
}
|
||||
|
||||
public List<HomeRoomVo> roomTabRegionSort(Collection<Long> roomUidList, Integer partitionId, RoomTab roomTab, boolean isShow) {
|
||||
List<RoomTabMap> homeSpecialList = roomTabMapService.lambdaQuery()
|
||||
.in(RoomTabMap::getRoomUid, roomUidList)
|
||||
.eq(RoomTabMap::getTabId, roomTab.getId())
|
||||
.list();
|
||||
|
||||
if (!isShow){
|
||||
for (RoomTabMap special: homeSpecialList) {
|
||||
if (Boolean.FALSE.equals(special.getIsHome())){
|
||||
roomUidList.remove(special.getRoomUid());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<HomeRoomVo> baseSortList = decorateSortValue(roomUidList, partitionId, roomTab.getHomeRegionId());
|
||||
|
||||
Date now = new Date();
|
||||
Map<Long, RoomTabMap> specialSortMap = homeSpecialList.stream()
|
||||
.filter(roomTabHome -> Boolean.TRUE.equals(roomTabHome.getIsHome()))
|
||||
.filter(roomTabHome -> Boolean.TRUE.equals(roomTabHome.getIsTop()))
|
||||
.filter(roomTabHome -> now.compareTo(roomTabHome.getTopStart()) >= 0 && now.compareTo(roomTabHome.getTopEnd()) <= 0)
|
||||
.collect(Collectors.toMap(RoomTabMap::getRoomUid, roomTabHome -> roomTabHome));
|
||||
if (CollectionUtils.isEmpty(specialSortMap)){
|
||||
return baseSortList;
|
||||
}
|
||||
|
||||
List<HomeRoomVo> needInsertList = baseSortList.stream()
|
||||
.filter(homeRoomVo -> specialSortMap.containsKey(homeRoomVo.getUid()))
|
||||
.sorted(Comparator.comparing(homeRoomVo-> specialSortMap.get(homeRoomVo.getUid()).getSeq()))
|
||||
.toList();
|
||||
// 先退出,后插入置顶位置
|
||||
baseSortList.removeAll(needInsertList);
|
||||
for (HomeRoomVo needInsert: needInsertList) {
|
||||
RoomTabMap specialConfig = specialSortMap.get(needInsert.getUid());
|
||||
if (null == specialConfig){
|
||||
continue;
|
||||
}
|
||||
|
||||
// 防负数
|
||||
int index = Math.min(baseSortList.size(), Math.abs(specialConfig.getSeq() - 1));
|
||||
baseSortList.add(index, needInsert);
|
||||
}
|
||||
return baseSortList;
|
||||
}
|
||||
|
||||
private List<HomeRoomVo> roomTabSort(Collection<Long> roomUidSet, Integer partitionId, Long tabId) {
|
||||
Date now = new Date();
|
||||
List<Long> roomTabSort = roomTabMapService.lambdaQuery()
|
||||
|
Reference in New Issue
Block a user