Explorar o código

Merge branch 'zouxuan' of http://git.dayaedu.com/yonge/mec

zouxuan %!s(int64=5) %!d(string=hai) anos
pai
achega
db390e172d

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -297,7 +297,7 @@
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
-		WHERE (ta.sign_in_status_ IS NOT NULL OR ta.sign_out_status_ IS NOT NULL) AND sa.id_ IS NOT NULL
+		WHERE (ta.sign_in_status_ IS NOT NULL OR ta.sign_out_status_ IS NOT NULL) AND sa.status_ = 'NORMAL'
 		<if test="days!=null">
 			AND cs.class_date_ &lt;= DATE_FORMAT(DATE_ADD( NOW( ), INTERVAL - #{days} DAY ),'%Y-%m-%d')
 		</if>

+ 9 - 1
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -9,7 +9,6 @@ import com.ym.service.RoomService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 
 /**
@@ -136,6 +135,13 @@ public class RoomController{
         return new BaseResponse<>(result);
     }
 
+    @RequestMapping(value = "/device/batchControl", method = RequestMethod.POST)
+    public Object batchControlDevice(@RequestBody ReqDeviceControlData data)throws Exception {
+        log.info("batchControl: {}",JSONObject.toJSON(data));
+        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 {
@@ -144,6 +150,8 @@ public class RoomController{
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.Camera, data.getCameraOn());
         } else if (data.getMicrophoneOn() != null) {
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
+        } else if (data.getMusicModeOn() != null) {
+            result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
         } else {
             throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
         }

+ 34 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -103,7 +103,7 @@ public class RoomServiceImpl implements RoomService {
     @Value("${auth.sysconfig.tenantId}")
     private Integer lesseeOrganId;
 
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Override
     public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera) throws ApiException, Exception {
         CheckUtils.checkArgument(userName != null, "userName must't be null");
@@ -775,12 +775,39 @@ public class RoomServiceImpl implements RoomService {
             if (!userInfoList.isEmpty()) {
                 deviceResourceMessage.setUserName(userInfoList.get(0).getName());
             }
-            imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
+            imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
         }
         return true;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean batchControlDevice(ReqDeviceControlData data) throws Exception {
+        //获取所有的学员列表
+        List<RoomMember> roomMembers = roomMemberDao.findByRidAndRole(data.getRoomId(),RoleEnum.RoleStudent.getValue());
+        if(roomMembers.size() == 0){
+            return false;
+        }
+        boolean result = true;
+        if (data.getCameraOn() != null) {
+            for (RoomMember e:roomMembers) {
+                controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Camera, data.getCameraOn());
+            }
+        } else if (data.getMicrophoneOn() != null) {
+            for (RoomMember e:roomMembers) {
+                controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
+            }
+        } else if (data.getMusicModeOn() != null) {
+            for (RoomMember e:roomMembers) {
+                controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
+            }
+        } 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();
@@ -821,6 +848,7 @@ public class RoomServiceImpl implements RoomService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean syncDeviceState(String roomId, DeviceTypeEnum type, boolean enable) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
@@ -832,9 +860,12 @@ public class RoomServiceImpl implements RoomService {
         if (type.equals(DeviceTypeEnum.Camera)) {
             result = roomMemberDao.updateCameraByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
-        } else {
+        } else if (type.equals(DeviceTypeEnum.Microphone)){
             result = roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
+        }else {
+            result = roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
+            deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
         }
         deviceResourceMessage.setUserId(userId);
         imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);

+ 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 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;
-
 }