浏览代码

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父节点
当前提交
7306e83035

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -512,4 +512,11 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<CourseSchedule> getCourseScheduleStudentNum(@Param("courseIds") List<Long> courseIds);
+
+    List<CourseScheduleStudentPayment> getWithClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds,
+                                                            @Param("studentId") Integer studentId);
+
+    List<CourseScheduleStudentPayment> getWithGroup(@Param("groupId") String groupId,
+                                                            @Param("groupType") GroupType groupType,
+                                                            @Param("studentIds") List<Integer> studentIds);
 }

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

@@ -1201,6 +1201,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             totalOriginPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice());
         }
 
+        List<Integer> classGroupIds = classGroupList.stream().map(ClassGroup::getId).collect(Collectors.toList());
+        List<CourseScheduleStudentPayment> ccs = courseScheduleStudentPaymentDao.getWithClassGroupIds(classGroupIds, studentId);
+        Set<Long> existCourseIds = new HashSet<>();
+        if(!CollectionUtils.isEmpty(ccs)){
+            existCourseIds = ccs.stream().map(CourseScheduleStudentPayment::getCourseScheduleId).collect(Collectors.toSet());;
+        }
+
         Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
         Map<CourseScheduleType, BigDecimal> totalOrignPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
 
@@ -1224,6 +1231,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             // 3、学生加入级未开始课程
             List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
             for (CourseSchedule courseSchedule : courseScheduleList) {
+                if(existCourseIds.contains(courseSchedule.getId())){
+                    throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
+                }
+
                 CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
                 courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
                 courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
@@ -1231,6 +1242,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
                 courseScheduleStudentPayment.setUserId(studentId);
                 courseScheduleStudentPayment.setBatchNo(batchNo);
+                courseScheduleStudentPayment.setBeMerged(false);
 
                 unitPrice = unitPriceMap.get(courseSchedule.getType());
                 if (unitPrice != null) {

+ 28 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -391,6 +391,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				cssp.setOriginalPrice(courseOriginalPrice);
 				cssp.setExpectPrice(courseCurrentPrice);
 				cssp.setActualPrice(BigDecimal.ZERO);
+				cssp.setBeMerged(false);
 				newCourseScheduleStudentPayments.add(cssp);
 				if(courseSchedules.size() - 1 == i){
 					CourseScheduleStudentPayment scheduleStudentPayment = newCourseScheduleStudentPayments.get(0);
@@ -419,16 +420,27 @@ 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) {
-		Map<CourseSchedule.CourseScheduleType, Integer> courseTypeCourseDurationMap = new HashMap<>();
+		Map<CourseSchedule.CourseScheduleType, Map<Integer, Integer>> courseTypeCourseDurationMap = new HashMap<>();
 		Map<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCourseMap = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getType));
+
+		List<CourseScheduleStudentPayment> css = courseScheduleStudentPaymentDao.getWithGroup(musicGroupId, GroupType.MUSIC, studentIds);
+		Map<Integer, Set<Long>> studentCourseIdsMap = new HashMap<>();
+		if(!CollectionUtils.isEmpty(css)){
+			studentCourseIdsMap = css.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId, Collectors.mapping(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.toSet())));
+		}
+
 		for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCoursesEntry : typeCourseMap.entrySet()) {
-			int totalCourseDuration = 0;
-			for (CourseSchedule courseSchedule : typeCoursesEntry.getValue()) {
-				//课程时长
-				int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
-				totalCourseDuration += courseDuration;
+			Map<Integer, Integer> sdMap = new HashMap<>();
+			for (Integer studentId : studentIds) {
+				int totalCourseDuration = 0;
+				for (CourseSchedule courseSchedule : typeCoursesEntry.getValue()) {
+					//课程时长
+					int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
+					totalCourseDuration += courseDuration;
+				}
+				sdMap.put(studentId, totalCourseDuration);
 			}
-			courseTypeCourseDurationMap.put(typeCoursesEntry.getKey(), totalCourseDuration);
+			courseTypeCourseDurationMap.put(typeCoursesEntry.getKey(), sdMap);
 		}
 
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
@@ -436,9 +448,13 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		List<String> allBatchNos = new ArrayList<>();
 
 		for (Integer studentId : studentIds) {
+			Set<Long> existCourseIds = new HashSet<>();
+			if(studentCourseIdsMap.containsKey(studentId)){
+				existCourseIds = studentCourseIdsMap.get(studentId);
+			}
 			for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> courseScheduleTypeListEntry : typeCourseMap.entrySet()) {
 				//当前课程类型总课程时长
-				Integer typeCourseDuration = courseTypeCourseDurationMap.get(courseScheduleTypeListEntry.getKey());
+				Integer typeCourseDuration = courseTypeCourseDurationMap.get(courseScheduleTypeListEntry.getKey()).get(studentId);
 
 				String batchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, studentId, courseScheduleTypeListEntry.getKey(),null);
 
@@ -480,6 +496,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				courseScheduleTypeListEntry.getValue().sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 				BigDecimal typeCourseTotalOriginalPrice = new BigDecimal("0"), typeCourseTotalCurrentPrice = new BigDecimal("0");
 				for (CourseSchedule courseSchedule : courseScheduleTypeListEntry.getValue()) {
+					if(existCourseIds.contains(courseSchedule.getId())){
+						throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
+					}
 					//课程时长
 					int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
 
@@ -501,6 +520,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 					cssp.setOriginalPrice(courseOriginalPrice);
 					cssp.setExpectPrice(courseCurrentPrice);
 					cssp.setActualPrice(BigDecimal.ZERO);
+					cssp.setBeMerged(false);
 					typeCourseStudentPayments.add(cssp);
 				}
 

+ 32 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -955,16 +955,30 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.PAY_PRACTICE_BUY_SUCCESS,
                     userPhoneMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
 
+            String practiceType = "网管课";
+            switch (practiceGroup.getType()){
+                case FREE:
+                case CHARGE:
+                    break;
+                case TRIAL:
+                    practiceType = "试听课";
+                    break;
+                case COME_ON_PACKAGE:
+                case CARE_PACKAGE:
+                    practiceType = practiceGroup.getType().getMsg();
+                    break;
+            }
+
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherMap, null, 0, null, "TEACHER", teacher.getRealName(),
-                    practiceGroup.getType().getMsg(), practiceGroup.getName());
+                    practiceType, practiceGroup.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherPhoneMap, null, 0, null, "TEACHER", teacher.getRealName(),
-                    practiceGroup.getType().getMsg(), practiceGroup.getName());
+                    practiceType, practiceGroup.getName());
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -1494,16 +1508,30 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 //                    userPhoneMap, null, 0, null, "STUDENT", student.getUsername(), teacher.getRealName(),
 //                    oneCourseTimeStr, twoCourseTimeStr);
 
+            String practiceType = "网管课";
+            switch (practiceGroupBuyParams.getType()){
+                case FREE:
+                case CHARGE:
+                    break;
+                case TRIAL:
+                    practiceType = "试听课";
+                    break;
+                case COME_ON_PACKAGE:
+                case CARE_PACKAGE:
+                    practiceType = practiceGroupBuyParams.getType().getMsg();
+                    break;
+            }
+
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroupBuyParams.getUserId(), practiceGroupBuyParams.getUserId().toString());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherMap, null, 0, null, "TEACHER", teacher.getRealName(),
-                    practiceGroupBuyParams.getType().getMsg(), practiceGroupBuyParams.getName());
+                    practiceType, practiceGroupBuyParams.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroupBuyParams.getUserId(), teacher.getPhone());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherPhoneMap, null, 0, null, "TEACHER", teacher.getRealName(),
-                    practiceGroupBuyParams.getType().getMsg(), practiceGroupBuyParams.getName());
+                    practiceType, practiceGroupBuyParams.getName());
         }catch (Exception e){
             e.printStackTrace();
         }

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

@@ -2125,16 +2125,30 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
         }
 
+        String practiceType = "网管课";
+        switch (practiceGroup.getType()){
+            case FREE:
+            case CHARGE:
+                break;
+            case TRIAL:
+                practiceType = "试听课";
+                break;
+            case COME_ON_PACKAGE:
+            case CARE_PACKAGE:
+                practiceType = practiceGroup.getType().getMsg();
+                break;
+        }
+
         Map<Integer, String> teacherMap = new HashMap<>();
         teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                 teacherMap, null, 0, null, "TEACHER",
-                teacher.getRealName(), practiceGroup.getType().getMsg(), practiceGroup.getName());
+                teacher.getRealName(),practiceType, practiceGroup.getName());
         Map<Integer, String> teacherPhoneMap = new HashMap<>();
         teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                 teacherPhoneMap, null, 0, null, "TEACHER",
-                teacher.getRealName(), practiceGroup.getType().getMsg(), practiceGroup.getName());
+                teacher.getRealName(), practiceType, practiceGroup.getName());
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(), null, YesOrNoEnum.YES.getCode());
 
@@ -3317,18 +3331,30 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.PAY_PRACTICE_BUY_SUCCESS,
                     userPhoneMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
 
-
+            String practiceType = "网管课";
+            switch (practiceGroup.getType()){
+                case FREE:
+                case CHARGE:
+                    break;
+                case TRIAL:
+                    practiceType = "试听课";
+                    break;
+                case COME_ON_PACKAGE:
+                case CARE_PACKAGE:
+                    practiceType = practiceGroup.getType().getMsg();
+                    break;
+            }
 
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherMap, null, 0, null, "TEACHER",
-                    teacher.getRealName(), practiceGroup.getType().getMsg(), practiceGroup.getName());
+                    teacher.getRealName(), practiceType, practiceGroup.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.PRACTICE_CREATE_TEACHER_PUSH,
                     teacherPhoneMap, null, 0, null, "TEACHER",
-                    teacher.getRealName(), practiceGroup.getType().getMsg(), practiceGroup.getName());
+                    teacher.getRealName(), practiceType, practiceGroup.getName());
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 21 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -729,4 +729,25 @@
 		</foreach>
 		GROUP BY course_schedule_id_
 	</select>
+
+	<select id="getWithClassGroupIds" resultMap="CourseScheduleStudentPayment">
+		SELECT * FROM course_schedule_student_payment WHERE class_group_id_ IN
+		<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+			#{classGroupId}
+		</foreach>
+		<if test="studentId!=null">
+			AND user_id_ = #{studentId}
+		</if>
+	</select>
+
+	<select id="getWithGroup" resultMap="CourseScheduleStudentPayment">
+		SELECT * FROM course_schedule_student_payment
+		WHERE music_group_id_ = #{groupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		<if test="studentIds!=null and studentIds.size()>0">
+			AND user_id_ IN
+			<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+				#{studentId}
+			</foreach>
+		</if>
+	</select>
 </mapper>