首页-国家列表-排序

This commit is contained in:
khalil
2025-07-23 20:44:53 +08:00
parent 3bb360fcfe
commit 5132051605
2 changed files with 51 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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()