Commit f1954ef0 by Future

忙线逻辑添加

parent 54533414
package com.wecloud.rtc.service.impl; package com.wecloud.rtc.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImRtcRecord; import com.wecloud.im.entity.ImRtcRecord;
...@@ -12,6 +14,7 @@ import com.wecloud.im.param.rtc.JoinRtcChannelParam; ...@@ -12,6 +14,7 @@ import com.wecloud.im.param.rtc.JoinRtcChannelParam;
import com.wecloud.im.param.rtc.LeaveRtcChannelParam; import com.wecloud.im.param.rtc.LeaveRtcChannelParam;
import com.wecloud.im.param.rtc.RejectRtcChannelParam; import com.wecloud.im.param.rtc.RejectRtcChannelParam;
import com.wecloud.im.param.rtc.SdpForwardParam; import com.wecloud.im.param.rtc.SdpForwardParam;
import com.wecloud.im.sdk.enums.RtcStateEnum;
import com.wecloud.im.sdk.enums.SingleRtcOperateTypeEnum; import com.wecloud.im.sdk.enums.SingleRtcOperateTypeEnum;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientBlacklistService; import com.wecloud.im.service.ImClientBlacklistService;
...@@ -95,15 +98,17 @@ public class RtcServiceImpl extends UserStateListener implements RtcService { ...@@ -95,15 +98,17 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
public CreateRtcChannelResult createAndCall(CreateRtcChannelParam createRtcChannelParam) { public CreateRtcChannelResult createAndCall(CreateRtcChannelParam createRtcChannelParam) {
ImClient currentClient = imClientService.getCurrentClient(); ImClient currentClient = imClientService.getCurrentClient();
Long rtcChannelId = SnowflakeUtil.getId(); Long rtcChannelId = SnowflakeUtil.getId();
// 判断发起方必须在线
boolean onlineStatus = userStateCacheManager.isOnline(currentClient.getId());
if (!onlineStatus) {
log.info("发起方必须在线" + currentClient.getFkAppid() + currentClient.getClientId());
ApiResult.fail();
}
ImClient toClient = imClientService.getCacheImClient(currentClient.getFkAppid(), createRtcChannelParam.getToClient()); ImClient toClient = imClientService.getCacheImClient(currentClient.getFkAppid(), createRtcChannelParam.getToClient());
if (toClient == null) { if (toClient == null) {
ApiResult.fail(); throw new BusinessException("查无接收人信息");
}
ImRtcRecord imRtcRecord = imRtcRecordService.getOne(new LambdaQueryWrapper<ImRtcRecord>()
.eq(ImRtcRecord::getFkAppid, currentClient.getFkAppid())
.in(ImRtcRecord::getState, Lists.newArrayList(RtcStateEnum.CREATED.getCode(), RtcStateEnum.ING.getCode()))
.eq(ImRtcRecord::getToClientId, toClient.getClientId())
);
if (imRtcRecord != null) {
throw new BusinessException("对方忙线中");
} }
// 拉黑逻辑 // 拉黑逻辑
black(currentClient, toClient); black(currentClient, toClient);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment