feat: 视频通话相关功能
This commit is contained in:
parent
11de84111f
commit
25e21dff40
|
|
@ -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.ShengWangChannelDTO;
|
||||||
import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelInfoDTO;
|
import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelInfoDTO;
|
||||||
import com.nflg.mobilebroken.admin.service.ShengWangService;
|
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.common.util.IdUtil;
|
||||||
import com.nflg.mobilebroken.repository.entity.TicketCall;
|
import com.nflg.mobilebroken.repository.entity.TicketCall;
|
||||||
import com.nflg.mobilebroken.repository.entity.TicketCallJoin;
|
import com.nflg.mobilebroken.repository.entity.TicketCallJoin;
|
||||||
import com.nflg.mobilebroken.repository.service.ITicketCallJoinService;
|
import com.nflg.mobilebroken.repository.service.ITicketCallJoinService;
|
||||||
import com.nflg.mobilebroken.repository.service.ITicketCallService;
|
import com.nflg.mobilebroken.repository.service.ITicketCallService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -73,23 +75,54 @@ public class ShengWangScheduledTasks {
|
||||||
.one();
|
.one();
|
||||||
if (Objects.nonNull(ticketCall)) {
|
if (Objects.nonNull(ticketCall)) {
|
||||||
log.info("获取频道用户");
|
log.info("获取频道用户");
|
||||||
List<Integer> userIds = shengWangService.getChannelUsers(info.getChannelName());
|
List<Integer> channelUsers = shengWangService.getChannelUsers(info.getChannelName());
|
||||||
if (CollectionUtil.isEmpty(userIds)) {
|
log.info("频道用户:{}", channelUsers);
|
||||||
|
if (CollectionUtil.isEmpty(channelUsers)) {
|
||||||
ticketCallJoinService.lambdaUpdate()
|
ticketCallJoinService.lambdaUpdate()
|
||||||
.set(TicketCallJoin::getState, 2)
|
.set(TicketCallJoin::getState, 2)
|
||||||
.set(TicketCallJoin::getHangupTime, LocalDateTime.now())
|
.set(TicketCallJoin::getHangupTime, LocalDateTime.now())
|
||||||
.eq(TicketCallJoin::getCallId, ticketCall.getId())
|
.eq(TicketCallJoin::getCallId, ticketCall.getId())
|
||||||
.update();
|
.update();
|
||||||
} else {
|
} else {
|
||||||
ticketCallJoinService.lambdaUpdate()
|
//用户端
|
||||||
.set(TicketCallJoin::getState, 2)
|
List<Integer> userIds = channelUsers.stream()
|
||||||
.set(TicketCallJoin::getHangupTime, LocalDateTime.now())
|
.map(String::valueOf)
|
||||||
.eq(TicketCallJoin::getCallId, ticketCall.getId())
|
.filter(userId -> String.valueOf(userId).startsWith("1"))
|
||||||
.notIn(TicketCallJoin::getUserId, userIds)
|
.map(this::getUserId)
|
||||||
.update();
|
.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("执行声网通话状态同步完毕");
|
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 hangUp(Integer callId, Integer userId, String from, boolean reject);
|
||||||
|
|
||||||
void add(Integer callId, Integer userId, String from);
|
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()
|
TicketCall ticketCall = lambdaQuery()
|
||||||
.eq(TicketCall::getTicketId, ticketId)
|
.eq(TicketCall::getTicketId, ticketId)
|
||||||
.ne(TicketCall::getState, 2)
|
.ne(TicketCall::getState, 2)
|
||||||
// .eq(TicketCall::getCallerUserId, userId)
|
|
||||||
// .eq(TicketCall::getFrom, from)
|
|
||||||
.one();
|
.one();
|
||||||
if (Objects.nonNull(ticketCall)){
|
if (Objects.nonNull(ticketCall)){
|
||||||
if ((Objects.equals(ticketCall.getCallerUserId(), userId) && StrUtil.equals(ticketCall.getFrom(), Constant.FROM_APP))
|
if ((Objects.equals(ticketCall.getCallerUserId(), userId) && StrUtil.equals(ticketCall.getFrom(), Constant.FROM_APP))
|
||||||
|| ticketCallJoinService.allIsHangUp(ticketCall.getId())){
|
|| ticketCallJoinService.allIsHangUp(ticketCall.getId())){
|
||||||
ticketCall.setState(2);
|
ticketCall.setState(2);
|
||||||
ticketCall.setHangupTime(LocalDateTime.now());
|
ticketCallJoinService.hangUpAll(ticketCall.getId());
|
||||||
|
if (!reject) {
|
||||||
|
ticketCall.setHangupTime(LocalDateTime.now());
|
||||||
|
}
|
||||||
updateById(ticketCall);
|
updateById(ticketCall);
|
||||||
}
|
}
|
||||||
ticketCallJoinService.hangUp(ticketCall.getId(), userId, from, reject);
|
ticketCallJoinService.hangUp(ticketCall.getId(), userId, from, reject);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue