소스 검색

网络教室

zouxuan 2 년 전
부모
커밋
56e91fe5af

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkRoomErrorEnum.java

@@ -1,7 +1,7 @@
 package com.yonge.cooleshow.biz.dal.enums;
 
 
-import com.yonge.cooleshow.common.enums.BaseEnum;
+import com.yonge.toolset.base.enums.BaseEnum;
 
 public enum ImNetworkRoomErrorEnum implements BaseEnum<Integer,ImNetworkRoomErrorEnum> {
     ERR_SUCCESS(200, "OK"),

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkRoomMemberChangedEnum.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.enums;
 
-import com.yonge.cooleshow.common.enums.BaseEnum;
+
+import com.yonge.toolset.base.enums.BaseEnum;
 
 /**
 * @description: 用户动作枚举

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

@@ -55,5 +55,8 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
 
     //学员伴奏下载状态回调
     void musicSheetDownNotify(String roomId, Long accompanimentId, Integer status) throws Exception;
+
+    //学员设备状态同步
+    void deviceStatusSync(ImNetworkDeviceControlDto deviceStatusSync) throws Exception;
 }
 

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.exceptions.ApiException;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -28,6 +29,8 @@ import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static org.bouncycastle.asn1.cms.CMSObjectIdentifiers.data;
+
 /**
  * 网络教室房间(ImNetworkRoom)表服务实现类
  *
@@ -460,6 +463,47 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void deviceStatusSync(ImNetworkDeviceControlDto deviceStatusSync) throws Exception {
+        log.info("deviceStatusSync: deviceStatusSync={}", deviceStatusSync);
+        SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
+                orElseThrow(()-> new BizException("请登录"));
+        ImNetworkDeviceTypeEnum deviceType = deviceStatusSync.getDeviceType();
+        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getById(deviceStatusSync.getRoomId());
+        switch (deviceType) {
+            case CAMERA:
+                roomMember.setCameraFlag(deviceStatusSync.getEnable());
+                break;
+            case MICROPHONE:
+                roomMember.setMicFlag(deviceStatusSync.getEnable());
+                break;
+            case HAND_UP:
+                roomMember.setHandFlag(deviceStatusSync.getEnable());
+                break;
+            case MUSIC_MODE:
+                roomMember.setMusicModeFlag(deviceStatusSync.getEnable());
+                break;
+            case EXAM_SONG:
+                long scheduleId = Long.parseLong(deviceStatusSync.getRoomId());
+                ImNetworkRoomMusicSheetDownloadData msg = courseScheduleStudentPaymentService.getMemberExamSong(scheduleId, sysUser.getId());
+                msg.setEnable(deviceStatusSync.getEnable());
+                courseScheduleStudentPaymentService.getDao().adjustExamSong(scheduleId, sysUser.getId(), JSON.toJSONString(msg));
+                break;
+        }
+        if(deviceType == ImNetworkDeviceTypeEnum.CAMERA ||
+                deviceType == ImNetworkDeviceTypeEnum.MICROPHONE ||
+                deviceType == ImNetworkDeviceTypeEnum.HAND_UP ||
+                deviceType == ImNetworkDeviceTypeEnum.MUSIC_MODE){
+            imNetworkRoomMemberService.getDao().updateById(roomMember);
+        }
+        ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceType.ordinal(),deviceStatusSync.getEnable());
+        deviceResourceMessage.setUserId(sysUser.getId().toString());
+        ImNetworkRoom room = this.getById(deviceStatusSync.getRoomId());
+        deviceResourceMessage.setSoundVolume(room.getSoundVolume());
+        imHelper.publishMessage(sysUser.getId().toString(), deviceStatusSync.getRoomId(), deviceResourceMessage, 1);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public void rejectControlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception {
         log.info("rejectControlDevice: deviceControl={}", deviceControl);
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).

+ 21 - 13
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImNetworkRoomController.java

@@ -4,7 +4,6 @@ package com.yonge.cooleshow.teacher.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.biz.dal.dto.*;
 import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
-import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -16,7 +15,10 @@ import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
+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 javax.annotation.Resource;
 import java.util.Optional;
@@ -38,16 +40,14 @@ public class ImNetworkRoomController extends BaseController {
      */
     @Resource
     private ImNetworkRoomService imNetworkRoomService;
-    @Resource
-    private CourseScheduleService courseScheduleService;
 
     @ApiOperation("加入网络教室")
     @PostMapping(value = "/join", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    @ApiImplicitParam(name = "courseScheduleId", dataType = "Long", value = "课程编号")
-    public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId) throws Exception {
-        courseScheduleId = Optional.ofNullable(courseScheduleId)
+    @ApiImplicitParam(name = "roomId", dataType = "Long", value = "课程编号")
+    public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long roomId) throws Exception {
+        roomId = Optional.ofNullable(roomId)
                 .orElseThrow(()->new BizException("房间号不可为空"));
-        return imNetworkRoomService.joinRoom(courseScheduleId, UserRoleEnum.TEACHER);
+        return imNetworkRoomService.joinRoom(roomId, UserRoleEnum.TEACHER);
     }
 
 //    @ApiOperation("加入网络教室状态回调")
@@ -59,8 +59,8 @@ public class ImNetworkRoomController extends BaseController {
 
     @ApiOperation("加入网络教室状态回调")
     @PostMapping(value = "joinRoomFailure", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public HttpResponseResult joinRoomFailure(Long courseScheduleId){
-        imNetworkRoomService.joinRoomFailure(courseScheduleId.toString());
+    public HttpResponseResult joinRoomFailure(Long roomId){
+        imNetworkRoomService.joinRoomFailure(roomId.toString());
         return succeed();
     }
 
@@ -81,10 +81,10 @@ public class ImNetworkRoomController extends BaseController {
     }
 
     @ApiOperation("退出网络教室")
-    @ApiImplicitParam(name = "courseScheduleId", dataType = "Long", value = "课程编号")
+    @ApiImplicitParam(name = "roomId", dataType = "Long", value = "课程编号")
     @PostMapping(value = "/leave", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public HttpResponseResult leaveRoom(Long courseScheduleId) throws Exception {
-        imNetworkRoomService.leaveRoom(courseScheduleId.toString(),UserRoleEnum.TEACHER);
+    public HttpResponseResult leaveRoom(Long roomId) throws Exception {
+        imNetworkRoomService.leaveRoom(roomId.toString(),UserRoleEnum.TEACHER);
         return succeed();
     }
 
@@ -132,6 +132,14 @@ public class ImNetworkRoomController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "学员设备状态同步")
+    @PostMapping(value = "/device/sync", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public Object deviceStatusSync(@RequestBody ImNetworkDeviceControlDto deviceControl)
+            throws Exception {
+        imNetworkRoomService.deviceStatusSync(deviceControl);
+        return succeed();
+    }
+
     @ApiImplicitParams({
             @ApiImplicitParam(name = "roomId", dataType = "String", value = "房间号",required = true),
             @ApiImplicitParam(name = "accompanimentId", dataType = "Long", value = "伴奏编号",required = true)