Переглянути джерело

Merge remote-tracking branch 'origin/master'

Joburgess 5 роки тому
батько
коміт
8892251e13

+ 17 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
@@ -15,7 +16,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -54,9 +57,9 @@ public class CourseSchedule {
 
 	/**  */
 	private Long id;
-	
+
 	private GroupType groupType;
-	
+
 	/**  */
 	@ApiModelProperty(value = "乐团编号",required = false)
 	private String musicGroupId;
@@ -357,6 +360,18 @@ public class CourseSchedule {
 		this.teacher = teacher;
 	}
 
+
+	public static CourseScheduleType getCourseScheduleTypeByCode(String code) {
+		CourseScheduleType type = null;
+		for (CourseScheduleType courseScheduleType : CourseScheduleType.values()) {
+			if(courseScheduleType.getCode().equals(code)){
+				type = courseScheduleType;
+				break;
+			}
+		}
+		return type;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java

@@ -90,6 +90,9 @@ public class Teacher extends SysUser {
 	
 	@ApiModelProperty(value = "离职时间", required = false)
 	private Date demissionDate;
+	
+	@ApiModelProperty(value = "是否支持课程奖励规则活动", required = false)
+	private Boolean isSupportCourseScheduleRewardsRules;
 
 	private List<School> teacherSchools;
 
@@ -261,6 +264,14 @@ public class Teacher extends SysUser {
 		this.demissionDate = demissionDate;
 	}
 
+	public Boolean getIsSupportCourseScheduleRewardsRules() {
+		return isSupportCourseScheduleRewardsRules;
+	}
+
+	public void setIsSupportCourseScheduleRewardsRules(Boolean isSupportCourseScheduleRewardsRules) {
+		this.isSupportCourseScheduleRewardsRules = isSupportCourseScheduleRewardsRules;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentApplyrefundsQueryInfo.java

@@ -11,6 +11,8 @@ public class StudentApplyrefundsQueryInfo extends QueryInfo {
 	private Date endTime;
 
 	private String status;
+	
+	private Integer organId;
 
 	public String getStatus() {
 		return status;
@@ -35,4 +37,12 @@ public class StudentApplyrefundsQueryInfo extends QueryInfo {
 	public void setEndTime(Date endTime) {
 		this.endTime = endTime;
 	}
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
 }

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

@@ -481,6 +481,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     teacherDefaultMusicGroupSalary.setMainTeacher90MinSalary(zeroSalary);
                     teacherDefaultMusicGroupSalary.setAssistantTeacher90MinSalary(zeroSalary);
                     teacherDefaultMusicGroupSalary.setUserId(classGroupTeacherMapper.getUserId());
+                    teacherDefaultMusicGroupSalary.setCourseScheduleType(CourseSchedule.getCourseScheduleTypeByCode(courseType));
                     teacherSalaryByUserIdAndType.add(teacherDefaultMusicGroupSalary);
                 }
                 classGroupTeacherMapper.setTeacherDefaultMusicGroupSalaryList(teacherSalaryByUserIdAndType);

+ 39 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -1,12 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
@@ -91,7 +86,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
                 imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
             }
-            if(imGroupMemberList.size()>0) {
+            if (imGroupMemberList.size() > 0) {
                 ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
                 imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
             }
@@ -119,35 +114,30 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
         Date date = new Date();
 
-        List<Integer> teacherUserIds = classGroupTeacherMapperList.stream().map(teacher -> teacher.getUserId()).collect(Collectors.toList());
-        List<TeacherDefaultMusicGroupSalary> byTeacher = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherUserIds);
+        List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupTeacherMapperList);
+        if (classGroupNoStartCourseSchedules == null || classGroupNoStartCourseSchedules.size() == 0) {
+            return true;
+        }
 
-        List<ClassGroupTeacherSalary> classGroupTeacherSalaryList = new ArrayList<>();
+        //老师默认的课酬
+        List<Integer> teacherUserIds = classGroupTeacherMapperList.stream().map(teacher -> teacher.getUserId()).collect(Collectors.toList());
+        List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryDao.findByTeacher(teacherUserIds);
+        Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
+        if (teacherSalaryList.size() > 0) {
+            teacherDefaultSalary = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
+        }
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
-
         String musicGroupId = classGroupTeacherMapperList.get(0).getMusicGroupId();
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
 
-        List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupTeacherMapperList);
-
-        if(classGroupNoStartCourseSchedules == null || classGroupNoStartCourseSchedules.size()==0){
-            return true;
-        }
-        //删除未开始的课程老师课酬
+        //删除未开始的课程老师课酬,和签到
         List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
         courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
         teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
 
         for (CourseSchedule classGroupNoStartCourseSchedule : classGroupNoStartCourseSchedules) {
-
-            if (!classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE) &&
-                    !classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX) &&
-                    !classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)
-            ) {
-                continue;
-            }
             //课时长度
-            int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(),classGroupNoStartCourseSchedule.getEndClassTime());
+            int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
                 if (!classGroupTeacherMapper.getClassGroupId().equals(classGroupNoStartCourseSchedule.getClassGroupId())) {
                     continue;
@@ -157,26 +147,35 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
                 Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherDefaultMusicGroupSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
-				TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroupNoStartCourseSchedule.getType());
-				if (teacherDefaultMusicGroupSalary == null) {
-					throw new BizException("请先设置老师课酬");
-				}
+                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroupNoStartCourseSchedule.getType());
+                if (teacherDefaultMusicGroupSalary == null) {
+                    teacherDefaultMusicGroupSalary = teacherDefaultSalary.get(classGroupNoStartCourseSchedule.getType());
+                }
+                if (teacherDefaultMusicGroupSalary == null) {
+                    throw new BizException("请先设置老师课酬");
+                }
 
                 //对应基准课酬
-                BigDecimal baseSalary = new BigDecimal(0),classTimeDuty=new BigDecimal(0);
+                BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
-                //基准课酬
+                //2.0课酬
                 if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
                     //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30),6,BigDecimal.ROUND_HALF_UP);
+                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), 6, BigDecimal.ROUND_HALF_UP);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                 }
-                //阶梯课酬
+                //3.0课酬
                 if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                     //课程时长与结算单位时长占比
-                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90),6,BigDecimal.ROUND_HALF_UP);
+                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), 6, BigDecimal.ROUND_HALF_UP);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                 }
+                //课堂课课酬
+                if (musicGroup.isClassroomLessons()) {
+                    //课程时长与结算单位时长占比
+                    classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(40), 6, BigDecimal.ROUND_HALF_UP);
+                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                }
                 salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                 //课程与老师薪水表
@@ -245,7 +244,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             }
 
             //根据教师编号将对应结算方式下的默认课酬设置分组
-            Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId,teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
+            Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
             if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
                 //根据课程获取主教的默认课酬设置列表
@@ -280,11 +279,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     }
 
     /**
-     * @param courseSchedule: 课程信息
-     * @param teachType: 教师类型
-     * @param settlementType: 结算方式
-     * @param subsidy: 补贴
-     * @param teacherId: 教师编号
+     * @param courseSchedule:                              课程信息
+     * @param teachType:                                   教师类型
+     * @param settlementType:                              结算方式
+     * @param subsidy:                                     补贴
+     * @param teacherId:                                   教师编号
      * @param teacherDefaultMusicGroupSalaryWithTeacherId: 教师课酬
      * @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
      * @describe 计算教师课酬

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

@@ -140,7 +140,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(teacherCourseByDateSpeed)){
 			return YesOrNoEnum.NO;
 		}else{
-//			int i = studentAttendanceDao.countByCourseSchedule(teacherCourseByDateSpeed.getCourseScheduleId());
 			if(Objects.nonNull(teacherCourseByDateSpeed.getSignInTime())&&checkSchool&&schoolId.equals(teacherCourseByDateSpeed.getSchoolId())){
 				return YesOrNoEnum.YES;
 			}else{

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

@@ -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);
         //所有人开启缴费

+ 40 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -69,22 +69,20 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("请选择课程!");
 		}
 
-		SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
-		Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
+//		SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
+//		Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
 
 		Map<String,Object> result=new HashMap<>();
 
 		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());
+			teacherAttendance.setCreateTime(date);
 		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
 			throw new BizException("当前课程已签到");
-		}else{
-			isAttendance=true;
 		}
 
 		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
@@ -96,10 +94,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
 		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
-		Date date = new Date();
+
 		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);
@@ -107,8 +105,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		//上课时间
 		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(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
+		Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
+		Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
+		Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
+		if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
 
 			if (currentCourseDetail.getEndClassTime().before(date)){
 				throw new BizException("该课程已结束,不能进行签到!");
@@ -118,55 +118,48 @@ 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(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,add20Minutes) > 0){
+				//正常签到范围(开始前20分钟  ~  开始之前)
+			}else if(DateUtil.minutesBetween(add20Minutes,date) > 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){
+			return result;
+		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			//正常签退范围(结束后1小时内)
+			teacherAttendance.setSignOutTime(date);
+			if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-			}else{
+				result.put("signInStatus",0);
+			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
+				result.put("signInStatus",1);
+			}else {
+				throw new BizException("签退时间异常");
 			}
-			teacherAttendance.setSignOutTime(date);
-			teacherAttendance.setCreateTime(date);
-			if(isAttendance){
+			if(Objects.nonNull(teacherAttendance.getId())){
 				teacherAttendanceDao.update(teacherAttendance);
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-		}
-		if(teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			//新增课堂作业
 			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
@@ -176,11 +169,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);

+ 8 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1373,16 +1373,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if (list != null && list.size() > 0) {
 
 			Integer organId = null, teacherId = null, coursesTimes = 0;
+			boolean isSupportCourseScheduleRewardsRules = false;
 
 			for (Map<Integer, Integer> map : list) {
 				organId = map.get("organ_id_");
 				teacherId = map.get("teacher_id_");
 				coursesTimes = map.get("times");
+				isSupportCourseScheduleRewardsRules = Boolean.parseBoolean(map.get("is_support_course_schedule_rewards_rules_").toString());
 
-				BigDecimal decimal = courseScheduleRewardsRulesService.queryRewardsAmount(organId, CourseScheduleType.VIP, coursesTimes);
-				if (decimal.doubleValue() > 0) {
-					sysUserCashAccountDetailService.addCashAccountDetail(teacherId, decimal, "", SysUserCashAccountDetailService.ORGAN,
-							PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励");
+				if (isSupportCourseScheduleRewardsRules) {
+					BigDecimal decimal = courseScheduleRewardsRulesService.queryRewardsAmount(organId, CourseScheduleType.VIP, coursesTimes);
+					if (decimal.doubleValue() > 0) {
+						sysUserCashAccountDetailService.addCashAccountDetail(teacherId, decimal, "", SysUserCashAccountDetailService.ORGAN,
+								PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励");
+					}
 				}
 			}
 		}

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

@@ -842,7 +842,7 @@
     </select>
     
     <select id="queryVipGroupTeachereClassTimesByMonth" resultType="map" parameterType="map">
-        SELECT vp.organ_id_ organ_id_,cs.actual_teacher_id_ teacher_id_,count(cs.id_) times FROM course_schedule cs left join vip_group vp on cs.music_group_id_ = vp.id_ where cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and date_format(#{monthDate} , '%Y%m' ) = date_format(cs.class_date_, '%Y%m' ) group by vp.organ_id_,cs.actual_teacher_id_
+        SELECT vp.organ_id_ organ_id_,cs.actual_teacher_id_ teacher_id_,count(cs.id_) times,t.is_support_course_schedule_rewards_rules_ FROM course_schedule cs left join vip_group vp on cs.music_group_id_ = vp.id_ left join teacher t on cs.actual_teacher_id_ = t.id_ where cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and date_format(#{monthDate} , '%Y%m' ) = date_format(cs.class_date_, '%Y%m' ) group by vp.organ_id_,cs.actual_teacher_id_
     </select>
     
     <select id="queryFinishedWithNoUpdateStatus" resultMap="CourseSchedule">
@@ -1104,7 +1104,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">

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

@@ -96,14 +96,17 @@
             and sar.create_time_ &lt;= #{endTime}
         </if>
         <if test="status!=null and status!=''">
-            and status_=#{status}
+            and sar.status_=#{status}
+        </if>
+        <if test="organId!=null and organId!=''">
+            and u.organ_id_=#{organId}
         </if>
         ORDER BY sar.id_ <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int" parameterType="map">
-		SELECT count(1) FROM student_apply_refunds sar left join student_payment_order spo on sar.orig_payment_order_id_ = spo.id_ 
+		SELECT count(1) FROM student_apply_refunds sar left join student_payment_order spo on sar.orig_payment_order_id_ = spo.id_ left join sys_user u on sar.user_id_ = u.id_
 		where 1=1 
         <if test="startTime != null">
             and sar.create_time_ &gt;= #{startTime}
@@ -111,6 +114,12 @@
         <if test="endTime != null">
             and sar.create_time_ &lt;= #{endTime}
         </if>
+        <if test="status!=null and status!=''">
+            and sar.status_=#{status}
+        </if>
+        <if test="organId!=null and organId!=''">
+            and u.organ_id_=#{organId}
+        </if>
 	</select>
 
     <select id="checkIsApplyRefund" resultType="java.util.Map">

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

@@ -113,7 +113,7 @@
 	                current_class_times_ = #{item.currentClassTimes},
 	            </if>
         	</set>
-	        where id_ = ${item.id}
+	        where id_ = #{item.id}
 	    </foreach>      
 	</update>
 

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

@@ -128,7 +128,7 @@
     </select>
     <sql id="findStudentsByOrganIdSql">
         <where>
-                su.user_type_ = "STUDENT" AND sr.music_group_status_ != 'QUIT'
+                su.user_type_ = 'STUDENT'
             <if test="organId != null">
                 AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
@@ -326,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>

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

@@ -486,11 +486,10 @@
         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> 
+    	</where>
     </select>
     <select id="findMapByMusicGroupId" resultType="java.util.Map">
         SELECT sr.user_id_ 'key',MIN(sr.parents_phone_) 'value' FROM student_registration sr

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

@@ -25,6 +25,7 @@
         <result column="certificate_num_" property="certificateNum"/>
         <result column="flow_organ_range_" property="flowOrganRange"/>
         <result column="introduction_" property="introduction"/>
+        <result column="is_support_course_schedule_rewards_rules_" property="isSupportCourseScheduleRewardsRules"/>
         <result column="update_time_" property="updateTime"/>
         <result column="create_time_" property="createTime"/>
 
@@ -68,8 +69,8 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Teacher" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO teacher
-        (id_,organ_id_,job_type_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,work_unit_,subject_id_,entry_date_,demission_date_,certificate_type_,certificate_num_,flow_organ_range_,introduction_,update_time_,create_time_)
-        VALUES(#{id},#{organId},#{jobType},#{jobNature},#{isProbationPeriod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{educationBackground},#{graduateSchool},#{technicalTitles},#{workUnit},#{subjectId},#{entryDate},#{demissionDate},#{certificateType},#{certificateNum},#{flowOrganRange},#{introduction},now(),now())
+        (id_,organ_id_,job_type_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,work_unit_,subject_id_,entry_date_,demission_date_,certificate_type_,certificate_num_,flow_organ_range_,introduction_,update_time_,create_time_,is_support_course_schedule_rewards_rules_)
+        VALUES(#{id},#{organId},#{jobType},#{jobNature},#{isProbationPeriod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{educationBackground},#{graduateSchool},#{technicalTitles},#{workUnit},#{subjectId},#{entryDate},#{demissionDate},#{certificateType},#{certificateNum},#{flowOrganRange},#{introduction},now(),now(),#{isSupportCourseScheduleRewardsRules})
     </insert>
 
     <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
@@ -132,6 +133,9 @@
             <if test="introduction != null">
                 introduction_ = #{introduction},
             </if>
+            <if test="isSupportCourseScheduleRewardsRules != null">
+                is_support_course_schedule_rewards_rules_ = #{isSupportCourseScheduleRewardsRules},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>