|
@@ -224,48 +224,43 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void updateVipGiveCourse(Long vipGroupId) {
|
|
|
List<VipGroupGiveCourseSortDto> vipGroupSortCourseByGroup = courseScheduleStudentPaymentDao.findVipGroupSortCourseByGroup(vipGroupId.toString());
|
|
|
- Map<BigDecimal, Long> expectPriceCountMap = vipGroupSortCourseByGroup.stream()
|
|
|
- .collect(Collectors.groupingBy(VipGroupGiveCourseSortDto::getExpectPrice, Collectors.counting()));
|
|
|
- BigDecimal zero = new BigDecimal("0.00");
|
|
|
- Long zeroPriceNum = expectPriceCountMap.get(zero);
|
|
|
- if(Objects.isNull(zeroPriceNum)||zeroPriceNum<=0){
|
|
|
- return;
|
|
|
- }
|
|
|
+ Map<Integer, List<VipGroupGiveCourseSortDto>> userCourseMap = vipGroupSortCourseByGroup.stream().collect(Collectors.groupingBy(VipGroupGiveCourseSortDto::getUserId));
|
|
|
|
|
|
List<CourseScheduleStudentPayment> needUpdatePayments=new ArrayList<>();
|
|
|
-
|
|
|
- List<VipGroupGiveCourseSortDto> zeroExpectPricePayments = vipGroupSortCourseByGroup.stream()
|
|
|
- .filter(vipGroupGiveCourseSortDto -> vipGroupGiveCourseSortDto.getExpectPrice().compareTo(zero)==0)
|
|
|
- .collect(Collectors.toList());
|
|
|
- Map<Long, List<VipGroupGiveCourseSortDto>> courseIdPaymentMap = zeroExpectPricePayments.stream()
|
|
|
- .collect(Collectors.groupingBy(VipGroupGiveCourseSortDto::getId));
|
|
|
- vipGroupSortCourseByGroup.sort(Comparator.comparing(VipGroupGiveCourseSortDto::getCourseStartTime).reversed());
|
|
|
- for (int i=0;i<vipGroupSortCourseByGroup.size();i++) {
|
|
|
- if(i>zeroExpectPricePayments.size()-1){
|
|
|
+ for (Map.Entry<Integer, List<VipGroupGiveCourseSortDto>> integerListEntry : userCourseMap.entrySet()) {
|
|
|
+ List<VipGroupGiveCourseSortDto> courses = integerListEntry.getValue();
|
|
|
+ Map<BigDecimal, Long> expectPriceCountMap = courses.stream()
|
|
|
+ .collect(Collectors.groupingBy(VipGroupGiveCourseSortDto::getExpectPrice, Collectors.counting()));
|
|
|
+ BigDecimal zero = new BigDecimal("0.00");
|
|
|
+ Long zeroPriceNum = expectPriceCountMap.get(zero);
|
|
|
+ if(Objects.isNull(zeroPriceNum)||zeroPriceNum<=0){
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- VipGroupGiveCourseSortDto vipGroupGiveCourseSortDto=vipGroupSortCourseByGroup.get(i);
|
|
|
+ List<VipGroupGiveCourseSortDto> zeroExpectPricePayments = courses.stream()
|
|
|
+ .filter(vipGroupGiveCourseSortDto -> vipGroupGiveCourseSortDto.getExpectPrice().compareTo(zero)==0)
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- int j=0;
|
|
|
- for (Map.Entry<Long, List<VipGroupGiveCourseSortDto>> longListEntry : courseIdPaymentMap.entrySet()) {
|
|
|
- if(j>i){
|
|
|
+ courses.sort(Comparator.comparing(VipGroupGiveCourseSortDto::getCourseStartTime).reversed());
|
|
|
+ for (int i=0;i<courses.size();i++) {
|
|
|
+ if(i>zeroExpectPricePayments.size()-1){
|
|
|
break;
|
|
|
}
|
|
|
- j++;
|
|
|
|
|
|
- for (VipGroupGiveCourseSortDto groupGiveCourseSortDto : longListEntry.getValue()) {
|
|
|
- if(!vipGroupGiveCourseSortDto.getId().equals(groupGiveCourseSortDto.getId())
|
|
|
- &&!vipGroupGiveCourseSortDto.getTeachMode().equals(groupGiveCourseSortDto.getTeachMode())){
|
|
|
- throw new BizException("不支持将不同教学形式的课程调整的赠送课时后");
|
|
|
- }
|
|
|
- if(!vipGroupGiveCourseSortDto.getId().equals(groupGiveCourseSortDto.getId())){
|
|
|
- needUpdatePayments.add(new CourseScheduleStudentPayment(vipGroupGiveCourseSortDto.getId(),groupGiveCourseSortDto.getCourseScheduleId()));
|
|
|
- needUpdatePayments.add(new CourseScheduleStudentPayment(groupGiveCourseSortDto.getId(),vipGroupGiveCourseSortDto.getCourseScheduleId()));
|
|
|
- }
|
|
|
+ VipGroupGiveCourseSortDto vipGroupGiveCourseSortDto=courses.get(i);
|
|
|
+
|
|
|
+ if(!vipGroupGiveCourseSortDto.getId().equals(zeroExpectPricePayments.get(i).getId())
|
|
|
+ &&!vipGroupGiveCourseSortDto.getTeachMode().equals(zeroExpectPricePayments.get(i).getTeachMode())){
|
|
|
+ throw new BizException("不支持将不同教学形式的课程调整的赠送课时后");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!vipGroupGiveCourseSortDto.getId().equals(zeroExpectPricePayments.get(i).getId())){
|
|
|
+ needUpdatePayments.add(new CourseScheduleStudentPayment(vipGroupGiveCourseSortDto.getId(),zeroExpectPricePayments.get(i).getCourseScheduleId()));
|
|
|
+ needUpdatePayments.add(new CourseScheduleStudentPayment(zeroExpectPricePayments.get(i).getId(),vipGroupGiveCourseSortDto.getCourseScheduleId()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if(!CollectionUtils.isEmpty(needUpdatePayments)){
|
|
|
courseScheduleStudentPaymentDao.batchUpdate(needUpdatePayments);
|
|
|
}
|