Selaa lähdekoodia

网络教室新增签到签退设备号

zouxuan 4 vuotta sitten
vanhempi
commit
03df42b36b

+ 17 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -102,15 +102,26 @@ public class TeacherAttendance {
 	@ApiModelProperty(value = "考勤申述凭证")
 	private String url;
 
-	@ApiModelProperty(value = "设备号")
-	private String deviceNum;
+	@ApiModelProperty(value = "签到设备号")
+	private String signInDeviceNo;
 
-	public String getDeviceNum() {
-		return deviceNum;
+	@ApiModelProperty(value = "签退设备号")
+	private String signOutDeviceNo;
+
+	public String getSignInDeviceNo() {
+		return signInDeviceNo;
+	}
+
+	public void setSignInDeviceNo(String signInDeviceNo) {
+		this.signInDeviceNo = signInDeviceNo;
+	}
+
+	public String getSignOutDeviceNo() {
+		return signOutDeviceNo;
 	}
 
-	public void setDeviceNum(String deviceNum) {
-		this.deviceNum = deviceNum;
+	public void setSignOutDeviceNo(String signOutDeviceNo) {
+		this.signOutDeviceNo = signOutDeviceNo;
 	}
 
 	public String getUrl() {

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -37,7 +37,8 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @return void
 	 */
 	void addTeacherAttendanceSignOut(Long courseScheduleId,
-									Integer userId);
+									Integer userId,
+									 String deviceNum);
 
 
 
@@ -51,7 +52,7 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @param courseScheduleId:
 	 * @return void
 	 */
-	void addTeacherAttendanceSignIn(Long firstCourseId,Integer userId, Long courseScheduleId);
+	void addTeacherAttendanceSignIn(Long firstCourseId,Integer userId, Long courseScheduleId,String deviceNum);
 
 	/**
 	 * 获取教师个人的签到记录

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -278,7 +278,8 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         teacherAttendance.setSignOutStatus(isInScore?YesOrNoEnum.YES:YesOrNoEnum.NO);
         teacherAttendance.setCurrentClassTimes(classTimes + 1);
         teacherAttendance.setRemark(studentAttendanceInfos.getRemark());
-        teacherAttendance.setDeviceNum(studentAttendanceInfos.getDeviceNum());
+        teacherAttendance.setSignInDeviceNo(studentAttendanceInfos.getDeviceNum());
+        teacherAttendance.setSignOutDeviceNo(studentAttendanceInfos.getDeviceNum());
         teacherAttendance.setSignOutAttachments(studentAttendanceInfos.getSignOutAttachments());
         if (Objects.nonNull(teacherAttendance.getId())) {
             teacherAttendanceDao.update(teacherAttendance);

+ 13 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -295,7 +295,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void addTeacherAttendanceSignOut(Long firstCourseId, Integer userId) {
+	public void addTeacherAttendanceSignOut(Long firstCourseId, Integer userId,String deviceNum) {
 		Date date = new Date();
 		//签退
 		CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId);
@@ -335,19 +335,19 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			//不是最后一节课
 			if(i == courseSchedules.size() - 1){
 				if(date.after(endDateTime)){
-					isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,schedule,firstCourseId);
+					isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.YES,schedule,firstCourseId,deviceNum);
 				}else {
-					isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,schedule,firstCourseId);
+					isBreak = upsetAttendance(userId,startDateTime,date,YesOrNoEnum.NO,schedule,firstCourseId,deviceNum);
 				}
 			}else {
-				isBreak = upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,schedule,firstCourseId);
+				isBreak = upsetAttendance(userId,startDateTime,endDateTime,YesOrNoEnum.YES,schedule,firstCourseId,deviceNum);
 			}
 		}
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void addTeacherAttendanceSignIn(Long firstCourseId, Integer userId, Long courseScheduleId) {
+	public void addTeacherAttendanceSignIn(Long firstCourseId, Integer userId, Long courseScheduleId,String deviceNum) {
 		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId.intValue(),0);
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId);
 		if(Objects.isNull(teacherAttendance)){
@@ -358,9 +358,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
 			teacherAttendance.setClassGroupId(classGroup.getId());
 			teacherAttendance.setTeacherId(userId);
+			teacherAttendance.setSignInDeviceNo(deviceNum);
 			teacherAttendance.setCurrentScheduleId(firstCourseId);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else {
+			if(StringUtils.isEmpty(teacherAttendance.getSignInDeviceNo())){
+				teacherAttendance.setSignInDeviceNo(deviceNum);
+			}
 			teacherAttendance.setCurrentScheduleId(firstCourseId);
 			teacherAttendance.setGroupType(classGroup.getGroupType());
 			teacherAttendance.setTeacherId(userId);
@@ -400,7 +404,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 	}
 
-	public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule,Long courseScheduleId){
+	public Boolean upsetAttendance(Integer userId,Date signInTime,Date signOutTime,YesOrNoEnum status,CourseSchedule courseSchedule,Long courseScheduleId,String deviceNum){
 		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseSchedule.getId());
 		Boolean flag = false;
 		Long courseId = teacherAttendanceDao.findFirstSign(courseScheduleId,userId);
@@ -420,8 +424,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setSignOutTime(signOutTime);
 			teacherAttendance.setSignInTime(signInTime);
 			teacherAttendance.setCurrentScheduleId(courseScheduleId);
+			teacherAttendance.setSignInDeviceNo(deviceNum);
+			teacherAttendance.setSignOutDeviceNo(deviceNum);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else {
+			teacherAttendance.setSignOutDeviceNo(deviceNum);
 			teacherAttendance.setSignOutStatus(status);
 			teacherAttendance.setSignOutTime(signOutTime);
 			teacherAttendance.setCurrentScheduleId(courseScheduleId);

+ 11 - 7
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -34,7 +34,8 @@
         <result column="sign_out_attachments_" property="signOutAttachments"/>
         <result column="sign_out_remark_" property="signOutRemark"/>
         <result column="url_" property="url"/>
-        <result column="device_num_" property="deviceNum"/>
+        <result column="sign_in_device_no_" property="signInDeviceNo"/>
+        <result column="sign_out_device_no_" property="signOutDeviceNo"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -59,12 +60,12 @@
         INSERT INTO teacher_attendance
         (group_type_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,remark_,create_time_,sign_out_time_,
         sign_out_status_,current_class_times_,sign_in_longitude_latitude_,sign_out_longitude_latitude_,current_schedule_id_,sign_out_attachments_,
-        sign_out_remark_,update_attendance_type_,url_,device_num_)
+        sign_out_remark_,update_attendance_type_,url_,sign_in_device_no_,sign_out_device_no_)
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{teacherId},
         #{musicGroupId},#{classGroupId},#{courseScheduleId},#{signInTime},#{signInStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{remark},
         now(),#{signOutTime},#{signOutStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{currentClassTimes},#{signInLongitudeLatitude},#{signOutLongitudeLatitude},#{currentScheduleId},#{signOutAttachments},#{signOutRemark},
-        #{updateAttendanceEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{url},#{deviceNum})
+        #{updateAttendanceEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{url},#{signInDeviceNo},#{signOutDeviceNo})
     </insert>
 
     <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance" useGeneratedKeys="true"
@@ -72,7 +73,7 @@
         INSERT INTO teacher_attendance
         (group_type_,teacher_id_,music_group_id_,class_group_id_,course_schedule_id_,sign_in_time_,sign_in_status_,
         remark_,create_time_,sign_out_time_,sign_out_status_,sign_in_longitude_latitude_,sign_out_longitude_latitude_,current_schedule_id_,sign_out_attachments_,
-        sign_out_remark_,update_attendance_type_,url_,device_num_)
+        sign_out_remark_,update_attendance_type_,url_,sign_in_device_no_,sign_out_device_no_)
         VALUE
         <foreach collection="teacherAttendances" item="teacherAttendance" separator=",">
             (#{teacherAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -84,7 +85,7 @@
             #{teacherAttendance.signInLongitudeLatitude},#{teacherAttendance.signOutLongitudeLatitude},#{teacherAttendance.currentScheduleId},
             #{teacherAttendance.signOutAttachments},#{teacherAttendance.signOutRemark},
             #{teacherAttendance.updateAttendanceEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{teacherAttendance.url},
-            #{teacherAttendance.deviceNum})
+            #{teacherAttendance.signInDeviceNo},#{teacherAttendance.signOutDeviceNo})
         </foreach>
     </insert>
 
@@ -164,8 +165,11 @@
             <if test="signOutRemark != null">
                 sign_out_remark_ = #{signOutRemark},
             </if>
-            <if test="deviceNum != null and deviceNum!=''">
-                device_num_ = #{deviceNum},
+            <if test="signInDeviceNo != null and signInDeviceNo != ''">
+                sign_in_device_no_ = #{signInDeviceNo},
+            </if>
+            <if test="signOutDeviceNo != null and signOutDeviceNo != ''">
+                sign_out_device_no_ = #{signOutDeviceNo},
             </if>
         </set>
         WHERE id_ = #{id}

+ 5 - 4
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -41,7 +41,7 @@ public class RoomController{
     @RequestMapping(value = "/leave", method = RequestMethod.POST)
     public Object leaveRoom(@RequestBody RoomStatusNotify roomStatusNotify) throws Exception {
         //成员退出
-        roomService.leaveRoomSuccess(roomStatusNotify.getRoomId(), roomStatusNotify.getUserId());
+        roomService.leaveRoomSuccess(roomStatusNotify.getRoomId(), roomStatusNotify.getUserId(),roomStatusNotify.getDeviceNum());
         return new BaseResponse<>();
     }
 
@@ -67,8 +67,9 @@ public class RoomController{
         log.info("joinRoomStatusNotify: {}",JSONObject.toJSON(roomStatusNotify));
         String roomId = roomStatusNotify.getRoomId();
         String userId = roomStatusNotify.getUserId();
+        String deviceNum = roomStatusNotify.getDeviceNum();
         if(roomStatusNotify.isRequestStatus()){
-            roomService.joinRoomSuccess(roomId, userId);
+            roomService.joinRoomSuccess(roomId, userId,deviceNum);
         }else {
             roomService.joinRoomFailure(roomId, userId);
         }
@@ -84,11 +85,11 @@ public class RoomController{
         switch (notify.getEvent()){
             case 11:
                 //成员加入
-                roomService.joinRoomSuccess(roomId, userId);
+                roomService.joinRoomSuccess(roomId, userId,null);
                 break;
             case 12:
                 //成员退出
-                roomService.leaveRoomSuccess(roomId, userId);
+                roomService.leaveRoomSuccess(roomId, userId,null);
                 break;
         }
     }

+ 9 - 0
mec-im/src/main/java/com/ym/pojo/RoomStatusNotify.java

@@ -4,8 +4,17 @@ package com.ym.pojo;
 public class RoomStatusNotify {
 	private String roomId;
 	private String userId;
+	private String deviceNum;
 	private boolean requestStatus;
 
+	public String getDeviceNum() {
+		return deviceNum;
+	}
+
+	public void setDeviceNum(String deviceNum) {
+		this.deviceNum = deviceNum;
+	}
+
 	public String getRoomId() {
 		return roomId;
 	}

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

@@ -271,24 +271,23 @@ public class RoomServiceImpl implements RoomService {
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     @Override
-    public void joinRoomSuccess(String roomId,String userId) throws Exception {
+    public void joinRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
         if(roomMember == null){
             return ;
         }
-        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
-        if(redisTemplate.hasKey(joinSuccessKey)){
-            //兼容旧版本,防止重复调用
-            redisTemplate.delete(joinSuccessKey);
-            return;
-        }
-
-        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
-        if(redisTemplate.hasKey(leaveSuccessKey)){
-            redisTemplate.delete(leaveSuccessKey);
-        }
-        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
-        log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
+//        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
+//        if(redisTemplate.hasKey(joinSuccessKey)){
+//            //兼容旧版本,防止重复调用
+//            redisTemplate.delete(joinSuccessKey);
+//            return;
+//        }
+//        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+//        if(redisTemplate.hasKey(leaveSuccessKey)){
+//            redisTemplate.delete(leaveSuccessKey);
+//        }
+//        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
+//        log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         CourseSchedule schedule = courseScheduleDao.getLock(Long.parseLong(roomId.substring(1)));
@@ -351,10 +350,10 @@ public class RoomServiceImpl implements RoomService {
         msg.setExamSongSwitch(examSong);
         imHelper.publishMessage(userId, roomId, msg);
         log.info("join room success: roomId = {}, userId = {}, role = {}", roomId, userId, roleEnum);
-        signInSuccess(roomMember);
+        signInSuccess(roomMember,deviceNum);
     }
 
-    public void signInSuccess(RoomMember roomMember) {
+    public void signInSuccess(RoomMember roomMember,String deviceNum) {
         String roomId = roomMember.getRid();
         String userId = roomMember.getUid();
         String currentRoomIdKey = roomId + userId;
@@ -373,7 +372,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         if(roleEnum == RoleTeacher){
-            teacherAttendanceService.addTeacherAttendanceSignIn(firstCourseId,userIdInt,currentRoomId);
+            teacherAttendanceService.addTeacherAttendanceSignIn(firstCourseId,userIdInt,currentRoomId,deviceNum);
         }else {
             studentAttendanceService.addStudentAttendanceSignIn(firstCourseId,userIdInt,currentRoomId);
         }
@@ -406,30 +405,31 @@ public class RoomServiceImpl implements RoomService {
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     @Override
-    public void leaveRoomSuccess(String roomId,String userId) throws Exception {
+    public void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
         if(roomMember == null){
             return ;
         }
-        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
-        if(redisTemplate.hasKey(leaveSuccessKey)){
-            redisTemplate.delete(leaveSuccessKey);
-            return;
-        }
-        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
-        if(redisTemplate.hasKey(joinSuccessKey)){
-            redisTemplate.delete(joinSuccessKey);
-        }
-        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
-        //记录
-        log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
+//        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+//        if(redisTemplate.hasKey(leaveSuccessKey)){
+//            redisTemplate.delete(leaveSuccessKey);
+//            //如果设备号不为空,更新设备号
+//            return;
+//        }
+//        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
+//        if(redisTemplate.hasKey(joinSuccessKey)){
+//            redisTemplate.delete(joinSuccessKey);
+//        }
+//        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
+//        //记录
+//        log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));
 
         if(roleEnum == RoleTeacher){
             courseScheduleStudentPaymentDao.adjustPlayMidi(firstCourseId,null,null);
             courseScheduleStudentPaymentDao.adjustExamSong(firstCourseId.longValue(),null,null);
-            teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId));
+            teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId),deviceNum);
         }else {
             studentAttendanceService.addStudentAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId));
         }

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

@@ -20,9 +20,9 @@ public interface RoomService {
 
     Boolean kickMember(String roomId) throws Exception;
 
-    void joinRoomSuccess(String roomId,String userId) throws Exception;
+    void joinRoomSuccess(String roomId,String userId,String deviceNum) throws Exception;
 
-    void leaveRoomSuccess(String roomId,String userId) throws Exception;
+    void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception;
 
     //only teacher
     Boolean display(String roomId, int type, String uri, String userId) throws Exception;