From 25e21dff40b57094c4fd917c3ddd481d4c461251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 21 May 2025 11:03:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E9=80=9A=E8=AF=9D?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/task/ShengWangScheduledTasks.java | 49 ++++++++++++++++--- .../service/ITicketCallJoinService.java | 2 + .../impl/TicketCallJoinServiceImpl.java | 8 +++ .../service/impl/TicketCallServiceImpl.java | 7 +-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java index 6a0e461c..ba1283af 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java @@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollectionUtil; import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelDTO; import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelInfoDTO; import com.nflg.mobilebroken.admin.service.ShengWangService; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.util.IdUtil; import com.nflg.mobilebroken.repository.entity.TicketCall; import com.nflg.mobilebroken.repository.entity.TicketCallJoin; import com.nflg.mobilebroken.repository.service.ITicketCallJoinService; import com.nflg.mobilebroken.repository.service.ITicketCallService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.slf4j.MDC; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -73,23 +75,54 @@ public class ShengWangScheduledTasks { .one(); if (Objects.nonNull(ticketCall)) { log.info("获取频道用户"); - List userIds = shengWangService.getChannelUsers(info.getChannelName()); - if (CollectionUtil.isEmpty(userIds)) { + List channelUsers = shengWangService.getChannelUsers(info.getChannelName()); + log.info("频道用户:{}", channelUsers); + if (CollectionUtil.isEmpty(channelUsers)) { ticketCallJoinService.lambdaUpdate() .set(TicketCallJoin::getState, 2) .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) .eq(TicketCallJoin::getCallId, ticketCall.getId()) .update(); } else { - ticketCallJoinService.lambdaUpdate() - .set(TicketCallJoin::getState, 2) - .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) - .eq(TicketCallJoin::getCallId, ticketCall.getId()) - .notIn(TicketCallJoin::getUserId, userIds) - .update(); + //用户端 + List userIds = channelUsers.stream() + .map(String::valueOf) + .filter(userId -> String.valueOf(userId).startsWith("1")) + .map(this::getUserId) + .collect(Collectors.toList()); + log.info("客户端用户:{}", userIds); + if (CollectionUtil.isNotEmpty(userIds)) { + ticketCallJoinService.lambdaUpdate() + .set(TicketCallJoin::getState, 2) + .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) + .eq(TicketCallJoin::getCallId, ticketCall.getId()) + .eq(TicketCallJoin::getFrom, Constant.FROM_APP) + .notIn(TicketCallJoin::getUserId, userIds) + .update(); + } + //管理端 + userIds = channelUsers.stream() + .map(String::valueOf) + .filter(userId -> String.valueOf(userId).startsWith("2")) + .map(this::getUserId) + .collect(Collectors.toList()); + log.info("管理端用户:{}", userIds); + if (CollectionUtil.isNotEmpty(userIds)) { + ticketCallJoinService.lambdaUpdate() + .set(TicketCallJoin::getState, 2) + .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) + .eq(TicketCallJoin::getCallId, ticketCall.getId()) + .eq(TicketCallJoin::getFrom, Constant.FROM_ADMIN) + .notIn(TicketCallJoin::getUserId, userIds) + .update(); + } } } } log.info("执行声网通话状态同步完毕"); } + + private Integer getUserId(String userId){ + return Integer.valueOf(StringUtils.stripStart(userId.substring(1),"0")); + } } \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java index 694bd0e8..a0c1dafd 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java @@ -25,4 +25,6 @@ public interface ITicketCallJoinService extends IService { void hangUp(Integer callId, Integer userId, String from, boolean reject); void add(Integer callId, Integer userId, String from); + + void hangUpAll(Integer id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java index 79386b14..80bde7c0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java @@ -116,4 +116,12 @@ public class TicketCallJoinServiceImpl extends ServiceImpl