package com.lzq.controller.main.logicDispose;
import com.lzq.bean.meeting.Meeting;
import com.lzq.bean.user.User;
import com.lzq.service.main.janus.MeetingService;
import com.lzq.util.randomNumber.RandomNumber;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName: MeetingDispose
* @Author: 中都
* @Date: 2021/2/17 10:29
* @Description: 视频会议相关处理
*/
@RequestMapping(value = "/meeting")
@Controller
public class MeetingDispose {
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private MeetingService meetingService;
private static final Logger logger = LogManager.getLogger(MainPageLoginDispose.class);
//创建房间,能到后端必然前端已经判断登录了
@RequestMapping(value = "/createRoom")
@ResponseBody
public Map<String,Object> createRoom(HttpSession session,String remark) {
Map<String,Object> hashmap = new HashMap<>();
User user = (User) session.getAttribute("user");
if(user == null) {
hashmap.put("flag",false);
hashmap.put("msg","服务端无法获取你的会话信息,请验证是否已经登录或登录已过期");
return hashmap;
}
try {
//找到一个未被使用的房间号
Meeting meeting = null;
List<Meeting> list = meetingService.getUnFlagMetings();
for (Meeting m : list) {
if (m.getFlag() == 0) {
meeting = m;
break;
}
}
if (meeting == null) {
hashmap.put("flag", false);
hashmap.put("msg","服务端繁忙,创建房间数已达上限,为防止服务器过载,请稍后再试");
return hashmap;
}
meeting.setFlag(1);
meeting.setRemark(remark);
meeting.setPresider(user.getName());
//修改这个会议房间信息
meetingService.updateMeeting(meeting);
//存储到redis
redisTemplate.opsForValue().set(String.valueOf(meeting.getId()), "1");
hashmap.put("flag", true);
hashmap.put("msg", meeting);
logger.info(user.getName() + "创建视频会议房间成功" + meeting.getId() + "备注 " + remark);
return hashmap;
}catch (Exception e) {
hashmap.put("flag", false);
hashmap.put("msg","数据库操作异常");
logger.error(user.getName() + "创建视频会议房间失败 备注 " + remark);
return hashmap;
}
}
//添加到会议房间
@RequestMapping(value = "/addRoom")
@ResponseBody
public Map<String,Object> addRoom(HttpSession session,String roomId) {
Map<String,Object> hashmap = new HashMap<>();
User user = (User) session.getAttribute("user");
if(user == null) {
hashmap.put("flag",false);
hashmap.put("msg","服务端无法获取你的会话信息,请验证是否已经登录或登录已过期");
return hashmap;
}
String houseOwner = redisTemplate.opsForValue().get(roomId);
if(houseOwner == null) {
//房间已经被销毁或者房间号错误
hashmap.put("flag",false);
hashmap.put("msg","该房间已经被销毁或者输入的房间号不存在!");
logger.info(user.getName()+"加入房间"+roomId+"失败,该房间已经被销毁或者输入的房间号不存在!");
}else {
Meeting meeting1 = meetingService.getMeeting(Integer.valueOf(roomId));
if(meeting1.getFlag() == 0) {
hashmap.put("flag",false);
hashmap.put("msg","该房间已经被销毁或者输入的房间号不存在!");
logger.info(user.getName()+"加入房间"+roomId+"失败,该房间已经被销毁或者输入的房间号不存在!");
return hashmap;
}
int x = Integer.valueOf(houseOwner)+1;
redisTemplate.opsForValue().set(roomId, String.valueOf(x));
try {
Meeting meeting = meetingService.getMeeting(Integer.valueOf(roomId));
hashmap.put("flag",true);
hashmap.put("msg",meeting);
logger.info(user.getName()+"加入房间"+roomId+"成功");
}catch (Exception e) {
hashmap.put("flag", false);
hashmap.put("msg","数据库操作异常");
logger.error(user.getName() + "加入视频会议房间失败 备注 ");
return hashmap;
}
}
return hashmap;
}
//离开房间事件处理
@RequestMapping(value = "/leaveRoom",produces = {"text/plain;charset=UTF-8"})
@ResponseBody
public String leaveRoom(HttpSession session,String roomId) {
User user = (User) session.getAttribute("user");
if(user == null) {
return "服务端无法获取你的会话信息,请验证是否已经登录或登录已过期";
}
String s = redisTemplate.opsForValue().get(roomId);
int x = Integer.valueOf(s)-1; //走一个
if(x == 0) {
//这个房间已经没人了,修改数据库对应房间标记位
Meeting meeting = new Meeting();
meeting.setId(Integer.valueOf(roomId));
meeting.setFlag(0);
meetingService.updateMeeting(meeting);
logger.info("销毁房间"+roomId);
return "ok";
}else {
redisTemplate.opsForValue().set(roomId, String.valueOf(x));
return "数据库修改失败";
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于webrtc的视频会议系统完整源码.zip (107个子文件)
perfect.css 3KB
userLogin.css 2KB
main.css 2KB
userForgetPassword.css 2KB
userRegister.css 2KB
xcConfirm.css 2KB
videoRoom.css 2KB
reset.css 917B
common.css 196B
Thumbs.db 10KB
iconfont.eot 9KB
loading2.gif 16KB
loading.gif 8KB
videoRoom.html 6KB
main.html 4KB
perfect.html 3KB
login.html 3KB
forgetPassword.html 2KB
register.html 2KB
navbar.html 2KB
videoConference.iml 80B
MeetingDispose.java 6KB
UserMsg.java 5KB
Login.java 4KB
VerificationCode.java 3KB
EmailUtil.java 3KB
RedisTest.java 3KB
FileDispose.java 3KB
MainPageLoginDispose.java 2KB
Register.java 2KB
FileTest.java 2KB
ForgetPassword.java 2KB
UserCRUDTest.java 2KB
User.java 1KB
MeetingTest.java 1KB
Meeting.java 1KB
UserServiceImpl.java 1KB
MeetingServiceImpl.java 1KB
CodeDispose.java 1KB
UserPageDispose.java 862B
UserDao.java 861B
DataBaseTest.java 756B
MainPageDispose.java 587B
MeetingDao.java 575B
RandomNumber.java 572B
BaseTest.java 523B
MeetingService.java 472B
UserService.java 412B
background.jpg 349KB
background1.jpg 330KB
jquery-3.5.1.js 281KB
janus.js 126KB
videoroom.js 44KB
perfect.js 6KB
register.js 5KB
xcConfirm.js 5KB
forgetPassword.js 5KB
login.js 4KB
main.js 4KB
index.jsp 117B
MANIFEST.MF 23B
icons.png 5KB
up_arrow.png 3KB
videoline.png 1KB
perfect.png 567B
login.png 524B
main.png 499B
meeting.png 438B
forgetPassword.png 415B
register.png 374B
redis.properties 172B
iconfont.svg 35KB
iconfont.ttf 9KB
iconfont.woff 6KB
iconfont.woff2 5KB
pom.xml 9KB
uiDesigner.xml 9KB
videoConference_war.xml 6KB
videoConference17.xml 6KB
videoConference14.xml 6KB
videoConference10.xml 6KB
videoConference07.xml 6KB
videoConference16.xml 6KB
videoConference15.xml 6KB
videoConference02.xml 6KB
videoConference13.xml 6KB
videoConference08.xml 6KB
videoConference12.xml 6KB
videoConference04.xml 6KB
videoConference11.xml 6KB
videoConference03.xml 6KB
videoConference09.xml 6KB
videoConference05.xml 6KB
videoConference06.xml 6KB
videoConference.xml 6KB
spring.xml 2KB
log4j2.xml 2KB
web.xml 2KB
spring-redis.xml 2KB
spring-web.xml 2KB
共 107 条
- 1
- 2
资源评论
龙年行大运
- 粉丝: 996
- 资源: 3859
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 南京邮电大学数学实验:熟练掌握 Matlab 软件的基本命令和操作
- 2017校招真题校园招聘真题算法题(37道)Python源码.zip
- 基于单片机protues仿真的多功能自动饮水机系统设计(仿真图、源代码、演示视频)
- 二叉树7-1-1.cpp
- android 9.0 原生模拟器 签名文件
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功