浏览代码

经营报表相关改动

zouxuan 2 年之前
父节点
当前提交
35d283d2fc

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

@@ -139,7 +139,8 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
      * @date 2020/12/7 0007
      */
     List<StudentPaymentOrderDetail> getWithUserAndOrderType(@Param("userId") Integer userId,
-                                                            @Param("orderType") OrderTypeEnum orderType);
+                                                            @Param("musicGroupId") String musicGroupId,
+                                                            @Param("orderDetailType") OrderDetailTypeEnum orderDetailType);
 
     List<StudentPaymentOrderDetail> getWithIds(@Param("paymentOrderIds") List<Long> paymentOrderIds);
 

+ 29 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentStudentCourseDetailServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
@@ -174,8 +175,34 @@ public class MusicGroupPaymentStudentCourseDetailServiceImpl extends BaseService
 				musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
 			}
 			if (musicGroupPaymentStudentCourseDetails.size() > 0) {
-				if(musicGroupPaymentCalender.getPayUserType() == STUDENT && musicalFee.compareTo(BigDecimal.ZERO) > 0) {
-					distributeTotalAmount(musicGroupPaymentStudentCourseDetails, musicalFee);
+				if(musicGroupPaymentCalender.getPayUserType() == STUDENT && musicGroup.getCourseViewType() == CourseViewTypeEnum.FREE) {
+					List<StudentPaymentOrderDetail> instrumentDtos = studentPaymentOrderDetailDao.getWithUserAndOrderType(userId, musicGroupId, OrderDetailTypeEnum.MUSICAL);
+					//是否买过乐器
+					if(CollectionUtils.isNotEmpty(instrumentDtos)){
+						StudentPaymentOrderDetail orderMusical = instrumentDtos.get(0);
+						//如果是免费团,那么要处理乐器溢出的课程费用
+						CourseViewTypeEnum courseViewType = musicGroup.getCourseViewType();
+						StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+						Integer subjectId = studentRegistration.getActualSubjectId();
+						ChargeTypeSubjectMapper chargeType = chargeTypeSubjectMapperDao.findByViewTypeANdSubject(courseViewType,subjectId,musicGroup.getTenantId());
+						if(Objects.nonNull(chargeType) && chargeType.getFee() != null && orderMusical.getPrice().compareTo(BigDecimal.ZERO) > 0
+								&& chargeType.getFee().compareTo(orderMusical.getPrice()) < 0){
+							musicalFee = orderMusical.getPrice().subtract(chargeType.getFee());
+							//累加充值金额
+							studentRegistration.setSurplusCourseFee(studentRegistration.getSurplusCourseFee().add(musicalFee));
+							//添加日志
+							StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
+							studentCourseFeeDetail.setTenantId(musicGroup.getTenantId());
+							studentCourseFeeDetail.setStudentRegistrationId(studentRegistration.getId());
+							studentCourseFeeDetail.setAmount(musicalFee);
+							studentCourseFeeDetail.setSurplusCourseFee(studentRegistration.getSurplusCourseFee());
+							studentCourseFeeDetail.setMemo("免费团,购买乐器赠送课费");
+							studentCourseFeeDetail.setOperator(userId);
+							studentCourseFeeDetailDao.insert(studentCourseFeeDetail);
+							studentRegistrationDao.update(studentRegistration);
+							distributeTotalAmount(musicGroupPaymentStudentCourseDetails,musicalFee);
+						}
+					}
 				}
 				musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetails);
 			}

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

@@ -373,9 +373,10 @@
     <select id="getWithUserAndOrderType" resultMap="StudentPaymentOrderDetail">
         SELECT spod.* FROM student_payment_order_detail spod
         LEFT JOIN student_payment_order spo ON spo.id_=spod.payment_order_id_
-        WHERE spo.user_id_= #{userId}
-        AND spod.type_ = #{orderType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        WHERE spo.user_id_= #{userId} AND spo.music_group_id_ = #{musicGroupId}
+        AND spod.type_ = #{orderDetailType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND spo.status_='SUCCESS'
+        AND spo.type_ = 'APPLY'
     </select>
 
     <select id="getOrderDetailByOrderId" resultMap="StudentPaymentOrderDetail">