zouxuan 5 年之前
父節點
當前提交
5615f6c212

+ 23 - 34
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -56,7 +57,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	@Autowired
 	private SysMessageService sysMessageService;
 	@Autowired
-	private TeacherDao teacherDao;
+	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Long, StudentAttendance> getDAO() {
@@ -331,42 +332,30 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 	public void addStudentAttendanceRecord(Integer courseScheduleId, Integer userId, StudentAttendanceStatusEnum statusEnum) {
 		StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(userId,courseScheduleId);
 		if(studentAttendance == null){
-			studentAttendance = new StudentAttendance();
-			ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
+			//判断是否在签到时间段内(课程开始前20~结束前)
 			CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
-			Date date = new Date();
+			ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
 			if(classGroup != null && courseSchedule != null){
-				studentAttendance.setClassGroupId(classGroup.getId());
-				studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
-				studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes());
-				studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
-				studentAttendance.setStatus(statusEnum);
-				studentAttendance.setUserId(userId);
-				studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
-//				studentAttendance.setRemark(statusEnum==StudentAttendanceStatusEnum.NORMAL?"":"课程结束后学生未到");
-				studentAttendanceDao.insert(studentAttendance);
-				//点名完成推送
-//				Map<Integer, String> receivers = new HashMap<Integer, String>(1);
-//				receivers.put(userId, userId.toString());
-//				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE, receivers, null, 0, "2",
-//						DateUtil.format(date,DateUtil.DATE_FORMAT_MIN));
-				//修改课程状态(如果是学生签到,并且课程未开始)
-				/*if(StudentAttendanceStatusEnum.NORMAL == statusEnum && courseSchedule.getStatus() == CourseStatusEnum.NOT_START){
-					courseSchedule.setStatus(CourseStatusEnum.UNDERWAY);
-					courseSchedule.setUpdateTime(date);
-					courseScheduleDao.update(courseSchedule);
+				int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+				Date date = new Date();
+				String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+				String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				//上课时间
+				Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+				Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+				Date addMinutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
+				if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
+					studentAttendance = new StudentAttendance();
+					studentAttendance.setClassGroupId(classGroup.getId());
+					studentAttendance.setCourseScheduleId(courseScheduleId.longValue());
+					studentAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes());
+					studentAttendance.setMusicGroupId(classGroup.getMusicGroupId());
+					studentAttendance.setStatus(statusEnum);
+					studentAttendance.setUserId(userId);
+					studentAttendance.setTeacherId(courseSchedule.getActualTeacherId());
+					studentAttendanceDao.insert(studentAttendance);
 				}
-				if(StudentAttendanceStatusEnum.TRUANT == statusEnum && courseSchedule.getStatus() == CourseStatusEnum.UNDERWAY){
-					String classDate = DateUtil.getDate(courseSchedule.getClassDate());
-					String classTime = DateUtil.getTime(courseSchedule.getEndClassTime());
-					Date stringToDate = DateUtil.stringToDate(classDate + " " + classTime);
-					//当前课程已结束
-					if(DateUtil.minutesBetween(stringToDate,date) > 0){
-						courseSchedule.setStatus(CourseStatusEnum.OVER);
-						courseSchedule.setUpdateTime(date);
-						courseScheduleDao.update(courseSchedule);
-					}
-				}*/
 			}else {
 				throw new BizException("学员班级或课程信息异常");
 			}

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

@@ -423,6 +423,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if (sysUser == null) {
                 //新增user
                 sysUser = new SysUser();
+                sysUser.setPhone(studentRegistration.getParentsPhone());
                 sysUser.setRealName(studentRegistration.getName());
                 sysUser.setUsername(studentRegistration.getName());
                 sysUser.setGender(studentRegistration.getGender());
@@ -433,7 +434,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 //添加用户现金账户
                 sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
                 //添加用户电子签章账户
-                contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
+//                contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
                 //注册到融云
                 if (StringUtils.isEmpty(sysUser.getAvatar())) {
                     sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
@@ -503,7 +504,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
                 studentPaymentOrder.setUserId(userId);
                 studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-                studentPaymentOrder.setStatus(DealStatusEnum.ING);
+                studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
                 studentPaymentOrder.setMusicGroupId(musicGroupId);
                 studentPaymentOrder.setClassGroupId(classGroupId);
                 studentPaymentOrderService.insert(studentPaymentOrder);

+ 54 - 52
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -178,59 +178,73 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId.longValue());
 		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
 		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId.longValue());
-		boolean isAttendance=false;
-		Date now=new Date();
-
-		SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
-		Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
 
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance=new TeacherAttendance();
 			teacherAttendance.setCourseScheduleId(courseScheduleId.longValue());
-		}else{
-			isAttendance=true;
+			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes());
+			teacherAttendance.setTeacherId(userId);
+			teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
+			teacherAttendance.setClassGroupId(classGroup.getId());
+			teacherAttendance.setClassGroupId(courseScheduleId);
+			teacherAttendance.setTeacherId(userId);
+			teacherAttendanceDao.insert(teacherAttendance);
+		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
+			return;
 		}
 		teacherAttendance.setTeacherId(userId);
 		teacherAttendance.setClassGroupId(classGroup.getId());
 		teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
-
-		int timeGap = DateUtil.minutesBetween(now, courseSchedule.getStartClassTime());
-
-		YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
-				userId.longValue(),
-				false,
-				null);
-
-
-		switch (signStatus){
-			case SIGN_IN:
-				if (courseSchedule.getEndClassTime().after(now)){
-					teacherAttendance.setSignInTime(now);
-					if(yesOrNoEnum.equals(YesOrNoEnum.YES)||advanceSignInMinutes<=timeGap&&timeGap<=60){
-						teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-					}else{
-						teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+		Date date = new Date();
+		String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+		String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+		String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+		//上课时间
+		Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+		Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+		Date addMinutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
+		//签到
+		if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
+			//是否连堂课
+			YesOrNoEnum yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
+					userId.longValue(),
+					false,
+					null);
+			teacherAttendance.setSignInTime(date);
+			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+			boolean isSign = false;
+			if(yesOrNoEnum == YesOrNoEnum.YES){
+				isSign = true;
+			}else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
+				//正常签到范围(开始前20分钟  ~  开始之前)
+				isSign = true;
+			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
+				//异常签到范围(开始之后  ~  结束之前)
+				isSign = true;
+				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+			}
+			if(isSign){
+				teacherAttendanceDao.update(teacherAttendance);
+				if(courseSchedule.getTeachMode() == TeachModeEnum.ONLINE){
+					//获取所有当前课程的学生列表
+					Map<Integer,String> userMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(courseScheduleDao.findStudentMap(courseScheduleId))),HashMap.class);
+					if(userMap != null && userMap.size() > 0){
+						String name = subjectDao.findNames(classGroup.getSubjectIdList());
+						sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.STUDENT_PUSH_ONLINE_COURSE_ACTION,userMap,
+								null,0,"6?sealClassId=" + courseScheduleId + "&subjectName=" + name ,courseSchedule.getName());
 					}
 				}
-				int currentClassTimes = teacherAttendanceDao.countClassTime(classGroup.getId().longValue());
-				classGroup.setCurrentClassTimes(currentClassTimes);
-				if(updateCourseScheduleStatus&&courseSchedule.getStatus().equals(CourseStatusEnum.NOT_START)){
-					courseScheduleDao.updateCourscheduleStatus(courseScheduleId,CourseStatusEnum.UNDERWAY.getCode());
-				}
-				break;
-			case SIGN_OUT:
-				teacherAttendance.setSignOutTime(now);
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-				break;
-			default:
-
-				break;
+			}
 		}
-		if(isAttendance){
-			if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
+		//签退
+		if(teacherAttendance.getSignOutTime() == null && SignStatusEnum.SIGN_OUT.equals(signStatus)){
+			//正常签退范围(课程结束后)
+			if(DateUtil.minutesBetween(classEndDateTime,date) > 0){
+				teacherAttendance.setSignOutTime(date);
+				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 				teacherAttendanceDao.update(teacherAttendance);
 				//教师签退后,给未签到学员添加旷课记录
-				//封装未签到学员签到列表
 				List<StudentAttendance> studentAttendances = studentAttendanceDao.queryNoSignStudentRecord(courseScheduleId);
 				if(studentAttendances != null && studentAttendances.size() > 0){
 					studentAttendances.forEach(e->{
@@ -241,18 +255,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					studentAttendanceDao.addStudentAttendances(studentAttendances);
 				}
 			}
-		}else{
-			teacherAttendanceDao.insert(teacherAttendance);
-			//教师到课推送
-			if(courseSchedule.getTeachMode() == TeachModeEnum.ONLINE){
-				//获取所有当前课程的学生列表
-				Map<Integer,String> userMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(courseScheduleDao.findStudentMap(courseScheduleId))),HashMap.class);
-				if(userMap != null && userMap.size() > 0){
-					String name = subjectDao.findNames(classGroup.getSubjectIdList());
-					sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.STUDENT_PUSH_ONLINE_COURSE_ACTION,userMap,
-							null,0,"6?sealClassId=" + courseScheduleId + "&subjectName=" + name ,courseSchedule.getName());
-				}
-			}
 		}
 	}
 

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

@@ -86,7 +86,7 @@
         (id_,type_,goods_id_list_,price_,create_time_,update_time_,payment_order_id_)
         VALUES
         <foreach collection="studentPaymentOrderDetailList" item="orderDetail" separator=",">
-            (#{orderDetail.id},#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{orderDetail.goodsIdList},#{orderDetail.price},#{orderDetail.createTime},#{orderDetail.updateTime},#{orderDetail.paymentOrderId})
+            (#{orderDetail.id},#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{orderDetail.goodsIdList},#{orderDetail.price},now(),now(),#{orderDetail.paymentOrderId})
         </foreach>
     </insert>
 

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -424,10 +424,10 @@
     <insert id="insertBasic" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
         INSERT INTO student_registration
         (parents_phone_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,
-        create_time_,update_time_,parents_name_,payment_status_,actual_subject_id_,music_group_status_)
+        create_time_,update_time_,parents_name_,payment_status_,actual_subject_id_,music_group_status_,temporary_course_fee_)
         VALUES (#{parentsPhone},#{userId},#{name},#{musicGroupId},#{currentGrade},#{currentClass},#{subjectId},
             now(),now(),#{parentsName},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subjectId},
-            #{musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+            #{musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}#{temporaryCourseFee})
     </insert>
 
     <!-- 查询乐团userIdList的学生 -->

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -32,7 +32,7 @@ public class StudentRegistrationController extends BaseController {
     @ApiOperation(value = "乐团添加学员")
     @PostMapping("/insertStudent")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/insertStudent')")
-    public Object add(StudentAddDto studentAddDto) throws Exception {
+    public Object add(@RequestBody StudentAddDto studentAddDto) throws Exception {
         return succeed(studentRegistrationService.insertStudent(studentAddDto));
     }