|
@@ -0,0 +1,115 @@
|
|
|
+package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
+import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomMemberDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.SysConfigDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.CourseScheduleStudentMusicScoreResult;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.ImNetworkRoomResult;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.NetworkRoomResult;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
+import com.yonge.cooleshow.common.exception.BizException;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 网络教室房间(ImNetworkRoom)表服务实现类
|
|
|
+ *
|
|
|
+ * @author zx
|
|
|
+ * @since 2022-03-30 16:36:36
|
|
|
+ */
|
|
|
+@Service("imNetworkRoomService")
|
|
|
+public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom> implements ImNetworkRoomService {
|
|
|
+
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(ImNetworkRoomServiceImpl.class);
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+ @Resource
|
|
|
+ private ImNetworkRoomMemberService imNetworkRoomMemberService;
|
|
|
+ @Resource
|
|
|
+ private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
+ @Resource
|
|
|
+ private CourseScheduleStudentMusicScoreService courseScheduleStudentMusicScoreService;
|
|
|
+ @Resource
|
|
|
+ private SysConfigDao sysConfigDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ImNetworkRoomDao getDao() {
|
|
|
+ return this.baseMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public NetworkRoomResult joinRoom(Long courseScheduleId, UserRoleEnum userRole) {
|
|
|
+ SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
|
|
|
+ orElseThrow(()-> new BizException("请登录"));
|
|
|
+ Date now = new Date();
|
|
|
+ String roomId = courseScheduleId.toString();
|
|
|
+ ImNetworkRoomResult joinRoomResult = new ImNetworkRoomResult();
|
|
|
+ //获取房间
|
|
|
+ ImNetworkRoom room = initRoom(roomId,courseScheduleId,userRole,sysUser.getId());
|
|
|
+ BeanUtils.copyProperties(room,joinRoomResult);
|
|
|
+ //创建群聊
|
|
|
+ //定时销毁房间
|
|
|
+ //获取房间用户信息
|
|
|
+ ImNetworkRoomMember roomMember = imNetworkRoomMemberService.initRoomMember(roomId,sysUser,userRole);
|
|
|
+ joinRoomResult.setRoomMember(roomMember);
|
|
|
+ //获取房间所有成员
|
|
|
+ List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.getDao().queryByRoomId(roomId);
|
|
|
+ joinRoomResult.setRoomMemberList(roomMemberList);
|
|
|
+ //如果是老师,重置节拍器数据
|
|
|
+ if(userRole == UserRoleEnum.TEACHER){
|
|
|
+ courseScheduleStudentPaymentService.getDao().cleanPlayMidi(courseScheduleId);
|
|
|
+ }
|
|
|
+ //获取用户已下载的伴奏列表
|
|
|
+ List<CourseScheduleStudentMusicScoreResult> musicScoreResults = courseScheduleStudentMusicScoreService.getDao().
|
|
|
+ queryByScoreIdAndCourseId(null,courseScheduleId,sysUser.getId(),null,null);
|
|
|
+ joinRoomResult.setMusicScoreResults(musicScoreResults);
|
|
|
+ //网络教室配置项
|
|
|
+ String autoCloseNetworkRoomTime = sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE, courseSchedule.getTenantId());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ImNetworkRoom initRoom(String roomId,Long courseId,UserRoleEnum userRole,Long userId){
|
|
|
+ ImNetworkRoom room = baseMapper.findByRoomId(roomId);
|
|
|
+ if(Objects.isNull(room)){
|
|
|
+ Date date = new Date();
|
|
|
+ room = new ImNetworkRoom();
|
|
|
+ //创建房间
|
|
|
+ room.setCourseScheduleId(courseId);
|
|
|
+ room.setRoomId(roomId);
|
|
|
+ room.setCreateTime(date);
|
|
|
+ room.setUpdateTime(date);
|
|
|
+ baseMapper.insert(room);
|
|
|
+ }else {
|
|
|
+ if(userRole == UserRoleEnum.TEACHER){
|
|
|
+ room.setDisplay(new StringBuilder("display://type=1?userId=")
|
|
|
+ .append(userId)
|
|
|
+ .append("?uri=").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return room;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateDisplay(){
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|