Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 years ago
parent
commit
6efde8d4c2

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java

@@ -55,7 +55,7 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
      * @param status
      * @return
      */
-    List<MusicGroupPaymentCalender> queryByPaymentStatus(@Param("status") List<PaymentStatusEnum> status);
+    List<MusicGroupPaymentCalender> queryByPaymentStatus(@Param("status") List<PaymentStatusEnum> status, @Param("payUserType") String payUserType);
 
     /**
      * 获取缴费信息锁

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentStudentCourseDetailDao.java

@@ -29,7 +29,7 @@ public interface MusicGroupPaymentStudentCourseDetailDao extends BaseDAO<Long, M
      * @param studentIds:
      * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail>
      */
-    List<MusicGroupPaymentStudentCourseDetail> getUnUseWithStudents(@Param("studentIds") List<Integer> studentIds);
+    List<MusicGroupPaymentStudentCourseDetail> getUnUseWithStudents(@Param("musicGroupId") String musicGroupId, @Param("studentIds") List<Integer> studentIds);
 
 	int batchInsert(List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList);
 

+ 42 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -116,16 +117,6 @@ import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherMusicClassQueryInfo;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
-import com.ym.mec.biz.service.ClassGroupRelationService;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.SubjectService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
@@ -222,6 +213,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private SysConfigService sysConfigService;
     @Autowired
     private StudentDao studentDao;
+    @Autowired
+    private MusicGroupPaymentCalenderCourseSettingsService musicGroupPaymentCalenderCourseSettingsService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -1729,11 +1722,24 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //5、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDtos.get(0).getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
+        Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
+
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+            if(!courseTypeMinutesMap.containsKey(classGroup4MixDto.getCourseType().getCode())){
+                throw new BizException("{}课程类型暂无剩余课程时长", classGroup4MixDto.getCourseType().getMsg());
+            }
+            Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
+            long courseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getStartClassTime() + ":00", formatter),
+                    LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getEndClassTime() + ":00", formatter))
+                    .toMinutes();
+            classGroup4MixDto.setCourseTimes(totalMinutes/(int)courseDuration);
+
             int times = 0;
 
             Set<String> holidayDays = new HashSet<>();
@@ -1744,7 +1750,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
                 }
             }
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
             WhileNode:
             while (true) {
@@ -2020,18 +2025,32 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             classGroupTeacherMapperService.classGroupTeachersInsert(newClassGroupTeacherMapperList);
         }
 
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         //2、获取班级学生
         List<StudentRegistration> studentList = classGroupStudentMapperDao.findClassStudentList(classGroup.getId(), ClassGroupStudentStatusEnum.NORMAL);
 
+        List<Integer> studentIds = studentList.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
+
         //3、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDtos.get(0).getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
+        Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIds);
+
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+            if(!courseTypeMinutesMap.containsKey(classGroup4MixDto.getCourseType().getCode())){
+                throw new BizException("{}课程类型暂无剩余课程时长", classGroup4MixDto.getCourseType().getMsg());
+            }
+            Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
+            long courseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getStartClassTime() + ":00", formatter),
+                    LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getEndClassTime() + ":00", formatter))
+                    .toMinutes();
+            classGroup4MixDto.setCourseTimes(totalMinutes/(int)courseDuration);
+
             int times = 0;
             Set<String> holidayDays = new HashSet<>();
             if (classGroup4MixDto.getHoliday()) {
@@ -2040,7 +2059,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
                 }
             }
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
             WhileNode:
             while (true) {
@@ -2203,7 +2221,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         if (!CollectionUtils.isEmpty(studentList)) {
-            List<Integer> studentIds = studentList.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
             studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
 
             //学生结算表
@@ -2303,11 +2320,23 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //5、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDtos.get(0).getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
+        Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
+
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+            if(!courseTypeMinutesMap.containsKey(classGroup4MixDto.getCourseType().getCode())){
+                throw new BizException("{}课程类型暂无剩余课程时长", classGroup4MixDto.getCourseType().getMsg());
+            }
+            Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
+            long courseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getStartClassTime() + ":00", formatter),
+                    LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getCourseTimeDtoList().get(0).getEndClassTime() + ":00", formatter))
+                    .toMinutes();
+            classGroup4MixDto.setCourseTimes(totalMinutes/(int)courseDuration);
+
             int times = 0;
             Set<String> holidayDays = new HashSet<>();
             if (classGroup4MixDto.getHoliday()) {
@@ -2316,7 +2345,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
                 }
             }
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
             WhileNode:
             while (true) {

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSON;
@@ -356,6 +357,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public void updateClassGroupStudents(Long classGroupId, Set<Integer> studentIds) {
         ClassGroup classGroup = classGroupService.get(classGroupId.intValue());
         if(Objects.isNull(classGroup)){

+ 11 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -287,7 +287,6 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	@Override
 	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public void createForMusicGroup(String musicGroupId, List<CourseSchedule> courseSchedules, List<Integer> studentIds) {
-		List<CourseScheduleStudentPayment> baseCourseScheduleStudentPayments = new ArrayList<>();
 		Map<CourseSchedule.CourseScheduleType, Integer> courseTypeCourseDurationMap = new HashMap<>();
 		Map<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCourseMap = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getType));
 		for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCoursesEntry : typeCourseMap.entrySet()) {
@@ -302,12 +301,14 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 
+		List<String> allBatchNos = new ArrayList<>();
+
 		for (Integer studentId : studentIds) {
 			for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> courseScheduleTypeListEntry : typeCourseMap.entrySet()) {
 				//当前课程类型总课程时长
 				Integer typeCourseDuration = courseTypeCourseDurationMap.get(courseScheduleTypeListEntry.getKey());
 				MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudentAndCourseTypeAndCourseMinutes(studentId, courseScheduleTypeListEntry.getKey(), typeCourseDuration);
-				if(Objects.isNull(musicGroupPaymentStudentCourseDetail)){
+				if(Objects.isNull(musicGroupPaymentStudentCourseDetail)||musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes().compareTo(typeCourseDuration)<0){
 					SysUser user = teacherDao.getUser(studentId);
 					throw new BizException("{}在{}课程类型上的课程时长不足", user.getUsername(), courseScheduleTypeListEntry.getKey().getMsg());
 				}
@@ -318,10 +319,12 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				}
 
 				MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalenderAndCourseType(musicGroupPaymentStudentCourseDetail.getMusicGroupPaymentCalenderId(), courseScheduleTypeListEntry.getKey());
-				if(Objects.isNull(musicGroupPaymentCalenderCourseSettings)){
+				if(Objects.isNull(musicGroupPaymentCalenderCourseSettings)||musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties().compareTo(musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes())!=0){
 					throw new BizException("缴费设置异常");
 				}
 
+				allBatchNos.add(musicGroupPaymentCalender.getBatchNo());
+
 				//课程每分钟原价
 				BigDecimal unitMinuteOriginalPrice = musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().divide(new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
 				//课程每分钟现价
@@ -348,22 +351,23 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 					cssp.setCourseScheduleId(courseSchedule.getId());
 					cssp.setClassGroupId(courseSchedule.getClassGroupId());
 					cssp.setBatchNo(musicGroupPaymentCalender.getBatchNo());
+					cssp.setUserId(studentId);
 					cssp.setOriginalPrice(courseOriginalPrice);
 					cssp.setExpectPrice(courseCurrentPrice);
 					cssp.setActualPrice(BigDecimal.ZERO);
 					typeCourseStudentPayments.add(cssp);
 				}
-				if(musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().compareTo(typeCourseTotalCurrentPrice)<0){
-					throw new BizException("{}课程类型时长不足", courseScheduleTypeListEntry.getKey().getMsg());
-				}
 				typeCourseStudentPayments.get(0).setOriginalPrice(typeCourseStudentPayments.get(0).getOriginalPrice().add(musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().subtract(typeCourseTotalOriginalPrice)));
 				typeCourseStudentPayments.get(0).setExpectPrice(typeCourseStudentPayments.get(0).getExpectPrice().add(musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().subtract(typeCourseTotalCurrentPrice)));
-				baseCourseScheduleStudentPayments.addAll(typeCourseStudentPayments);
+				courseScheduleStudentPayments.addAll(typeCourseStudentPayments);
 				musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(typeCourseDuration);
 				musicGroupPaymentStudentCourseDetailDao.update(musicGroupPaymentStudentCourseDetail);
 			}
 		}
 		courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+		for (String batchNo : allBatchNos) {
+			updateForMusicGroupWithPaymentCalender(batchNo);
+		}
 	}
 
 	@Override

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

@@ -29,7 +29,7 @@ public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServ
 
 	@Override
 	public Map<String, Integer> getMusicCourseSettingsWithStudents(String musicGroupId, List<Integer> studentIds) {
-		List<MusicGroupPaymentStudentCourseDetail> mgpscds = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudents(studentIds);
+		List<MusicGroupPaymentStudentCourseDetail> mgpscds = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudents(musicGroupId, studentIds);
 		if(CollectionUtils.isEmpty(mgpscds)){
 			return Collections.emptyMap();
 		}

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

@@ -680,7 +680,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		List<PaymentStatusEnum> statusList = new ArrayList<PaymentStatusEnum>();
 		statusList.add(PaymentStatusEnum.NO);
 		statusList.add(PaymentStatusEnum.OPEN);
-		List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(statusList);
+		List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.queryByPaymentStatus(statusList,PayUserType.STUDENT.getCode());
 
 		List<MusicGroupPaymentCalender> updateMusicGroupPaymentCalenderList = new ArrayList<MusicGroupPaymentCalender>();
 

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

@@ -2122,7 +2122,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     public SubFeeSettingDto findMusicGroupBasicInfo(String musicGroupId) {
         SubFeeSettingDto subFeeSettingDto = new SubFeeSettingDto();
         //获取乐团信息
-        subFeeSettingDto.setMusicGroup(musicGroupDao.get(musicGroupId));
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        ChargeType chargeType = chargeTypeDao.get(musicGroup.getChargeTypeId());
+        musicGroup.setChargeTypeName(chargeType.getName());
+        subFeeSettingDto.setMusicGroup(musicGroup);
         //获取付费主体
         subFeeSettingDto.setMusicGroupPaymentEntities(musicGroupPaymentEntitiesDao.findByMusicGroupId(musicGroupId));
         //获取缴费周期

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

@@ -1065,15 +1065,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = new ArrayList<>();
 
         for (MusicGroupPaymentCalenderCourseSettings courseSetting : courseSettings) {
-            if (!orderDetailTypes.contains(courseSetting.getCourseType().getCode())) continue;
+            if (musicGroupRegCalender.getPayUserType().equals(MusicGroupPaymentCalender.PayUserType.STUDENT) && !orderDetailTypes.contains(courseSetting.getCourseType().getCode())) continue;
             MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
-            musicGroupPaymentStudentCourseDetail.setCourseType(courseSetting.getCourseType());
-            musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
+            musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
             musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
+            musicGroupPaymentStudentCourseDetail.setUserId(studentPaymentOrder.getUserId());
+            musicGroupPaymentStudentCourseDetail.setCourseType(courseSetting.getCourseType());
             musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSetting.getCourseTotalMinuties());
-            musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
             musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
-            musicGroupPaymentStudentCourseDetail.setUserId(studentPaymentOrder.getUserId());
+            musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
+            musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
             musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
         }
 

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

@@ -292,9 +292,10 @@
 
     <!-- 查询班级某状态的所有学生 -->
     <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
-        SELECT sr.*,su.username_ FROM class_group_student_mapper cgsm
+        SELECT sr.*,s.name_ subject_name_,su.username_  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_)
         LEFT JOIN sys_user su on sr.user_id_ = su.id_
+        LEFT JOIN subject s ON sr.subject_id_ = s.id_
         WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
         AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml

@@ -258,6 +258,9 @@
 		            #{item,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		        </foreach>
         	</if>
+        	<if test="payUserType != null">
+                AND pay_user_type_ = #{payUserType}
+        	</if>
         </where>
     </select>
 

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -109,13 +109,15 @@
 		SELECT * FROM music_group_payment_student_course_detail
 		WHERE user_id_=#{studentId}
 		AND course_type_=#{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-		AND total_course_minutes &gt; #{courseMinutes}
+		AND total_course_minutes_ &gt; #{courseMinutes}
 		AND used_course_minutes_ &lt;= 0
 		ORDER BY id_ DESC LIMIT 1;
 	</select>
     <select id="getUnUseWithStudents" resultMap="MusicGroupPaymentStudentCourseDetail">
-		SELECT * FROM music_group_payment_student_course_detail WHERE
-		used_course_minutes_ &lt;= 0
+		SELECT * FROM music_group_payment_student_course_detail mgpscd
+		LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
+		WHERE used_course_minutes_ &lt;= 0
+		AND mgpc.music_group_id_ = #{musicGroupId}
 		AND user_id_ IN
 		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
 			#{studentId}

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

@@ -154,10 +154,10 @@ public class MusicGroupController extends BaseController {
             if (musicGroup.getStatus() == MusicGroupStatusEnum.PAY) {
                 Date now = new Date();
                 MusicGroupPaymentCalender regCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
-                if (regCalender != null) {
+                if (regCalender != null && regCalender.getDeadlinePaymentDate() != null) {
                     musicGroup.setPaymentExpireDate(regCalender.getDeadlinePaymentDate());
                 }
-                if (DateUtil.daysBetween(musicGroup.getPaymentExpireDate(), now) > 1) {
+                if (musicGroup.getPaymentExpireDate() != null && DateUtil.daysBetween(musicGroup.getPaymentExpireDate(), now) > 1) {
                     return failed("乐团缴费时间已截止");
                 }
             }

+ 11 - 2
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

@@ -1,11 +1,13 @@
 package com.ym.mec.web.controller.education;
 
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,16 +16,23 @@ import org.springframework.web.bind.annotation.RestController;
  * @Date 2020.09.14
  */
 @RestController
-@RequestMapping("eduStudentAttendance")
 public class EduStudentStudentController extends BaseController {
 
     @Autowired
     private StudentAttendanceService studentAttendanceService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @ApiOperation(value = "获取某节课学生签到列表")
-    @GetMapping("/findStudentAttendance")
+    @GetMapping("eduStudentAttendance/findStudentAttendance")
     public Object findStudentAttendance(QueryInfo queryInfo){
         return succeed(studentAttendanceService.findStudentAttendance(queryInfo));
     }
 
+    @ApiOperation(value = "获取学员详情页,包含所在乐团信息")
+    @PostMapping("studentManage/detail")
+    public Object getStudentDetail(Integer studentId){
+        return succeed(studentRegistrationService.getStudentDetail(studentId));
+    }
+
 }