瀏覽代碼

网络教室

zouxuan 3 年之前
父節點
當前提交
bf2afd716a

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentVo;
@@ -88,5 +89,7 @@ public interface CourseScheduleStudentPaymentDao extends BaseMapper<CourseSchedu
 
     //查询报课学员
     List<CourseScheduleStudentVo> selectUser();
+
+    List<BasicUserInfo> queryNoJoinStu(@Param("scheduleId") Long scheduleId);
 }
 

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java

@@ -7,6 +7,8 @@ import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom;
 import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
+import java.util.List;
+
 /**
  * 网络教室房间(ImNetworkRoom)表服务接口
  *
@@ -58,5 +60,8 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
 
     //学员设备状态同步
     void deviceStatusSync(ImNetworkDeviceControlDto deviceStatusSync) throws Exception;
+
+    //查询不在教室的学员
+    List<BasicUserInfo> queryNoJoinStu(Long roomId);
 }
 

+ 21 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -26,6 +26,9 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -202,10 +205,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void leaveRoomSuccess(String roomId, Long userId) throws Exception {
         log.info("leaveRoomSuccess: roomId={}, userId={}", roomId, userId);
-        CourseSchedule courseSchedule = courseScheduleService.getById(roomId);
-        if(Objects.isNull(courseSchedule)){
-            return;
-        }
+        CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(roomId))
+                .orElseThrow(()->new BizException("房间信息不存在"));
         UserRoleEnum roleEnum = UserRoleEnum.STUDENT;
         if(Objects.equals(courseSchedule.getTeacherId(),userId)){
             roleEnum = UserRoleEnum.TEACHER;
@@ -482,9 +483,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 orElseThrow(()->new BizException("房间信息不存在"));
         imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
 
-        ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),deviceControl.getEnable());
-        deviceResourceMessage.setUserId(sysUser.getId().toString());
-        imHelper.publishMessage(sysUser.getId().toString(), deviceControl.getRoomId(), deviceResourceMessage, 1);
+        //发送设备状态变更消息
+        this.sendDeviceStateChangedMessage(deviceControl, sysUser.getId(),100);
     }
 
     @Override
@@ -524,10 +524,21 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 deviceType == ImNetworkDeviceTypeEnum.MUSIC_MODE){
             imNetworkRoomMemberService.getDao().updateById(roomMember);
         }
-        ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceType.ordinal(),deviceStatusSync.getEnable());
-        deviceResourceMessage.setUserId(userId.toString());
+        //发送设备状态同步消息
         ImNetworkRoom room = baseMapper.findByRoomId(deviceStatusSync.getRoomId());
-        deviceResourceMessage.setSoundVolume(room.getSoundVolume());
+        this.sendDeviceStateChangedMessage(deviceStatusSync,userId,room.getSoundVolume());
+    }
+
+    @Override
+    public List<BasicUserInfo> queryNoJoinStu(Long roomId) {
+        return courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
+    }
+
+    //发送设备状态同步消息
+    private void sendDeviceStateChangedMessage(ImNetworkDeviceControlDto deviceStatusSync,Long userId,Integer soundVolume) throws Exception {
+        ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceStatusSync.getDeviceType().ordinal(),deviceStatusSync.getEnable());
+        deviceResourceMessage.setUserId(userId.toString());
+        deviceResourceMessage.setSoundVolume(soundVolume);
         imHelper.publishMessage(userId.toString(), deviceStatusSync.getRoomId(), deviceResourceMessage, 1);
     }
 

+ 8 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -162,4 +162,12 @@
         AND NOW() &gt;= c.end_time_
         ORDER BY c.end_time_
     </select>
+    <select id="queryNoJoinStu" resultMap="com.yonge.cooleshow.biz.dal.dao.TeacherDao.BasicUserInfo">
+        SELECT CASE WHEN su.username_ IS NULL THEN su.real_name_ ELSE su.username_ END username_,
+        su.avatar_,cssp.user_id_
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
+        WHERE cssp.course_id_ = #{scheduleId}
+        AND NOT EXISTS (SELECT rm.user_id_ FROM im_network_room_member rm WHERE rm.room_id_ = #{scheduleId} AND rm.user_id_ = cssp.user_id_)
+    </select>
 </mapper>

+ 8 - 4
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java

@@ -15,10 +15,7 @@ import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.Optional;
@@ -167,5 +164,12 @@ public class ImNetworkRoomController extends BaseController {
         imNetworkRoomService.musicSheetDownNotify(roomId,accompanimentId,status);
         return succeed();
     }
+
+    @ApiImplicitParam(name = "roomId", dataType = "Long", value = "房间号",required = true)
+    @ApiOperation(value = "查询不在教室的学员")
+    @PostMapping(value = "/queryNoJoinStu", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public HttpResponseResult queryNoJoinStu(Long roomId){
+        return succeed(imNetworkRoomService.queryNoJoinStu(roomId));
+    }
 }