Procházet zdrojové kódy

经营报表业务调整

zouxuan před 2 roky
rodič
revize
9e20bd3ba8

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

@@ -101,5 +101,5 @@ public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long
     * @author zx
     * @date 2021/12/30 15:16
     */
-    void addCalenderDetail(StudentPaymentOrder studentPaymentOrder);
+    MusicGroupPaymentCalenderDetail addCalenderDetail(StudentPaymentOrder studentPaymentOrder);
 }

+ 2 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -481,7 +481,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void addCalenderDetail(StudentPaymentOrder studentPaymentOrder) {
+    public MusicGroupPaymentCalenderDetail addCalenderDetail(StudentPaymentOrder studentPaymentOrder) {
         //缴费详情 calender detail
         Long calenderId = studentPaymentOrder.getCalenderId();
         MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderService.get(calenderId);
@@ -512,24 +512,12 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
             musicGroupPaymentCalenderDetail.setUserStatus(null);
             musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupPaymentCalender.getDeadlinePaymentDate());
             musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupPaymentCalender.getStartPaymentDate());
-            //判断乐团收费类型
-            MusicGroup musicGroup = musicGroupDao.get(musicGroupPaymentCalender.getMusicGroupId());
-            if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
-                
-            } else if (musicGroup.getCourseViewType() == CourseViewTypeEnum.COURSE_FEE) {
-                
-            }
-
             musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
         } else {
             musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
             musicGroupPaymentCalenderDetail.setPayTime(date);
             musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-            MusicGroupPaymentCalenderMember calenderMember = musicGroupPaymentCalenderMemberService.findByCalenderId(calenderId);
-            this.setCourseIncome(calenderMember,musicGroupPaymentCalenderDetail);
-            musicGroupPaymentCalenderDetailDao.update(musicGroupPaymentCalenderDetail);
         }
-
         //保存、更新云教练缴费项目预收
         operatingReportCloudService.updateSet(musicGroupPaymentCalender,musicGroupPaymentCalenderDetail.getExpectMemberAmount());
         //续费项目加学员时就生成了课程时长,报名项目在缴费成功后才需要添加课程时长
@@ -537,5 +525,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                 musicGroupPaymentCalender,
                 musicGroupPaymentCalenderDetail.getId(),
                 studentPaymentOrder.getId());
+        return musicGroupPaymentCalenderDetail;
     }
 }

+ 31 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -65,6 +65,10 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     private ChargeTypeSubjectMapperDao chargeTypeSubjectMapperDao;
     @Autowired
     private StudentMusicCourseFeeService studentMusicCourseFeeService;
+    @Autowired
+    private MemberFeeSettingService memberFeeSettingService;
+    @Autowired
+    private MusicGroupPaymentCalenderMemberDao musicGroupPaymentCalenderMemberDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
@@ -658,7 +662,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
         }
 
         //缴费项目详情
-        musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
+        MusicGroupPaymentCalenderDetail paymentCalenderDetail = musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
 
         List<OrderDetailTypeEnum> detailTypeEnums = allDetails.stream().map(StudentPaymentOrderDetail::getType).collect(Collectors.toList());
         //销售订单详情
@@ -701,14 +705,20 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 repair.setStudentInstrumentId(studentInstrumentId);
                 studentPaymentOrderDetailDao.update(repair);
             }
-            //如果是免费团,那么要处理乐器溢出的课程费用
-            CourseViewTypeEnum courseViewType = musicGroup.getCourseViewType();
-            Integer subjectId = studentRegistration.getActualSubjectId();
-            ChargeTypeSubjectMapper chargeType = chargeTypeSubjectMapperDao.findByViewTypeANdSubject(courseViewType,subjectId,musicGroup.getTenantId());
-            if(Objects.nonNull(chargeType) && chargeType.getFee() != null && musical.getPrice().compareTo(BigDecimal.ZERO) > 0
-                    && chargeType.getFee().compareTo(musical.getPrice()) < 0){
-                studentMusicCourseFeeService.addExpectPrice(studentRegistration.getUserId(),
-                        musicGroup.getId(),musical.getPrice().subtract(chargeType.getFee()));
+            if(studentPaymentOrder.getType() == OrderTypeEnum.APPLY){
+                //如果是免费团,那么要处理乐器溢出的课程费用
+                CourseViewTypeEnum courseViewType = musicGroup.getCourseViewType();
+                Integer subjectId = studentRegistration.getActualSubjectId();
+                ChargeTypeSubjectMapper chargeType = chargeTypeSubjectMapperDao.findByViewTypeANdSubject(courseViewType,subjectId,musicGroup.getTenantId());
+                if(Objects.nonNull(chargeType) && chargeType.getFee() != null && musical.getPrice().compareTo(BigDecimal.ZERO) > 0
+                        && chargeType.getFee().compareTo(musical.getPrice()) < 0){
+                    BigDecimal musicalFee = musical.getPrice().subtract(chargeType.getFee());
+                    studentMusicCourseFeeService.addExpectPrice(studentRegistration.getUserId(),
+                            musicGroup.getId(),musicalFee);
+                    //设置缴费项目详情乐器和课费
+                    paymentCalenderDetail.setExpectAmount(chargeType.getFee());
+                    paymentCalenderDetail.setActualAmount(musicalFee);
+                }
             }
         }
 
@@ -716,12 +726,24 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
         if (detailTypeEnums.contains(CLOUD_TEACHER)) {
             if(studentPaymentOrder.getType() == OrderTypeEnum.APPLY){
                 studentRegistration.setHasCloudTeacher(1);
+                //如果是报名订单,要处理云教练费用、以及溢出课费
+                if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+                    //获取云教练溢出费用
+                    MusicGroupPaymentCalenderMember calenderMember = musicGroupPaymentCalenderMemberDao.findByCalenderId(paymentCalenderDetail.getMusicGroupPaymentCalenderId());
+                    BigDecimal courseIncome = memberFeeSettingService.getAmount(musicGroup.getOrganId(), 1, calenderMember.getPeriod(),
+                            calenderMember.getNum(), MemberFeeSettingServiceImpl::getIncome);
+                    if(calenderMember.getActualAmount().compareTo(courseIncome) > 0){
+                        paymentCalenderDetail.setExpectMemberAmount(courseIncome);
+                        paymentCalenderDetail.setActualAmount(calenderMember.getActualAmount().subtract(courseIncome));
+                    }
+                }
             }
             BigDecimal cloudTeacherFee = allDetails.stream().filter(o -> o.getType() == CLOUD_TEACHER)
                     .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             cloudTeacherOrderService.addOrderDetail2CloudTeacher(studentPaymentOrder, cloudTeacherFee);
         }
+        musicGroupPaymentCalenderDetailService.update(paymentCalenderDetail);
         studentRegistrationDao.update(studentRegistration);
     }