From db6b636c524e9b8feffc9f70500b50eb0d4622a6 Mon Sep 17 00:00:00 2001 From: khalil Date: Mon, 18 Nov 2024 20:37:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5v2-=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1-=E5=AE=9A=E6=97=B6=E6=B8=85=E7=90=86?= =?UTF-8?q?=E7=A9=BA=E9=BA=A6=E4=BD=8D=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/homeV2/HomeV2Service.java | 23 ++++++++++++++++ .../scheduler/task/HomeV2ListTask.java | 27 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java index 19c643efb..980cfdaba 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java @@ -239,4 +239,27 @@ public class HomeV2Service { return result; } + public void clearPartitionPoolSet(Integer partitionId){ + Set homeRoomSet = poolService.getPartitionMap(partitionId).readAllKeySet(); + if (CollectionUtils.isEmpty(homeRoomSet)){ + return; + } + + String[] uidArray = homeRoomSet.stream().map(Objects::toString).toArray(String[]::new); + List cacheList = jedisService.hmread(RedisKey.room_mic_up.getKey(), uidArray); + if (CollectionUtils.isEmpty(cacheList)){ + poolService.getPartitionMap(partitionId).clear(); + return ; + } + + Set micRoomSet = cacheList.stream().map(Long::parseLong).collect(Collectors.toSet()); + homeRoomSet.removeAll(micRoomSet); + if (CollectionUtils.isEmpty(homeRoomSet)){ + return; + } + + Long[] emptyRoomList = homeRoomSet.toArray(Long[]::new); + poolService.getPartitionMap(partitionId).fastRemove(emptyRoomList); + } + } diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java new file mode 100644 index 000000000..83671621d --- /dev/null +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java @@ -0,0 +1,27 @@ +package com.accompany.scheduler.task; + +import com.accompany.business.service.homeV2.HomeV2Service; +import com.accompany.core.enumeration.PartitionEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class HomeV2ListTask { + + @Autowired + private HomeV2Service homeV2Service; + + /** + * 缓存当前有效的表情JSON + */ + @Scheduled(cron = "0 */6 * * * ?") + public void cacheFaceJson() { + for (PartitionEnum partitionEnum : PartitionEnum.values()) { + homeV2Service.clearPartitionPoolSet(partitionEnum.getId()); + } + } + +}