feat: 视频通话相关功能
This commit is contained in:
parent
1f3e0968cc
commit
91d3d78c9b
|
|
@ -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<Integer> userIds = shengWangService.getChannelUsers(info.getChannelName());
|
||||
if (CollectionUtil.isEmpty(userIds)) {
|
||||
List<Integer> 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<Integer> 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"));
|
||||
}
|
||||
}
|
||||
|
|
@ -25,4 +25,6 @@ public interface ITicketCallJoinService extends IService<TicketCallJoin> {
|
|||
void hangUp(Integer callId, Integer userId, String from, boolean reject);
|
||||
|
||||
void add(Integer callId, Integer userId, String from);
|
||||
|
||||
void hangUpAll(Integer id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,4 +116,12 @@ public class TicketCallJoinServiceImpl extends ServiceImpl<TicketCallJoinMapper,
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hangUpAll(Integer id) {
|
||||
lambdaUpdate()
|
||||
.set(TicketCallJoin::getState, 2)
|
||||
.eq(TicketCallJoin::getCallId, id)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
|
@ -63,14 +63,15 @@ public class TicketCallServiceImpl extends ServiceImpl<TicketCallMapper, TicketC
|
|||
TicketCall ticketCall = lambdaQuery()
|
||||
.eq(TicketCall::getTicketId, ticketId)
|
||||
.ne(TicketCall::getState, 2)
|
||||
// .eq(TicketCall::getCallerUserId, userId)
|
||||
// .eq(TicketCall::getFrom, from)
|
||||
.one();
|
||||
if (Objects.nonNull(ticketCall)){
|
||||
if ((Objects.equals(ticketCall.getCallerUserId(), userId) && StrUtil.equals(ticketCall.getFrom(), Constant.FROM_APP))
|
||||
|| ticketCallJoinService.allIsHangUp(ticketCall.getId())){
|
||||
ticketCall.setState(2);
|
||||
ticketCall.setHangupTime(LocalDateTime.now());
|
||||
ticketCallJoinService.hangUpAll(ticketCall.getId());
|
||||
if (!reject) {
|
||||
ticketCall.setHangupTime(LocalDateTime.now());
|
||||
}
|
||||
updateById(ticketCall);
|
||||
}
|
||||
ticketCallJoinService.hangUp(ticketCall.getId(), userId, from, reject);
|
||||
|
|
|
|||
Loading…
Reference in New Issue