zouxuan 5 years ago
parent
commit
fd5ae96eb6

+ 7 - 0
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -138,6 +138,13 @@ public class RoomController{
         return new BaseResponse<>(result);
     }
 
+    @RequestMapping(value = "/device/batchControl", method = RequestMethod.POST)
+    public Object batchControlDevice(@RequestBody ReqDeviceControlData data)
+            throws ApiException, Exception {
+        boolean result = roomService.batchControlDevice(data);
+        return new BaseResponse<>(result);
+    }
+
     @RequestMapping(value = "/device/sync", method = RequestMethod.POST)
     public Object syncDeviceState(@RequestBody ReqDeviceControlData data)
             throws ApiException, Exception {

+ 39 - 0
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -784,6 +784,45 @@ public class RoomServiceImpl implements RoomService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean batchControlDevice(ReqDeviceControlData data) throws ApiException, Exception {
+        //获取所有的学员列表
+        List<RoomMember> roomMembers = roomMemberDao.findByRidAndRole(data.getRoomId(),RoleEnum.RoleStudent.getValue());
+        if(roomMembers.size() == 0){
+            return false;
+        }
+        boolean result = true;
+        if (data.getCameraOn() != null) {
+            roomMembers.forEach(e->{
+                try {
+                    controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Camera, data.getCameraOn());
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            });
+        } else if (data.getMicrophoneOn() != null) {
+            roomMembers.forEach(e->{
+                try {
+                    controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            });
+        } else if (data.getMusicModeOn() != null) {
+            roomMembers.forEach(e->{
+                try {
+                    controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            });
+        } else {
+            throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
+        }
+        return result;
+    }
+
+    @Override
     public Boolean approveControlDevice(String roomId, String ticket) throws ApiException, Exception {
         CheckUtils.checkArgument(ticket != null, "ticket must't be null");
         SysUser authUser = sysUserFeignService.queryUserInfo();

+ 3 - 5
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -1,10 +1,7 @@
 package com.ym.service;
 
 import com.ym.common.ApiException;
-import com.ym.pojo.DeviceTypeEnum;
-import com.ym.pojo.ReqChangeUserRoleData;
-import com.ym.pojo.ReqMemberOnlineStatus;
-import com.ym.pojo.RoomResult;
+import com.ym.pojo.*;
 
 import java.util.List;
 
@@ -38,6 +35,8 @@ public interface RoomService {
 
     public Boolean controlDevice(String roomId, String userId, DeviceTypeEnum type, boolean enable) throws ApiException, Exception;
 
+    Boolean batchControlDevice(ReqDeviceControlData data) throws ApiException, Exception;
+
     public Boolean approveControlDevice(String roomId, String ticket) throws ApiException, Exception;
 
     public Boolean rejectControlDevice(String roomId, String ticket) throws ApiException, Exception;
@@ -67,5 +66,4 @@ public interface RoomService {
     public void userIMOfflineKick(String userId);
 
     boolean statusSync(String roomId,String userId) throws Exception;
-
 }