zouxuan 5 年之前
父節點
當前提交
8e371deb80

+ 7 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/core/provider/PhoneAuthenticationProvider.java

@@ -4,6 +4,7 @@ import com.keao.edu.auth.api.dto.SysUserInfo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
+import org.springframework.security.authentication.LockedException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -60,6 +61,12 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 		if (userInfo == null) {
 			throw new InternalAuthenticationServiceException("账户不存在");
 		}
+		if(loginEntity.getClientId().equalsIgnoreCase("system")){
+			Integer lockFlag = sysUserService.queryEmployeeLockFlag(userInfo.getSysUser().getId());
+			if(lockFlag == 1){
+				throw new LockedException("账户被锁定");
+			}
+		}
 
 		UserDetails loadedUser;
 		try {

+ 7 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/dal/dao/SysUserDao.java

@@ -66,4 +66,11 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	Integer getTeacherOrganId(Integer userId);
 
 	Integer getEmployeeOrganId(Integer userId);
+
+	/**
+	 * 获取员工冻结状态
+	 * @param id
+	 * @return
+	 */
+    Integer queryEmployeeLockFlag(Integer id);
 }

+ 3 - 4
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/SysUserService.java

@@ -120,10 +120,9 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
     Integer queryUserOrganId(String clientId, Integer userId);
 
 	/**
-	 * 获取用户organId
-	 * @param clientId
-	 * @param userId
+	 * 员工是否被锁定
+	 * @param id
 	 * @return
 	 */
-    Integer queryEmployee(String clientId, Integer userId);
+	Integer queryEmployeeLockFlag(Integer id);
 }

+ 5 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/impl/SysUserServiceImpl.java

@@ -172,4 +172,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		return null;
 	}
 
+	@Override
+	public Integer queryEmployeeLockFlag(Integer id) {
+		return sysUserDao.queryEmployeeLockFlag(id);
+	}
+
 }

+ 3 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -197,5 +197,8 @@
     <select id="getTeacherOrganId" resultType="java.lang.Integer">
         SELECT t.organ_id_ FROM teacher t WHERE t.user_id_ = #{userId} LIMIT 1
     </select>
+    <select id="queryEmployeeLockFlag" resultType="java.lang.Integer">
+        SELECT e.lock_flag_ FROM employee e WHERE e.user_id_ = #{userId} LIMIT 1
+    </select>
 
 </mapper>

+ 1 - 0
edu-im/edu-im-server/src/main/java/com/keao/edu/im/controller/RoomController.java

@@ -98,6 +98,7 @@ public class RoomController{
             //房间销毁
         }else if(notify.getEvent() == 11){
             //成员加入
+            roomService.configRecord(notify.getChannelId(),notify.getUserId());
         }else if(notify.getEvent() == 12){
             //成员退出
             roomService.leaveRoom(null,notify.getChannelId(),notify.getUserId());

+ 1 - 1
edu-im/edu-im-server/src/main/java/com/keao/edu/im/dao/RoomMemberDao.java

@@ -18,7 +18,7 @@ import java.util.List;
 public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
     public List<RoomMember> findByRid(String rid);
 
-    public List<RoomMember> findByRidAndUid(String rid, String uid);
+    public RoomMember findByRidAndUid(String rid, String uid);
 
     public List<RoomMember> findByRidAndRole(String rid, int role);
 

+ 33 - 31
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -29,6 +29,7 @@ import com.keao.edu.user.api.entity.ExamRoom;
 import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.api.enums.StudentExamResultApiDto;
 import com.keao.edu.util.date.DateUtil;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,6 +85,8 @@ public class RoomServiceImpl implements RoomService {
 
     @Override
     public void configRecord(String roomId,String userId) throws Exception {
+        ExamRoom examRoom = eduUserFeignService.getExamRoom(Integer.parseInt(roomId));
+        RoomMember roomMembers = roomMemberDao.findByRidAndUid(roomId, userId);
 //        imHelper.configRecord(roomId,userId);
     }
 
@@ -264,8 +267,8 @@ public class RoomServiceImpl implements RoomService {
         BaseResponse baseResponse = new BaseResponse(roomResult);
         RoomResult.MemberResult userResult = new RoomResult.MemberResult();
         userResult.setShieldUserId(examRoom.getShieldUserId());
-        List<RoomMember> memberList = roomMemberDao.findByRidAndUid(roomId, userId);
-        if (memberList.isEmpty()) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if (roomMember == null) {
             if(sysUser.getId().equals(examRoom.getMainTeacherUserId())){
                 roleEnum = RoleEnum.MainTeacher;
             }else if(isAssistant){
@@ -295,7 +298,6 @@ public class RoomServiceImpl implements RoomService {
             userResult.setJoinTime(curTime);
             log.info("user join the room: roomId={} , userId={}, roleEnum={}", roomId, userId, roleEnum);
         } else {
-            RoomMember roomMember = memberList.get(0);
             roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
             if(roleEnum == Student){
                 ExamRoomStudentRelation examRoomStudentRelation = eduUserFeignService.getExamRoomStudentRelation(registrationId);
@@ -438,14 +440,14 @@ public class RoomServiceImpl implements RoomService {
             return false;
 //            throw new ApiException(ErrorEnum.ERR_ROOM_NOT_EXIST);
         }
-        List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
-        if (roomMemberList.size() == 0) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if (roomMember == null) {
             log.error("{} not exist in room: {}", userId, roomId);
             return false;
 //            throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         }
 
-        int userRole = roomMemberList.get(0).getRole();
+        int userRole = roomMember.getRole();
         log.info("leaveRoom: roomId={}, role={}", roomId, RoleEnum.getEnumByValue(userRole));
 
         /*if (userRole == RoleEnum.MainTeacher.getValue() || userRole == RoleEnum.AssistantTeacher.getValue()) {
@@ -515,13 +517,13 @@ public class RoomServiceImpl implements RoomService {
             log.error("levelRecorded room : {} not exist ", roomId);
             return false;
         }
-        List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
-        if (roomMemberList.size() == 0) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if (roomMember == null) {
             log.error("levelRecorded {} not exist in room: {}", userId, roomId);
             return false;
         }
 
-        int userRole = roomMemberList.get(0).getRole();
+        int userRole = roomMember.getRole();
         log.info("levelRecorded: roomId={}, role={}", roomId, RoleEnum.getEnumByValue(userRole));
 
         if (roomMemberDao.countByRid(roomId) == 1) {
@@ -641,8 +643,8 @@ public class RoomServiceImpl implements RoomService {
                 log.error("can not change self role: {}, {}, {}", roomId, userId, changedRole);
                 throw new ApiException(ErrorEnum.ERR_CHANGE_SELF_ROLE);
             } else {
-                List<RoomMember> oldUsers = roomMemberDao.findByRidAndUid(roomId, changedUserId);
-                if (oldUsers.size() > 0) {
+                RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, changedUserId);
+                if (roomMember != null) {
                     /*if (changedRole.equals(RoleEnum.RoleAudience)) {
                         int r = roomMemberDao.updateRoleByRidAndUid(roomId, changedUserId, changedRole.getValue());
                         RoleChangedMessage.ChangedUser u = new RoleChangedMessage.ChangedUser(changedUserId, changedRole.getValue());
@@ -654,10 +656,10 @@ public class RoomServiceImpl implements RoomService {
                         log.info("change the role: {}, {}, {}, result: {}", roomId, userId, changedRole, r);
                         result = true;
                     }*/
-                    if (oldUsers.get(0).getRole() != Student.getValue() && isUserDisplay(roomList.get(0), oldUsers.get(0).getUid())) {
+                    if (roomMember.getRole() != Student.getValue() && isUserDisplay(roomList.get(0), roomMember.getUid())) {
                         updateDisplay(roomId, userId, "", 1);
                     } else {
-                        log.info("don't update display: room={}, userRole={}", roomList.get(0), RoleEnum.getEnumByValue(oldUsers.get(0).getRole()));
+                        log.info("don't update display: room={}, userRole={}", roomList.get(0), RoleEnum.getEnumByValue(roomMember.getRole()));
                     }
                 } else {
                     log.info("role changed fail, not exist: {} - {} - {}", roomId, userId, changedRole);
@@ -719,13 +721,13 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(userId != null, "userId must't be null");
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
 
-        List<RoomMember> kickedUsers = roomMemberDao.findByRidAndUid(roomId, data.getUserId());
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, data.getUserId());
         int result = roomMemberDao.deleteUserByRidAndUid(roomId, data.getUserId());
         log.info("kickMember: roomId={}, userId={}, result = {}", roomId, userId, result);
         if (result == 0) {
             throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         } else {
-            MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Kick, data.getUserId(), kickedUsers.get(0).getRole());
+            MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Kick, data.getUserId(), roomMember.getRole());
             List<UserInfo> userInfoList = userDao.findByUid(data.getUserId());
             if (!userInfoList.isEmpty()) {
                 msg.setUserName(userInfoList.get(0).getName());
@@ -1210,8 +1212,8 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(!userId.equals(userId), "can't set self role");
 
         log.info("transfer: roomId = {}, userId = {}", roomId, userId);
-        List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
-        if (roomMemberList.size() == 0) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if (roomMember == null) {
             log.error("assistant transfer error: {} toUser = {}, opUser={}", roomId, userId, userId);
             throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         }
@@ -1251,8 +1253,8 @@ public class RoomServiceImpl implements RoomService {
         String userId = authUser.getId().toString();
         log.info("inviteUpgradeRole roomId = {}, targetUserId = {}, targetRole = {}", roomId, targetUserId, targetRole);
 
-        List<RoomMember> targetUser = roomMemberDao.findByRidAndUid(roomId, targetUserId);
-        if (targetUser.isEmpty()) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, targetUserId);
+        if (roomMember == null) {
             throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         }
 
@@ -1291,8 +1293,8 @@ public class RoomServiceImpl implements RoomService {
         UpgradeRoleTaskInfo taskInfo = (UpgradeRoleTaskInfo) scheduleManager.executeTask(ticket);
         log.info("approveUpgradeRole roomId = {}, task={}", roomId, taskInfo);
 
-        List<RoomMember> targetUser = roomMemberDao.findByRidAndUid(roomId, userId);
-        if (targetUser.isEmpty()) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if (roomMember == null) {
             throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         }
         if (!taskInfo.getTargetUserId().equals(userId)) {
@@ -1354,12 +1356,12 @@ public class RoomServiceImpl implements RoomService {
         SysUser authUser = sysUserFeignService.queryUserInfo();
         String userId = authUser.getId().toString();
 
-        List<RoomMember> targetUser = roomMemberDao.findByRidAndUid(roomId, targetUserId);
-        if (targetUser.isEmpty()) {
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, targetUserId);
+        if (roomMember == null) {
             throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         } else {
-            if (!RoleEnum.getEnumByValue(targetUser.get(0).getRole()).equals(Student)) {
-                log.error("change role error: targetUserId={}, targetRole = {}", targetUser, RoleEnum.getEnumByValue(targetRole));
+            if (!RoleEnum.getEnumByValue(roomMember.getRole()).equals(Student)) {
+                log.error("change role error: targetUserId={}, targetRole = {}", roomMember, RoleEnum.getEnumByValue(targetRole));
                 throw new ApiException(ErrorEnum.ERR_CHANGE_ROLE);
             }
         }
@@ -1491,8 +1493,8 @@ public class RoomServiceImpl implements RoomService {
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public boolean statusSync(String roomId,String userId) throws Exception {
         log.info("statusSync: roomId={}, userId={}", roomId, userId);
-        List<RoomMember> byRidAndUid = roomMemberDao.findByRidAndUid(roomId, userId);
-        if(byRidAndUid.size() > 0){
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+        if(roomMember != null){
 //            SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
 
         	List<Room> roomList = roomDao.findByRid(roomId);
@@ -1501,13 +1503,13 @@ public class RoomServiceImpl implements RoomService {
                 throw new ApiException(ErrorEnum.ERR_ROOM_NOT_EXIST);
             }
 
-            List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
-            if (roomMemberList.size() == 0) {
+//            List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
+            /*if (roomMemberList.size() == 0) {
                 log.error("{} not exist in room: {}", userId, roomId);
                 throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
-            }
+            }*/
 
-            int userRole = roomMemberList.get(0).getRole();
+            int userRole = roomMember.getRole();
             log.info("statusSync: roomId={}, role={}", roomId, RoleEnum.getEnumByValue(userRole));
 
             if (userRole == RoleEnum.MainTeacher.getValue() || userRole == RoleEnum.AssistantTeacher.getValue()) {

+ 1 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java

@@ -251,6 +251,7 @@ public class StudentExamResultServiceImpl extends BaseServiceImpl<Long, StudentE
 					}
 					studentExamResult.setVideoUrl(videoUrl);
 					studentExamResultDao.update(studentExamResult);
+					imFeignService.publishMessage(examRoomStudentRelationService.getPublishMessage(registrationId));
 				}
 			}
 		}