Commit 2bbf102e by Future

代码结构调整

parent 1792ed2e
......@@ -49,6 +49,9 @@ public class ImMultiRtcRoomMember extends BaseEntity {
@ApiModelProperty("房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开")
private Integer state;
@ApiModelProperty("呼叫时间")
private Date callTime;
@ApiModelProperty("创建时间")
private Date createTime;
......
package com.wecloud.im.service;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMultiRtcRoomMember;
import io.geekidea.springbootplus.framework.common.service.BaseService;
......@@ -10,4 +11,12 @@ import io.geekidea.springbootplus.framework.common.service.BaseService;
*/
public interface ImMultiRtcRoomMemberService extends BaseService<ImMultiRtcRoomMember> {
/**
* 改变会议成员状态
* @param currentClient
* @param roomId
* @param state
*/
void changeRoomMemberState(ImClient currentClient, String roomId, Integer state);
}
......@@ -10,4 +10,26 @@ import io.geekidea.springbootplus.framework.common.service.BaseService;
*/
public interface ImMultiRtcRoomService extends BaseService<ImMultiRtcRoom> {
/**
* 获取多人音视频房间
* @param fkAppid
* @param roomId
* @return
*/
ImMultiRtcRoom getCachedMultiRtcRoom(Long fkAppid, String roomId);
/**
* 清房间缓存
* @param fkAppid
* @param roomId
*/
void deleteMultiRtcRoomCache(Long fkAppid, String roomId);
/**
* 更新多人音视频房间状态
* @param roomId
* @param state
*/
void updateMultiRtcRoomState(String roomId, Integer state);
}
package com.wecloud.im.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMultiRtcRoomMember;
import com.wecloud.im.mapper.ImMultiRtcRoomMemberMapper;
import com.wecloud.im.service.ImMultiRtcRoomMemberService;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -16,4 +19,14 @@ import org.springframework.stereotype.Service;
@Service
public class ImMultiRtcRoomMemberServiceImpl extends BaseServiceImpl<ImMultiRtcRoomMemberMapper, ImMultiRtcRoomMember> implements ImMultiRtcRoomMemberService {
@Autowired
private ImMultiRtcRoomMemberMapper imMultiRtcRoomMemberMapper;
@Override
public void changeRoomMemberState(ImClient currentClient, String roomId, Integer state) {
this.update(new UpdateWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, roomId)
.eq(ImMultiRtcRoomMember::getFkClientId, currentClient.getId())
.set(ImMultiRtcRoomMember::getState, state));
}
}
package com.wecloud.im.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wecloud.im.entity.ImMultiRtcRoom;
import com.wecloud.im.enums.MultiRtcRoomStateEnum;
import com.wecloud.im.mapper.ImMultiRtcRoomMapper;
import com.wecloud.im.service.ImMultiRtcRoomService;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
/**
......@@ -16,4 +22,27 @@ import org.springframework.stereotype.Service;
@Service
public class ImMultiRtcRoomServiceImpl extends BaseServiceImpl<ImMultiRtcRoomMapper, ImMultiRtcRoom> implements ImMultiRtcRoomService {
@Autowired
private ImMultiRtcRoomService imMultiRtcRoomService;
@Override
@Cacheable(key = "'rtcRoomKey_' + #p0+#p1")
public ImMultiRtcRoom getCachedMultiRtcRoom(Long fkAppid, String roomId) {
ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getOne(new QueryWrapper<ImMultiRtcRoom>().lambda()
.eq(ImMultiRtcRoom::getFkAppid, fkAppid)
.eq(ImMultiRtcRoom::getRoomId, roomId));
return rtcRoom;
}
@Override
@CacheEvict(key = "'rtcRoomKey_' + #p0+#p1")
public void deleteMultiRtcRoomCache(Long fkAppid, String roomId) {
}
@Override
public void updateMultiRtcRoomState(String roomId, Integer state) {
imMultiRtcRoomService.update(new UpdateWrapper<ImMultiRtcRoom>().lambda()
.eq(ImMultiRtcRoom::getRoomId, roomId)
.set(ImMultiRtcRoom::getState, state));
}
}
package com.wecloud.multimeet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Lists;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMultiRtcRoom;
......@@ -69,9 +68,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
throw new BusinessException("发起方必须在线");
}
List<RoomMemberDto> members = Lists.newArrayList();
ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getOne(new QueryWrapper<ImMultiRtcRoom>().lambda()
.eq(ImMultiRtcRoom::getFkAppid, currentClient.getFkAppid())
.eq(ImMultiRtcRoom::getRoomId, param.getRoomId()));
ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getCachedMultiRtcRoom(currentClient.getFkAppid(), param.getRoomId());
if (rtcRoom == null) {
rtcRoom = new ImMultiRtcRoom();
rtcRoom.setId(SnowflakeUtil.getId());
......@@ -151,7 +148,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
@Override
public void reject(RejectToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
this.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.REJECTED.getCode());
imMultiRtcRoomMemberService.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.REJECTED.getCode());
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
......@@ -176,9 +173,18 @@ public class MultiMeetServiceImpl implements MultiMeetService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void agree(AgreeToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
this.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.ANSWERED.getCode());
ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getCachedMultiRtcRoom(currentClient.getFkAppid(), param.getRoomId());
if (rtcRoom == null) {
throw new BusinessException("查无多人音视频房间");
}
if (MultiRtcRoomStateEnum.CREATED.getCode().equals(rtcRoom.getState())) {
imMultiRtcRoomService.deleteMultiRtcRoomCache(currentClient.getFkAppid(), param.getRoomId());
imMultiRtcRoomService.updateMultiRtcRoomState(param.getRoomId(), MultiRtcRoomStateEnum.MEETING.getCode());
}
imMultiRtcRoomMemberService.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.ANSWERED.getCode());
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
......@@ -205,7 +211,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
@Override
public void leave(LeaveFromMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
this.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.LEAVE.getCode());
imMultiRtcRoomMemberService.changeRoomMemberState(currentClient, param.getRoomId(), MultiRtcMemberStateEnum.LEAVE.getCode());
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
......@@ -228,18 +234,4 @@ public class MultiMeetServiceImpl implements MultiMeetService {
}
}
/**
* 改变会议成员状态
*
* @param currentClient
* @param roomId
* @param state
*/
private void changeRoomMemberState(ImClient currentClient, String roomId, Integer state) {
imMultiRtcRoomMemberService.update(new UpdateWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, roomId)
.eq(ImMultiRtcRoomMember::getFkClientId, currentClient.getId())
.set(ImMultiRtcRoomMember::getState, state));
}
}
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
......@@ -123,7 +123,7 @@ CREATE TABLE `im_multi_rtc_room`
(
`id` bigint NOT NULL COMMENT '主键id',
`fk_appid` bigint DEFAULT NULL COMMENT '应用appid',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id(live kit提供)',
`state` tinyint NOT NULL DEFAULT '1' COMMENT '房间状态,1:已创建,2:会议中,3:会议结束',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
......@@ -136,10 +136,11 @@ CREATE TABLE `im_multi_rtc_room_member`
(
`id` bigint NOT NULL COMMENT '主键id',
`fk_rtc_room_id` bigint NOT NULL COMMENT 'im房间id',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id(live kit提供)',
`fk_client_id` bigint NOT NULL COMMENT 'client主键id',
`client_id` varchar(200) DEFAULT NULL COMMENT '客户方提供的唯一id',
`state` tinyint NOT NULL DEFAULT '1' COMMENT '房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开',
`call_time` timestamp NULL DEFAULT NULL COMMENT '呼叫时间',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
......
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