| 
					
				 | 
			
			
				@@ -2,6 +2,9 @@ package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dao.TeacherAttendanceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.CourseSchedule; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.TeacherAttendance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.StudentAttendance; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -9,14 +12,22 @@ import com.yonge.cooleshow.biz.dal.vo.StudentAttendanceVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.StudentAttendanceSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.StudentAttendanceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.StudentAttendanceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Objects; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceDao, StudentAttendance> implements StudentAttendanceService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public StudentAttendanceDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.baseMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public StudentAttendanceVo detail(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentAttendanceVo detail = baseMapper.detail(id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -40,4 +51,52 @@ public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public StudentAttendance signIn(Long userId, CourseSchedule courseSchedule) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询是否已经签到 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果存在则跳过,如果不存在则新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StudentAttendance studentAttendance = getDao().findByUserIdAndCourseId(userId, courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Objects.nonNull(studentAttendance)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(Objects.isNull(studentAttendance.getSignInTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                studentAttendance.setSignInTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getDao().updateById(studentAttendance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return studentAttendance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance = createAttendance(userId, courseSchedule, now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getDao().insert(studentAttendance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return studentAttendance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void signOut(Long userId, CourseSchedule courseSchedule) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //更新签到记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StudentAttendance studentAttendance = getDao().findByUserIdAndCourseId(userId, courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date now = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Objects.isNull(studentAttendance)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentAttendance = createAttendance(userId, courseSchedule,now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentAttendance.setSignOutTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentAttendance.setSignInTime(courseSchedule.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getDao().insert(studentAttendance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentAttendance.setSignOutTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentAttendance.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getDao().updateById(studentAttendance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private StudentAttendance createAttendance(Long userId, CourseSchedule courseSchedule,Date now) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StudentAttendance studentAttendance = new StudentAttendance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setCourseScheduleId(courseSchedule.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setStudentId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setSignInTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setCourseGroupId(courseSchedule.getCourseGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setCourseGroupType(courseSchedule.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setCreateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentAttendance.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return studentAttendance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |