Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

周箭河 6 rokov pred
rodič
commit
49efb04d5d
20 zmenil súbory, kde vykonal 268 pridanie a 194 odobranie
  1. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupStudentDto.java
  2. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  3. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  4. 33 33
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  5. 49 42
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  6. 32 26
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  7. 8 7
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  8. 8 5
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  9. 37 27
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  10. 2 2
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  11. 9 7
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  12. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  13. 6 4
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  14. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  15. 33 18
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  16. 1 1
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  17. 6 3
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  18. 9 6
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  19. 3 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  20. 11 3
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupStudentDto.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 /**
  * @Author Joburgess
  * @Date 2019/10/9
@@ -23,6 +25,16 @@ public class VipGroupStudentDto {
     @ApiModelProperty(value = "当前课时")
     private Integer currentClassTimes;
 
+    private BigDecimal courseSalary;
+
+    public BigDecimal getCourseSalary() {
+        return courseSalary;
+    }
+
+    public void setCourseSalary(BigDecimal courseSalary) {
+        this.courseSalary = courseSalary;
+    }
+
     public String getPhone() {
         return phone;
     }

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -96,11 +96,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(currentCourseDetail)){
 		    throw new BizException("课程不存在");
         }
-
-		currentCourseDetail.setOnlyNormal(enableOnlyNormalAttendance(currentCourseDetail.getStartClassTime(),
+		YesOrNoEnum yesOrNoEnum = enableOnlyNormalAttendance(currentCourseDetail.getStartClassTime(),
 				user.getId().longValue(),
 				true,
-				currentCourseDetail.getSchoolId().intValue()));
+				currentCourseDetail.getSchoolId().intValue());
+		currentCourseDetail.setOnlyNormal(yesOrNoEnum);
 
 		currentCourseDetail.setCurrentTime(new Date());
 		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
@@ -140,8 +140,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(teacherCourseByDateSpeed)){
 			return YesOrNoEnum.NO;
 		}else{
-			int i = studentAttendanceDao.countByCourseSchedule(teacherCourseByDateSpeed.getCourseScheduleId());
-			if(i>0&&checkSchool&&schoolId.equals(teacherCourseByDateSpeed.getSchoolId())){
+//			int i = studentAttendanceDao.countByCourseSchedule(teacherCourseByDateSpeed.getCourseScheduleId());
+			if(Objects.nonNull(teacherCourseByDateSpeed.getSignInTime())&&checkSchool&&schoolId.equals(teacherCourseByDateSpeed.getSchoolId())){
 				return YesOrNoEnum.YES;
 			}else{
 				return YesOrNoEnum.NO;

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -47,6 +47,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupApplyBaseInfoDto.getVipGroupActivityId().intValue());
 
 		List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findVipGroupCourseSchedules(vipGroupId);
+
 		if(CollectionUtils.isEmpty(vipGroupCourseSchedules)){
 			throw new BizException("未获取到排课信息");
 		}

+ 33 - 33
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -564,45 +564,45 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
+    public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason){
         MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
-        if (musicGroupQuit != null) {
-
-            Date date = new Date();
+        if(musicGroupQuit == null){
+            throw new BizException("数据不存在");
+        }
+        Date date = new Date();
 
-            String musicGroupId = musicGroupQuit.getMusicGroupId();
-            Integer userId = musicGroupQuit.getUserId();
+        String musicGroupId = musicGroupQuit.getMusicGroupId();
+        Integer userId = musicGroupQuit.getUserId();
 
-            musicGroupQuit.setStatus(status);
-            musicGroupQuit.setReason(reason);
-            musicGroupQuit.setQuitDate(date);
-            musicGroupQuitDao.update(musicGroupQuit);
+        musicGroupQuit.setStatus(status);
+        musicGroupQuit.setReason(reason);
+        musicGroupQuit.setQuitDate(date);
+        musicGroupQuitDao.update(musicGroupQuit);
 
-            if (status == ApprovalStatus.APPROVED) {
-                classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+        if (status == ApprovalStatus.APPROVED) {
+            classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
 
-                // 判断乐器是否是租赁
-                StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-                if (studentRegistration == null) {
-                    throw new BizException("用户注册信息不存在");
-                }
-                // 退团
-                studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
-                studentRegistration.setUpdateTime(date);
+            // 判断乐器是否是租赁
+            StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+            if (studentRegistration == null) {
+                throw new BizException("用户注册信息不存在");
+            }
+            // 退团
+            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+            studentRegistration.setUpdateTime(date);
 
-                studentRegistrationDao.update(studentRegistration);
+            studentRegistrationDao.update(studentRegistration);
 
-                Integer subjectId = studentRegistration.getActualSubjectId();
-                MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-                if (musicGroupSubjectPlan == null) {
-                    throw new BizException("乐团声部费用设置不存在");
-                }
-                if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
-                    // 增加交易流水
-                    sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(),
-                            SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null,
-                            DealStatusEnum.SUCCESS, "退出乐团");
-                }
+            Integer subjectId = studentRegistration.getActualSubjectId();
+            MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+            if (musicGroupSubjectPlan == null) {
+                throw new BizException("乐团声部费用设置不存在");
+            }
+            if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
+                // 增加交易流水
+                sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(),
+                        SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null,
+                        DealStatusEnum.SUCCESS, "退出乐团");
             }
         }
         return true;
@@ -990,7 +990,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.APPLY);
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"开启缴费(报名中 -->  缴费中)",sysUser.getId(),""));
-        musicGroup.setApplyExpireDate(DateUtil.toDate(expireDate));
+        musicGroup.setPaymentExpireDate(DateUtil.toDate(expireDate));
         musicGroup.setStatus(MusicGroupStatusEnum.PAY);
         musicGroupDao.update(musicGroup);
         //所有人开启缴费

+ 49 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -76,13 +76,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
 
-		boolean isAttendance=false;
-
+		Date date = new Date();
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
 			teacherAttendance.setTeacherId(user.getId());
-		}else{
-			isAttendance=true;
+			teacherAttendance.setCreateTime(date);
+		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
+			throw new BizException("当前课程已签到");
 		}
 
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
@@ -93,8 +93,20 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setMusicGroupId(currentCourseDetail.getMusicGroupId());
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
-		Date date = new Date();
-		if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
+		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+
+		CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
+		if(courseSchedule == null){
+			throw new BizException("课程信息不存在");
+		}
+		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 && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
 
 			if (currentCourseDetail.getEndClassTime().before(date)){
 				throw new BizException("该课程已结束,不能进行签到!");
@@ -104,53 +116,41 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					user.getId().longValue(),
 					true,
 					currentCourseDetail.getSchoolId().intValue());
-
-			if(yesOrNoEnum==YesOrNoEnum.YES){
-				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-				result.put("signInStatus",0);
-			}else{
-				Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
-				if(timeGap<= advanceSignInMinutes){
-					teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-					result.put("signInStatus",0);
-				}else{
-					if(StringUtils.isEmpty(teacherAttendance.getRemark())){
-						//当前为异常签到,请填写原因!
-						result.put("status",2);
-						return result;
-					}
-					teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
-					result.put("signInStatus",1);
+			teacherAttendance.setSignInTime(date);
+			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+			result.put("signInStatus",0);
+			if(yesOrNoEnum == YesOrNoEnum.YES){
+				//连堂课
+			}else if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
+				//正常签到范围(开始前20分钟  ~  开始之前)
+			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
+				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
+					//当前为异常签到,请填写原因!
+					result.put("status",2);
+					return result;
 				}
+				//异常签到范围(开始之后  ~  结束之前)
+				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+				result.put("signInStatus",1);
+			}else {
+				throw new BizException("签到时间异常");
 			}
-			teacherAttendance.setSignInTime(date);
 			if(Objects.nonNull(teacherAttendance.getId())){
 				teacherAttendanceDao.update(teacherAttendance);
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-		}else{
-			if (currentCourseDetail.getEndClassTime().after(date)){
-				throw new BizException("该课程还未结束,不能进行签退!");
-			}
-			if(!Objects.isNull(teacherAttendance.getSignOutStatus())){
-				throw new BizException("该课程已签退!");
-			}
-			int i = DateUtil.hoursBetween(currentCourseDetail.getEndClassTime(), date);
-			if(i<=1){
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-			}else{
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
-			}
+			return result;
+		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			teacherAttendance.setSignOutTime(date);
-			teacherAttendance.setCreateTime(date);
-			if(isAttendance){
+			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+			teacherAttendanceDao.update(teacherAttendance);
+			if(Objects.nonNull(teacherAttendance.getId())){
 				teacherAttendanceDao.update(teacherAttendance);
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-		}
-		if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			result.put("signInStatus",0);
 			//新增课堂作业
 			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
@@ -160,11 +160,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			courseHomeworkService.insert(courseHomework);
 			List<StudentCourseHomework> studentCourseHomeworks = studentCourseHomeworkDao
 					.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
-					courseHomework.getId());
+							courseHomework.getId());
 			if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 				throw new BizException("此课程没有学生");
 			}
 			studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
+			return result;
 		}
 
 		result.put("status",0);
@@ -173,7 +174,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		return result;
 	}
 
+
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void addTeacherAttendanceRecord(Integer courseScheduleId, Integer userId, SignStatusEnum signStatus, boolean updateCourseScheduleStatus) {
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId.longValue());
 		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId);
@@ -260,6 +263,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 	}
 
+	private void studentAutoTruant(){
+
+	}
+
 	@Override
 	public PageInfo getTeacherPersonalAttendances(TeacherCloseQueryInfo queryInfo) {
 		PageInfo<TeacherPersonalAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());

+ 32 - 26
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -196,31 +196,29 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				true,
 				true);
 
-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-
-		BigDecimal offlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOfflineClassesNum());
-		BigDecimal onlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOnlineClassesNum());
-
-		if(vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)){
-			if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.OFFLINE){
-				if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
-					offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
-				}
-			}else if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.ONLINE){
-				if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
-					onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
-				}
-			}else{
-				throw new BizException("请指定赠送课程类型!");
-			}
-		}
+//		BigDecimal offlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOfflineClassesNum());
+//		BigDecimal onlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOnlineClassesNum());
+//
+//		if(vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)){
+//			if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.OFFLINE){
+//				if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+//					offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+//				}
+//			}else if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.ONLINE){
+//				if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+//					onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+//				}
+//			}else{
+//				throw new BizException("请指定赠送课程类型!");
+//			}
+//		}
 
-		BigDecimal tempFee = costInfo.get("totalPrice").multiply(new BigDecimal(0.6));
-		BigDecimal totalSalary = vipGroupApplyBaseInfoDto.getOfflineTeacherSalary().multiply(offlineClassNum)
-				.add(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary().multiply(onlineClassNum));
-		if(totalSalary.compareTo(tempFee)>0){
-			throw new BizException("教师总课酬不能高于课程总价60%");
-		}
+//		BigDecimal tempFee = costInfo.get("totalPrice").multiply(new BigDecimal(0.6));
+//		BigDecimal totalSalary = vipGroupApplyBaseInfoDto.getOfflineTeacherSalary().multiply(offlineClassNum)
+//				.add(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary().multiply(onlineClassNum));
+//		if(totalSalary.compareTo(tempFee)>0){
+//			throw new BizException("教师总课酬不能高于课程总价60%");
+//		}
 
 		//如果默认课酬与实际课酬不匹配则需要审批
 		if(costInfo.get("offlineTeacherSalary").compareTo(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())!=0||
@@ -289,6 +287,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		//课程信息调整
 		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
+			courseSchedule.setGroupType(GroupType.VIP);
+			courseSchedule.setMusicGroupId(vipGroupApplyBaseInfoDto.getId().toString());
 		    courseSchedule.setSchoolId(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId());
 		    courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId());
 			courseSchedule.setActualTeacherId(vipGroupApplyBaseInfoDto.getUserId());
@@ -922,8 +922,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				DealStatusEnum.ING.getCode());
 
 		if(Objects.nonNull(byStudentVipGroup)){
-			byStudentVipGroup.setStatus(DealStatusEnum.CLOSE);
-			studentPaymentOrderDao.update(byStudentVipGroup);
+			throw new BizException("您有处理中的订单,请等待处理结果");
 		}else{
 			if(classGroup.getStudentNum()>=classGroup.getExpectStudentNum()){
 				throw new BizException("该课程人数已达上限");
@@ -1069,6 +1068,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId());
 		studentApplyRefunds.setUserId(studentId.intValue());
 		studentApplyRefundsDao.insert(studentApplyRefunds);
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		Set<Integer> roleIds = new HashSet<>(1);
+		roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+		Map<String,Object> memo = new HashMap<>(2);
+		memo.put("Id",vipGroupId);
+		memo.put("type","VIPGROUP");
+		sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_COURSE,JSONObject.toJSONString(memo),sysUser.getUsername());
 	}
 
 	@Override

+ 8 - 7
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -257,7 +257,7 @@
         SELECT cg.id_,cg.name_,cg.student_num_,cg.img_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         <where>
-            cg.del_flag_ = 0
+            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
             <if test="userId != null">
                 AND cgsm.user_id_ = #{userId}
             </if>
@@ -271,13 +271,13 @@
         FROM class_group cg
         LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-        WHERE FIND_IN_SET(cg.music_group_id_,#{vipIds}) AND cg.type_ = 'VIP' AND cg.del_flag_ = 0
+        WHERE FIND_IN_SET(cg.music_group_id_,#{vipIds}) AND cg.type_ = 'VIP' AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
         GROUP BY cg.music_group_id_
     </select>
     <select id="findGroupUsers" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
         SELECT su.id_,su.avatar_,su.username_ FROM class_group_student_mapper cgsm
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-        WHERE cgsm.class_group_id_ = #{classGroupId} GROUP BY su.id_
+        WHERE cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT' GROUP BY su.id_
     </select>
     <select id="findGroupTeacher" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
         SELECT su.id_,su.avatar_,su.username_ FROM class_group_teacher_mapper cgtm
@@ -333,7 +333,8 @@
     </select>
 
     <select id="countClassStudent" resultType="int">
-        select count(*) from class_group_student_mapper where class_group_id_=#{classGroupId}
+        select count(*) from class_group_student_mapper
+        where class_group_id_=#{classGroupId} AND cgsm.status_ != 'QUIT'
     </select>
 
     <select id="findAllClassGroupByMusicGroup" resultMap="ClassGroup">
@@ -483,7 +484,7 @@
         FROM
         class_group_student_mapper cgsm
         LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
-        WHERE cgsm.class_group_id_=#{classGroupId}
+        WHERE cgsm.class_group_id_=#{classGroupId} AND cgsm.status_ != 'QUIT'
     </select>
 
     <select id="queryNamesByClassId" resultType="java.util.Map">
@@ -524,7 +525,7 @@
     <select id="countStudyNum" resultType="java.util.Map">
         SELECT cgsm.class_group_id_ 'key',COUNT(cgsm.user_id_) 'value' FROM class_group_student_mapper cgsm
         LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
-        WHERE FIND_IN_SET(cgsm.class_group_id_,#{classGroupIds}) AND cgsm.status_ != 'QUIT' AND
+        WHERE FIND_IN_SET(cgsm.class_group_id_,#{classGroupIds}) AND cgsm.status_ != 'QUIT' AND sr.music_group_status_ != 'QUIT' AND
         FIND_IN_SET(sr.music_group_status_,'NORMAL,LEAVE') GROUP BY cgsm.class_group_id_
     </select>
 
@@ -606,7 +607,7 @@
     <select id="queryStudentClassGroup" resultMap="ConditionDto">
         SELECT cg.id_,cg.name_,cg.student_num_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-        where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{teacherId} AND cg.del_flag_ = 0
+        where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{teacherId} AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
     </select>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">

+ 8 - 5
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -82,7 +82,8 @@
     </insert>
     
     <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
-		SELECT * FROM class_group_student_mapper where class_group_id_ = #{classGroupId} and user_id_ = #{userId} AND status_ IN ('NORMAL','LEAVE')
+		SELECT * FROM class_group_student_mapper
+		where class_group_id_ = #{classGroupId} and user_id_ = #{userId}  AND status_ != 'QUIT'
 	</select>
     <select id="findStudentNumByClassGroupId" resultType="string">
         SELECT
@@ -112,7 +113,7 @@
             LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
             LEFT JOIN music_group_student_fee_ mgsf ON cg.music_group_id_=mgsf.music_group_id_ AND su.id_ = mgsf.user_id_
         WHERE
-            cgsm.class_group_id_ = #{classGroupId}
+            cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
         ORDER BY su.id_
         <include refid="global.limit"/>
     </select>
@@ -122,7 +123,7 @@
         FROM
             class_group_student_mapper cgsm
         WHERE
-            cgsm.class_group_id_ = #{classGroupId}
+            cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
     </select>
     <select id="findStudentByCourse" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
         SELECT
@@ -148,7 +149,8 @@
     </update>
 
     <select id="findClassStudentMapperByUserIdAndClassGroupId" resultMap="ClassGroupStudentMapper">
-        SELECT * FROM class_group_student_mapper WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId} AND status_ = 'NORMAL'
+        SELECT * FROM class_group_student_mapper
+        WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId} AND status_ = 'NORMAL'
     </select>
     <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
         SELECT * FROM class_group_student_mapper WHERE class_group_id_ IN
@@ -166,7 +168,8 @@
     <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
         SELECT sr.* FROM class_group_student_mapper cgsm
         LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
-        WHERE cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
+        AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>
 
     <select id="findHighClassGroupHasUser" resultMap="ClassGroupStudentMapper">

+ 37 - 27
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -268,31 +268,31 @@
     <select id="getTeacherCourseByDateSpeed"
             resultMap="TeacherAttendanceViewUtilEntity">
         SELECT
-        cs.id_ ,
-        cs.name_ course_schedule_name_,
-        cs.class_date_,
-        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
-        cs.status_ course_status_,
-        cg.id_ class_id,
-        cg.name_ class_name,
-        cs.type_ class_type,
-        mg.id_ music_group_id,
-        mg.name_ music_group_name,
-        s.id_ school_id_,
-        s.address_,
-        s.longitude_latitude_,
-        su.username_ teacher_name_,
-        ta.sign_in_time_
+            cs.id_ ,
+            cs.name_ course_schedule_name_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_ course_status_,
+            cg.id_ class_id,
+            cg.name_ class_name,
+            cs.type_ class_type,
+            mg.id_ music_group_id,
+            mg.name_ music_group_name,
+            s.id_ school_id_,
+            s.address_,
+            s.longitude_latitude_,
+            su.username_ teacher_name_,
+            ta.sign_in_time_
         FROM
-        course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
-        LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
-        LEFT JOIN school s ON mg.school_id_=s.id_
-        LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
-        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+            LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
+            LEFT JOIN school s ON mg.school_id_=s.id_
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
         WHERE cs.actual_teacher_id_= #{teacherId}
-        AND (cs.end_class_time_ BETWEEN #{startTime} AND #{endTime})
+            AND (cs.end_class_time_ BETWEEN #{startTime} AND #{endTime})
         ORDER BY cs.id_ DESC LIMIT 1
     </select>
 
@@ -321,7 +321,7 @@
         LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
         LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
         LEFT JOIN `subject` s ON cg.subject_id_=s.id_
-        WHERE cgsm.class_group_id_=#{classID} AND cgsm.status_!="DROP_OUT"
+        WHERE cgsm.class_group_id_=#{classID} AND cgsm.status_ != 'QUIT'
     </select>
 
     <select id="countStudentInClass" resultType="java.lang.Integer">
@@ -333,6 +333,7 @@
         <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
             #{item}
         </foreach>
+        AND cgsm.status_ != 'QUIT'
         GROUP BY user_id_
     </select>
 
@@ -476,6 +477,7 @@
             AND cs.type_=#{type}
         </if>
         AND csts.user_id_ = #{teacherId} AND cg.del_flag_ = 0
+        ORDER BY start_class_time_
     </select>
 
     <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
@@ -728,7 +730,8 @@
         LEFT JOIN course_schedule cs ON cs.class_group_id_=cgsm.class_group_id_
         LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
         LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
-        WHERE cs.status_='NOT_START' AND cgsm.user_id_=#{userId} AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d')
+        WHERE cs.status_='NOT_START' AND cgsm.user_id_=#{userId}
+        AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d') AND cgsm.status_ != 'QUIT'
         ORDER BY cs.class_date_,cs.start_class_time_
     </select>
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
@@ -1100,7 +1103,9 @@
     </select>
     <select id="queryMusicGroupIds" resultType="java.lang.String">
         SELECT DISTINCT spo.music_group_id_ FROM student_payment_order spo
-        WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS'
+        LEFT JOIN class_group_student_mapper cgsm ON spo.class_group_id_ = cgsm.class_group_id_
+        WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
+        AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
         <include refid="global.limit"/>
     </select>
     <select id="countExistRepeatInDateZone" resultType="int">
@@ -1365,6 +1370,11 @@
     </delete>
     
     <select id="queryUnsignedStudentList" resultMap="StudentAttendance">
-        SELECT a.*,cg.current_class_times_ FROM (SELECT cgsm.user_id_,cs.actual_teacher_id_ teacher_id_,cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_ FROM class_group_student_mapper cgsm right JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_ WHERE cgsm.status_ = 'NORMAL' AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now()) a LEFT JOIN student_attendance sa ON a.course_schedule_id_ = sa.course_schedule_id_ LEFT JOIN class_group cg ON a.class_group_id_ = cg.id_ WHERE sa.user_id_ IS null
+        SELECT a.*,cg.current_class_times_ FROM (SELECT cgsm.user_id_,cs.actual_teacher_id_ teacher_id_,cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_
+        FROM class_group_student_mapper cgsm
+        right JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_
+        WHERE cgsm.status_ = 'NORMAL' AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now()) a
+        LEFT JOIN student_attendance sa ON a.course_schedule_id_ = sa.course_schedule_id_
+        LEFT JOIN class_group cg ON a.class_group_id_ = cg.id_ WHERE sa.user_id_ IS null
     </select>
 </mapper>

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

@@ -123,7 +123,7 @@
 		FROM
 			class_group_student_mapper cgsm
 			LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
-		WHERE cgsm.music_group_id_=#{demoGroupId} AND cgsm.group_type_='DEMO'
+		WHERE cgsm.music_group_id_=#{demoGroupId} AND cgsm.group_type_='DEMO' AND cgsm.status_ != 'QUIT'
 	</select>
     <select id="getOrganIdByUserId" resultType="java.lang.Integer">
 		select organ_id_ from sys_user where id_=#{userId}
@@ -164,7 +164,7 @@
 			count(cgsm.user_id_)
 		FROM
 			class_group_student_mapper cgsm
-		WHERE cgsm.music_group_id_=#{demoGroupId} AND cgsm.group_type_='DEMO'
+		WHERE cgsm.music_group_id_=#{demoGroupId} AND cgsm.group_type_='DEMO' AND cgsm.status_ != 'QUIT'
 	</select>
 
     <sql id="demoGroupQueryCondition">

+ 9 - 7
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -199,7 +199,7 @@
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
-		WHERE sr.user_id_ = #{userId}
+		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
 	</select>
 
 	<select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
@@ -207,7 +207,7 @@
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
-		WHERE sr.user_id_ = #{userId}
+		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
 		ORDER BY mg.update_time_ DESC LIMIT 1
 	</select>
 
@@ -215,12 +215,13 @@
 		SELECT COUNT(mg.id_)
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId}
+		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
 	</select>
     <select id="countCourseByType" resultType="java.lang.Integer">
 		SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_) FROM class_group_student_mapper cgsm
 		LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-		WHERE cgsm.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND cg.del_flag_ = 0
+		WHERE cgsm.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
 	</select>
 
 	<resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
@@ -246,7 +247,7 @@
 			LEFT JOIN teacher t ON su.id_ = t.id_
 			LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
 		  WHERE
-			cgsp.user_id_ = #{studentId}
+			cgsp.user_id_ = #{studentId} AND cgsp.status_ != 'QUIT'
 		  GROUP BY su.id_
 	</select>
 
@@ -255,8 +256,9 @@
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		<where>
+				sr.music_group_status_ != 'QUIT'
 			<if test="userId != null">
-				sr.user_id_ = #{userId}
+				AND sr.user_id_ = #{userId}
 			</if>
 			<if test="search != null">
 				AND mg.name_ LIKE CONCAT('%',#{search},'%')
@@ -279,7 +281,7 @@
 		SELECT su.id_,su.avatar_,su.username_ FROM class_group cg
 		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
 		LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-		WHERE cg.music_group_id_ = #{musicGroupId} GROUP BY su.id_
+		WHERE cg.music_group_id_ = #{musicGroupId}  AND cgsm.status_ != 'QUIT' GROUP BY su.id_
 	</select>
 	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
 		SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_

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

@@ -135,7 +135,7 @@
 
     <sql id="queryPageCondition">
         <where>
-            cgsm.class_group_id_=#{classGroupId}
+            cgsm.class_group_id_=#{classGroupId} AND cgsm.status_ != 'QUIT'
             <if test="filterStatus!=null">
                 AND cgsm.status_!=#{filterStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
@@ -180,7 +180,7 @@
             COUNT(user_id_) numberOfStudent
         FROM
             class_group_student_mapper
-        WHERE class_group_id_=#{classId}
+        WHERE class_group_id_=#{classId} AND status_ != 'QUIT'
         GROUP BY status_
     </select>
 

+ 6 - 4
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -128,7 +128,7 @@
     </select>
     <sql id="findStudentsByOrganIdSql">
         <where>
-                su.user_type_ = "STUDENT"
+                su.user_type_ = 'STUDENT'
             <if test="organId != null">
                 AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
@@ -152,7 +152,7 @@
         sr.parents_phone_,sr.current_class_,sr.current_grade_
         FROM sys_user su
         LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
-        WHERE su.id_ =#{userId} AND su.user_type_ LIKE CONCAT('%',"STUDENT",'%') LIMIT 1
+        WHERE su.id_ =#{userId} AND su.user_type_ LIKE CONCAT('%',"STUDENT",'%') AND sr.music_group_status_ != 'QUIT' LIMIT 1
     </select>
 
     <select id="findGoodsNamesByIds" resultType="string">
@@ -181,11 +181,12 @@
         LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         LEFT JOIN music_group_subject_plan mgsp ON mg.id_ = mgsp.music_group_id_ AND s.id_ = mgsp.subject_id_
-        WHERE sr.user_id_=#{userId}
+        WHERE sr.user_id_=#{userId} AND sr.music_group_status_ != 'QUIT'
     </select>
 
     <sql id="studentManageCourseQueryCondition">
         <where>
+                cgsm.status_ != 'QUIT'
             <if test="studentId!=null">
                 and cgsm.user_id_=#{studentId}
             </if>
@@ -325,7 +326,7 @@
     </select>
     <sql id="studentPaymentSql">
         <where>
-            cs.id_ IS NOT NULL
+            cs.id_ IS NOT NULL AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
             <if test="classGroupType != null">
                 AND cs.type_ = #{classGroupType}
             </if>
@@ -350,6 +351,7 @@
 
     <sql id="queryMusicGroupStudentSql">
         <where>
+                sr.music_group_status_ != 'QUIT'
             <if test="search != null and search != ''">
                 AND (su.real_name_ like CONCAT("%",#{search},"%") OR sr.parents_phone_ like CONCAT("%",#{search},"%"))
             </if>

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

@@ -201,7 +201,7 @@
         WHERE spo.user_id_=#{userId}
             AND spo.music_group_id_=#{vipGroupId}
             AND spo.status_=#{status}
-            AND spo.type_ = 'SMALL_CLASS_TO_BUY' FOR UPDATE
+            AND spo.type_ = 'SMALL_CLASS_TO_BUY'
     </select>
     <!-- 查询报名订单 -->
     <select id="findMusicGroupApplyOrderByStatus" resultMap="StudentPaymentOrder">

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

@@ -224,6 +224,7 @@
 
     <sql id="queryStudentDetailPageSql">
         <where>
+                sr.music_group_status_ != 'QUIT'
             <if test="musicGroupId != null">
                 AND sr.music_group_id_ = #{musicGroupId}
             </if>
@@ -275,7 +276,7 @@
 
     <select id="countPayNum" resultType="map">
         SELECT COUNT(DISTINCT user_id_) `value`,subject_id_ `key` FROM student_registration
-        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 2 GROUP BY subject_id_
+        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 2 AND music_group_status_ != 'QUIT' GROUP BY subject_id_
     </select>
 
     <resultMap id="queryFeeDetailMap" type="com.ym.mec.biz.dal.dto.StudentFeeDetailDto">
@@ -295,6 +296,7 @@
         LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
         LEFT JOIN goods g ON FIND_IN_SET(g.id_,spod.goods_id_list_)
         WHERE spo.type_ = 'APPLY' AND sr.user_id_ = #{studentId} AND sr.music_group_id_ = #{musicGroupId}
+        AND sr.music_group_status_ != 'QUIT'
         GROUP BY spo.id_,spod.id_
     </select>
 
@@ -302,6 +304,7 @@
     <select id="getNoClassStuBySubjectId" resultMap="StudentRegistration">
         SELECT * FROM student_registration
         WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 2 AND class_group_id_=0
+        AND music_group_status_ != 'QUIT'
         <if test="actualSubjectId != null">
             AND FIND_IN_SET(actual_subject_id_,#{actualSubjectId})
         </if>
@@ -314,7 +317,9 @@
     <!-- 根据乐团和声部获取未分班人数 -->
     <select id="getNoClassStuCountByMusicGroupId" resultMap="getNoClassStuCountByMusicGroupId">
         SELECT actual_subject_id_ ,COUNT(*) nums FROM student_registration
-        WHERE music_group_id_ = #{musicGroupId} AND payment_status_=2 AND class_group_id_=0 GROUP BY actual_subject_id_;
+        WHERE music_group_id_ = #{musicGroupId} AND payment_status_=2 AND class_group_id_=0
+        AND music_group_status_ != 'QUIT'
+        GROUP BY actual_subject_id_;
     </select>
 
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
@@ -328,12 +333,17 @@
     </update>
 
     <select id="queryStudentInfo" resultMap="StudentInfo">
-        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_,s.name_ subject_name_ FROM sys_user u left join
-        student_registration sr on u.id_ = sr.user_id_ left join subject s on sr.actual_subject_id_ = s.id_ where u.id_ = #{userId} order by sr.create_time_ desc limit 0,1
+        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_,s.name_ subject_name_
+        FROM sys_user u left join
+        student_registration sr on u.id_ = sr.user_id_ left join subject s on sr.actual_subject_id_ = s.id_
+        where u.id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
+        order by sr.create_time_ desc limit 1
     </select>
 
     <select id="queryByUserIdAndMusicGroupId" resultMap="StudentRegistration">
-        select sr.*,su.id_card_no_ from student_registration sr left join sys_user su on su.id_ =sr.user_id_ where sr.music_group_id_ = #{musicGroupId} and sr.user_id_ = #{userId}
+        select sr.*,su.id_card_no_ from student_registration sr
+        left join sys_user su on su.id_ =sr.user_id_
+        where sr.music_group_id_ = #{musicGroupId} and sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
     </select>
 
     <!-- 根据乐团编号和手机号查询注册乐团注册信息-->
@@ -371,7 +381,7 @@
     <!-- 获取班级下的学生 -->
     <select id="findClassGroupStu" resultMap="StudentRegistration">
         SELECT * FROM student_registration
-        WHERE music_group_id_= #{musicGroupId}
+        WHERE music_group_id_= #{musicGroupId} AND music_group_status_ != 'QUIT'
         <if test="classGroupId != null">
             AND class_group_id_=#{classGroupId}
         </if>
@@ -379,7 +389,8 @@
 
     <!-- 根据班级和userId查询学生信息-->
     <select id="findStudentByClassGroupIdAndUserId" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE user_id_= #{userId} AND class_group_id_=#{classGroupId}
+        SELECT * FROM student_registration
+        WHERE user_id_= #{userId} AND class_group_id_=#{classGroupId} AND music_group_status_ != 'QUIT'
     </select>
 
     <!-- 获取乐团未分班的学生 -->
@@ -388,7 +399,7 @@
         <if test="actualSubjectId != null">
             AND actual_subject_id_ = #{actualSubjectId}
         </if>
-        AND payment_status_ = 2 AND class_group_id_ =0
+        AND payment_status_ = 2 AND class_group_id_ =0 AND music_group_status_ != 'QUIT'
     </select>
 
 
@@ -400,7 +411,7 @@
         <if test="actualSubjectId != null">
             AND sr.actual_subject_id_ = #{actualSubjectId}
         </if>
-        AND payment_status_ = 2;
+        AND payment_status_ = 2 AND sr.music_group_status_ != 'QUIT'
     </select>
 
     <!-- 根据注册id list查询报名学生的信息 -->
@@ -409,6 +420,7 @@
         <foreach collection="idList" item="id" index="index" open="(" close=")" separator=",">
             #{id}
         </foreach>
+        AND music_group_status_ != 'QUIT'
     </select>
 
     <insert id="batchInsert">
@@ -432,25 +444,26 @@
 
     <!-- 查询乐团userIdList的学生 -->
     <select id="findStudentListByUserIdList" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ IN
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND music_group_status_ != 'QUIT'
+        AND user_id_ IN
         <foreach collection="userIdList" item="userId" index="index" open="(" close=")" separator=",">
             #{userId}
         </foreach>
     </select>
     <select id="countApplyNum" resultType="java.util.Map">
         SELECT sr.actual_subject_id_ 'key',COUNT(DISTINCT sr.user_id_) 'value' FROM student_registration sr
-        WHERE sr.music_group_id_ = #{musicGroupId}
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ != 'QUIT'
         GROUP BY actual_subject_id_
     </select>
     <select id="findParentId" resultType="map">
         SELECT MAX(sr.user_id_) `key`,sr.parents_phone_ `value`
         FROM student_registration sr
-        WHERE FIND_IN_SET(sr.parents_phone_,#{parentPhones})
+        WHERE FIND_IN_SET(sr.parents_phone_,#{parentPhones}) AND sr.music_group_status_ != 'QUIT'
         GROUP BY sr.parents_phone_
     </select>
     <select id="queryStudentByMusicGroupId" resultMap="StudentRegistration">
         SELECT * FROM student_registration sr
-        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.payment_status_ = 2
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.payment_status_ = 2 AND sr.music_group_status_ != 'QUIT'
     </select>
 
     <!-- 批量开启缴费 -->
@@ -470,16 +483,18 @@
     </update>
     
     <select id="queryStudentNum" resultType="map">
-        SELECT count(sr.id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_ FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
+        SELECT count(sr.id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_
+        FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
         <where>
+            sr.music_group_status_ != 'QUIT'
     		<if test="organId != null">
-    			mg.organ_id_ = #{organId}
+    			AND mg.organ_id_ = #{organId}
     		</if>
     	</where> 
     </select>
     <select id="findMapByMusicGroupId" resultType="java.util.Map">
         SELECT sr.user_id_ 'key',MIN(sr.parents_phone_) 'value' FROM student_registration sr
-        WHERE sr.music_group_id_ = #{musicGroupId}
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ != 'QUIT'
         <if test="paymentStatus != null">
             AND sr.payment_status_ = #{paymentStatus}
         </if>
@@ -487,7 +502,7 @@
     </select>
     <select id="findIdMapByMusicGroupId" resultType="java.util.Map">
         SELECT sr.user_id_ 'key',MIN(sr.user_id_) 'value' FROM student_registration sr
-        WHERE sr.music_group_id_ = #{musicGroupId}
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ != 'QUIT'
         <if test="paymentStatus != null">
             AND sr.payment_status_ = #{paymentStatus}
         </if>
@@ -504,7 +519,7 @@
 
     <!-- 获取乐团学生人数 -->
     <select id="findMusicGroupStudentNum" resultType="integer">
-        SELECT Count(*) FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = '2'
+        SELECT Count(*) FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = '2' AND music_group_status_ != 'QUIT'
     </select>
 
     <update id="updateUser">

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

@@ -160,7 +160,7 @@
         FROM
             student_registration sr
             LEFT JOIN `subject` s ON sr.actual_subject_id_=s.id_
-            WHERE sr.music_group_id_=#{musicGroupId} AND s.del_flag_ = 0
+            WHERE sr.music_group_id_=#{musicGroupId} AND s.del_flag_ = 0 AND sr.music_group_status_ != 'QUIT'
             AND sr.user_id_ IN
             <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
                 #{userId}

+ 6 - 3
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -248,7 +248,7 @@
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
         LEFT JOIN student_registration sr ON sr.user_id_ = su.id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
-        WHERE cgtm.user_id_ = #{teacherId} AND su.id_ IS NOT NULL
+        WHERE cgtm.user_id_ = #{teacherId} AND su.id_ IS NOT NULL AND sr.music_group_status_ != 'QUIT'
         <if test="search != null">
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
@@ -372,6 +372,7 @@
 
     <sql id="queryTeacherAttendanceSql">
         <where>
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW() AND cgtm.teacher_role_ = 'BISHOP'
             <if test="startTime != null and startTime != ''">
                 AND cs.class_date_ &gt;= #{startTime}
             </if>
@@ -401,8 +402,9 @@
         FROM course_schedule cs
         LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
         LEFT JOIN sys_user su ON su.id_ = ta.teacher_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
         <include refid="queryTeacherAttendanceSql"/>
-        ORDER BY cs.class_date_ DESC
+        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         <include refid="global.limit"/>
     </select>
     <select id="countTeacherAttendance" resultType="java.lang.Integer">
@@ -410,6 +412,7 @@
         FROM course_schedule cs
         LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
         LEFT JOIN sys_user su ON su.id_ = ta.teacher_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
         <include refid="queryTeacherAttendanceSql"/>
     </select>
     <select id="queryNameById" resultType="java.lang.String">
@@ -439,7 +442,7 @@
     </select>
     <sql id="queryMusicGroupStudentApplySql">
         <where>
-            sr.music_group_id_ = #{musicGroupId} AND (spo.type_ = 'APPLY' OR spo.type_ IS NULL)
+            sr.music_group_id_ = #{musicGroupId} AND (spo.type_ = 'APPLY' OR spo.type_ IS NULL) AND sr.music_group_status_ != 'QUIT'
             <if test="subjectId != null">
                 AND sr.actual_subject_id_ = #{subjectId}
             </if>

+ 9 - 6
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -118,7 +118,7 @@
         LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
         LEFT JOIN class_group_student_mapper cgsm ON cgsm.music_group_id_ = vg.id_
         <where>
-            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL
+            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL AND cgsm.status_ != 'QUIT'
             <if test="studentId != null">
                 AND cgsm.user_id_ = #{studentId}
             </if>
@@ -137,7 +137,7 @@
         LEFT JOIN course_schedule cs ON cs.music_group_id_ = vg.id_
         LEFT JOIN class_group_student_mapper cgsm ON cgsm.music_group_id_ = vg.id_
         <where>
-            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL
+            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL AND cgsm.status_ != 'QUIT'
             <if test="studentId != null">
                 AND cgsm.user_id_ = #{studentId}
             </if>
@@ -473,6 +473,7 @@
         <result column="phone_" property="phone"/>
         <result column="total_class_times_" property="totalClassTimes"/>
         <result column="current_class_times_" property="currentClassTimes"/>
+        <result column="course_balance_" property="courseSalary"/>
     </resultMap>
 
     <select id="findVipGroupStudents" resultMap="vipGroupStudentDto">
@@ -481,15 +482,17 @@
             su.username_,
             su.phone_,
             cg.total_class_times_,
-            cg.current_class_times_
+            cg.current_class_times_,
+            suaa.course_balance_
         FROM
             class_group cg
             LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
             LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
+            LEFT JOIN sys_user_cash_account suaa ON cgsm.user_id_=suaa.user_id_
         WHERE cg.music_group_id_=#{vipGroupId}
-        AND cg.group_type_='VIP'
-        AND cgsm.status_!='QUIT'
-        AND cgsm.user_id_ IS NOT NULL
+            AND cg.group_type_='VIP'
+            AND cgsm.status_!='QUIT'
+            AND cgsm.user_id_ IS NOT NULL
         ORDER BY su.id_
         <include refid="global.limit"/>
     </select>

+ 3 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -26,7 +26,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
@@ -319,7 +318,8 @@ public class StudentOrderController extends BaseController {
 
     }
 
-    //@Scheduled(cron = "0/30 * * * * ?")
+//    @Scheduled(cron = "0/30 * * * * ?")
+    @GetMapping("/setSuccessStatus")
     public void setSuccessStatus() throws Exception {
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");
 
@@ -338,6 +338,7 @@ public class StudentOrderController extends BaseController {
                 try {
                     updateOrder(rpMap); //更新订单
                 }catch (Exception e){
+                    e.printStackTrace();
                     continue;
                 }
             }

+ 11 - 3
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -18,10 +18,10 @@ import com.ym.mec.biz.service.StudentApplyRefundsService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -110,8 +110,16 @@ public class VipGroupManageController extends BaseController {
     @ApiOperation(value = "添加vip课学员")
     @GetMapping(value = "/addVipGroupStudents")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/addVipGroupStudents')")
-    public Object addVipGroupStudents(Long vipGroupId,@Param("studentIds[]") List<Integer> studentIds){
-        vipGroupService.addVipGroupStudents(vipGroupId,studentIds);
+    public Object addVipGroupStudents(Long vipGroupId, String studentIds){
+        if(StringUtils.isBlank(studentIds)){
+            throw new BizException("请指定学员");
+        }
+        List<Integer> ids=new ArrayList<>();
+        String[] split = studentIds.split(",");
+        for (String s : split) {
+            ids.add(Integer.parseInt(s));
+        }
+        vipGroupService.addVipGroupStudents(vipGroupId,ids);
         return succeed();
     }