Commit 2bbf102e by Future

代码结构调整

parent 1792ed2e
...@@ -49,6 +49,9 @@ public class ImMultiRtcRoomMember extends BaseEntity { ...@@ -49,6 +49,9 @@ public class ImMultiRtcRoomMember extends BaseEntity {
@ApiModelProperty("房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开") @ApiModelProperty("房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开")
private Integer state; private Integer state;
@ApiModelProperty("呼叫时间")
private Date callTime;
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private Date createTime; private Date createTime;
......
package com.wecloud.im.service; package com.wecloud.im.service;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMultiRtcRoomMember; import com.wecloud.im.entity.ImMultiRtcRoomMember;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
...@@ -10,4 +11,12 @@ 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> { 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; ...@@ -10,4 +10,26 @@ import io.geekidea.springbootplus.framework.common.service.BaseService;
*/ */
public interface ImMultiRtcRoomService extends BaseService<ImMultiRtcRoom> { 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; 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.entity.ImMultiRtcRoomMember;
import com.wecloud.im.mapper.ImMultiRtcRoomMemberMapper; import com.wecloud.im.mapper.ImMultiRtcRoomMemberMapper;
import com.wecloud.im.service.ImMultiRtcRoomMemberService; import com.wecloud.im.service.ImMultiRtcRoomMemberService;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -16,4 +19,14 @@ import org.springframework.stereotype.Service; ...@@ -16,4 +19,14 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ImMultiRtcRoomMemberServiceImpl extends BaseServiceImpl<ImMultiRtcRoomMemberMapper, ImMultiRtcRoomMember> implements ImMultiRtcRoomMemberService { 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; 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.entity.ImMultiRtcRoom;
import com.wecloud.im.enums.MultiRtcRoomStateEnum;
import com.wecloud.im.mapper.ImMultiRtcRoomMapper; import com.wecloud.im.mapper.ImMultiRtcRoomMapper;
import com.wecloud.im.service.ImMultiRtcRoomService; import com.wecloud.im.service.ImMultiRtcRoomService;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j; 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; import org.springframework.stereotype.Service;
/** /**
...@@ -16,4 +22,27 @@ import org.springframework.stereotype.Service; ...@@ -16,4 +22,27 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ImMultiRtcRoomServiceImpl extends BaseServiceImpl<ImMultiRtcRoomMapper, ImMultiRtcRoom> implements ImMultiRtcRoomService { 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; package com.wecloud.multimeet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMultiRtcRoom; import com.wecloud.im.entity.ImMultiRtcRoom;
...@@ -69,9 +68,7 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -69,9 +68,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
throw new BusinessException("发起方必须在线"); throw new BusinessException("发起方必须在线");
} }
List<RoomMemberDto> members = Lists.newArrayList(); List<RoomMemberDto> members = Lists.newArrayList();
ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getOne(new QueryWrapper<ImMultiRtcRoom>().lambda() ImMultiRtcRoom rtcRoom = imMultiRtcRoomService.getCachedMultiRtcRoom(currentClient.getFkAppid(), param.getRoomId());
.eq(ImMultiRtcRoom::getFkAppid, currentClient.getFkAppid())
.eq(ImMultiRtcRoom::getRoomId, param.getRoomId()));
if (rtcRoom == null) { if (rtcRoom == null) {
rtcRoom = new ImMultiRtcRoom(); rtcRoom = new ImMultiRtcRoom();
rtcRoom.setId(SnowflakeUtil.getId()); rtcRoom.setId(SnowflakeUtil.getId());
...@@ -151,7 +148,7 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -151,7 +148,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
@Override @Override
public void reject(RejectToMultiMeetParam param) { public void reject(RejectToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient(); 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( List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda() new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId()) .eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
...@@ -176,9 +173,18 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -176,9 +173,18 @@ public class MultiMeetServiceImpl implements MultiMeetService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void agree(AgreeToMultiMeetParam param) { public void agree(AgreeToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient(); 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( List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda() new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId()) .eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
...@@ -205,7 +211,7 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -205,7 +211,7 @@ public class MultiMeetServiceImpl implements MultiMeetService {
@Override @Override
public void leave(LeaveFromMultiMeetParam param) { public void leave(LeaveFromMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient(); 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( List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda() new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId()) .eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
...@@ -228,18 +234,4 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -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` ...@@ -123,7 +123,7 @@ CREATE TABLE `im_multi_rtc_room`
( (
`id` bigint NOT NULL COMMENT '主键id', `id` bigint NOT NULL COMMENT '主键id',
`fk_appid` bigint DEFAULT NULL COMMENT '应用appid', `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:会议结束', `state` tinyint NOT NULL DEFAULT '1' COMMENT '房间状态,1:已创建,2:会议中,3:会议结束',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
...@@ -136,10 +136,11 @@ CREATE TABLE `im_multi_rtc_room_member` ...@@ -136,10 +136,11 @@ CREATE TABLE `im_multi_rtc_room_member`
( (
`id` bigint NOT NULL COMMENT '主键id', `id` bigint NOT NULL COMMENT '主键id',
`fk_rtc_room_id` bigint NOT NULL COMMENT 'im房间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', `fk_client_id` bigint NOT NULL COMMENT 'client主键id',
`client_id` varchar(200) DEFAULT NULL COMMENT '客户方提供的唯一id', `client_id` varchar(200) DEFAULT NULL COMMENT '客户方提供的唯一id',
`state` tinyint NOT NULL DEFAULT '1' COMMENT '房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开', `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 '创建时间', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, 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