Commit 8933eb9d by 罗长华

Merge remote-tracking branch 'origin/feature-cluster' into feature-cluster

parents 30f6b493 0d15086b
...@@ -28,7 +28,7 @@ spring: ...@@ -28,7 +28,7 @@ spring:
redis: redis:
database: 0 database: 0
host: 116.205.173.171 host: 116.205.173.171
password: password: alfbiYAUNKgAiE9tSdH1l4idXZIaNDKkgpS84dG9dy8TlACijUTwHYlLwdd6zTng
port: 6379 port: 6379
cloud: cloud:
......
package com.wecloud.dispatch; package com.wecloud.dispatch;
import com.google.common.base.Throwables;
import com.wecloud.dispatch.common.ActionMethod; import com.wecloud.dispatch.common.ActionMethod;
import com.wecloud.dispatch.common.ApplyInfo; import com.wecloud.dispatch.common.ApplyInfo;
import com.wecloud.dispatch.common.BaseRequest; import com.wecloud.dispatch.common.BaseRequest;
...@@ -208,6 +209,7 @@ public class ActionDispatcher { ...@@ -208,6 +209,7 @@ public class ActionDispatcher {
String message = (e.getMessage() != null ? e.getMessage() : "方法调用异常"); String message = (e.getMessage() != null ? e.getMessage() : "方法调用异常");
throw new IllegalStateException(message, e); throw new IllegalStateException(message, e);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
log.info("异常 ", Throwables.getStackTraceAsString(e));
Throwable t = e.getCause(); Throwable t = e.getCause();
if (t instanceof RuntimeException) { if (t instanceof RuntimeException) {
throw (RuntimeException) t; throw (RuntimeException) t;
......
...@@ -85,4 +85,11 @@ public class MultiMeetAction { ...@@ -85,4 +85,11 @@ public class MultiMeetAction {
multiMeetService.heartbeat(data); multiMeetService.heartbeat(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/isBeCalling")
@ApiOperation(value = "是否正在被呼叫", notes = "是否正在被呼叫")
public WsResponse<Map<String, Boolean>> isBeCalling() {
multiMeetService.isBeCalling();
return WsResponse.ok();
}
} }
...@@ -89,5 +89,12 @@ public class ImMultiMeetController extends BaseController { ...@@ -89,5 +89,12 @@ public class ImMultiMeetController extends BaseController {
return ApiResult.ok(); return ApiResult.ok();
} }
@PostMapping("/isBeCalling")
@ApiOperation(value = "是否正在被呼叫", notes = "是否正在被呼叫")
public ApiResult<Boolean> isBeCalling() {
multiMeetService.isBeCalling();
return ApiResult.ok();
}
} }
...@@ -52,6 +52,11 @@ public interface MultiMeetService { ...@@ -52,6 +52,11 @@ public interface MultiMeetService {
void heartbeat(HeartbeatMultiMeetParam param); void heartbeat(HeartbeatMultiMeetParam param);
/** /**
* 是否正在被呼叫
*/
void isBeCalling();
/**
* 呼叫超时逻辑处理 * 呼叫超时逻辑处理
*/ */
void callingTimeout(); void callingTimeout();
......
...@@ -249,6 +249,13 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -249,6 +249,13 @@ public class MultiMeetServiceImpl implements MultiMeetService {
.in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.CALLING.getCode())) .in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.CALLING.getCode()))
.ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId()) .ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
); );
if (CollectionUtils.isEmpty(rtcRoomMemberList)) {
// 房间中无已接听人员,将呼叫中的成员置为“未接听”
imMultiRtcRoomMemberService.update(new UpdateWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
.eq(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.CALLING.getCode())
.set(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.NOT_ANSWERED.getCode()));
}
for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) { for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) {
// ws向接收方发送通知 // ws向接收方发送通知
MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse(); MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse();
...@@ -282,6 +289,44 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -282,6 +289,44 @@ public class MultiMeetServiceImpl implements MultiMeetService {
} }
@Override @Override
public void isBeCalling() {
ImClient currentClient = imClientService.getCurrentClient();
// 查询当前用户是否被呼叫
List<ImMultiRtcRoomMember> roomMembers = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.lt(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
.eq(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.CALLING.getCode()));
if (CollectionUtils.isNotEmpty(roomMembers)) {
ImMultiRtcRoom room = imMultiRtcRoomService.getCachedMultiRtcRoom(currentClient.getFkAppid(), roomMembers.get(0).getRoomId());
if (room == null) {
return;
}
List<ImMultiRtcRoomMember> answeredMembers = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.lt(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
.in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.ANSWERED.getCode())));
List<RoomMemberDto> members = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(answeredMembers)) {
for (ImMultiRtcRoomMember answeredMember : answeredMembers) {
RoomMemberDto memberDto = new RoomMemberDto();
memberDto.setFkClientId(answeredMember.getFkClientId());
memberDto.setClientId(answeredMember.getClientId());
memberDto.setState(answeredMember.getState());
members.add(memberDto);
}
}
// ws向接收方发送通知
MultiMeetInviteResponse multiMeetInviteResponse = new MultiMeetInviteResponse();
multiMeetInviteResponse.setRoomId(roomMembers.get(0).getRoomId());
multiMeetInviteResponse.setClientId(currentClient.getClientId());
multiMeetInviteResponse.setTimestamp(System.currentTimeMillis());
multiMeetInviteResponse.setMemberDtoList(members);
wsMultiMeetWrite.invite(multiMeetInviteResponse, roomMembers.get(0).getFkClientId());
}
}
@Override
public void callingTimeout() { public void callingTimeout() {
// 60 秒之前的时间 // 60 秒之前的时间
Date beforeTime = DateUtils.addSeconds(new Date(), -60); Date beforeTime = DateUtils.addSeconds(new Date(), -60);
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
ps aux|grep bootstrap-2.0|awk '{print $2}'|xargs kill -9 ps aux|grep bootstrap-2.0|awk '{print $2}'|xargs kill -9
#/data0/java_projects_jenkins/ #/data0/java_projects_jenkins/
# 启动新jar, # 启动新jar,
nohup java -jar bootstrap-2.0.jar &>/dev/null & # 带调试的启动方式
# nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5503 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+HeapDumpOnOutOfMemoryError -Xms6g -Xmx6g -Xss256k -jar bootstrap-2.0.jar &>/dev/null &
# 正常的启动方式
nohup java -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+HeapDumpOnOutOfMemoryError -Xms6g -Xmx6g -Xss256k -jar bootstrap-2.0.jar &>/dev/null &
echo "run success" echo "run success"
...@@ -90,6 +90,7 @@ public class JwtFilter extends AuthenticatingFilter { ...@@ -90,6 +90,7 @@ public class JwtFilter extends AuthenticatingFilter {
*/ */
@Override @Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
log.error("访问被拒绝。。。");
HttpServletRequest httpServletRequest = WebUtils.toHttp(request); HttpServletRequest httpServletRequest = WebUtils.toHttp(request);
HttpServletResponse httpServletResponse = WebUtils.toHttp(response); HttpServletResponse httpServletResponse = WebUtils.toHttp(response);
// 返回401 // 返回401
......
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