feat: bug-245 视频通话优化,多端登录时,有一个设备接听后,给其他设备推送取消接听事件

This commit is contained in:
曹鹏飞 2025-05-26 17:15:04 +08:00
parent ecce586407
commit 3c7b780fc2
4 changed files with 75 additions and 1 deletions

View File

@ -1310,6 +1310,21 @@ public class TicketController extends ControllerBase {
VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId()))
.throwMessage("您已加入别的通话中");
ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN);
ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId);
uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())
.setReceiverId("admin-uid-" + AdminUserUtil.getUserId())
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("您已加入别的通话中")
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setUserId(AdminUserUtil.getUserId())
.setCategory("ticketCallJoined")
.setFrom("admin")
)
)
);
return ApiResult.success();
}

View File

@ -282,4 +282,26 @@ public class SsePushService {
log.error("发送消息出错", e);
}
}
public void sendTicketCallJoinedToAdmin(Integer userId, @Valid @NotNull Integer ticketId) {
try {
PushUserMessageRequest request = new PushUserMessageRequest()
.setUserId(userId)
.setMessage(new PushMessageDTO()
.setType("ticketCallJoined")
.setData(new PushMessageDataBody()
.setTargetId(ticketId)
.setType("ticketCallJoined")
.setData(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setFrom("admin")
)
)
);
ApiResult<?> result = sendMessageByUser(request, "admin");
log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result));
} catch (Exception e) {
log.error("发送消息出错", e);
}
}
}

View File

@ -527,6 +527,21 @@ public class TicketController extends ControllerBase {
VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId()))
.throwMessage("您已加入别的通话中");
ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(), Constant.FROM_APP);
ssePushService.sendTicketCallJoinedToApp(AppUserUtil.getUserId(), ticketId);
uniPushService.send(new UniPushMessage()
.setSenderId("app-uid-" + AppUserUtil.getUserId())
.setReceiverId("app-uid-" + AppUserUtil.getUserId())
.setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("您已加入别的通话中")
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setUserId(AppUserUtil.getUserId())
.setCategory("ticketCallJoined")
.setFrom("app")
)
)
);
return ApiResult.success();
}

View File

@ -222,4 +222,26 @@ public class SsePushService {
log.error("发送消息出错", e);
}
}
public void sendTicketCallJoinedToApp(Integer userId,@NotNull Integer ticketId) {
try {
PushUserMessageRequest request = new PushUserMessageRequest()
.setUserId(userId)
.setMessage(new PushMessageDTO()
.setType("ticketCallJoined")
.setData(new PushMessageDataBody()
.setTargetId(ticketId)
.setType("ticketCallJoined")
.setData(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setFrom("app")
)
)
);
ApiResult<?> result = sendMessageByUser(request, "app");
log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result));
} catch (Exception e) {
log.error("发送消息出错", e);
}
}
}