Browse Source

跨团合班

zouxuan 4 years ago
parent
commit
99cc9b9dd5

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseFeeDetailDao.java

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
 import com.ym.mec.common.dal.BaseDAO;
 
+import java.util.List;
+
 public interface StudentCourseFeeDetailDao extends BaseDAO<Long, StudentCourseFeeDetail>{
 
-	
+
+    void batchInsert(List<StudentCourseFeeDetail> studentCourseFeeDetails);
 }

+ 6 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -101,6 +101,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
+    private ClassGroupStudentMapperService classGroupStudentMapperService;
+    @Autowired
     private ClassGroupRelationDao classGroupRelationDao;
     @Autowired
     private ClassGroupTeacherMapperService classGroupTeacherMapperService;
@@ -3694,11 +3696,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<MusicGroupPaymentCalenderDto> paymentCalenderDtos = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos();
         //主班
         Integer masterClassGroupId = mergeClassSplitClassAffirmDto.getMasterClassGroupId();
+        //学员列表
+        List<Integer> studentIds = mergeClassSplitClassAffirmDto.getStudentIds();
         //班级和学员关联
         List<Map<Integer, String>> classGroupStudents = mergeClassSplitClassAffirmDto.getClassGroupStudents();
         //获取默认的学员缴费详情
         List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails = queryStudentPaymentCalenders(mergeClassSplitClassAffirmDto);
-        MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = new MusicGroupStudentClassAdjust();
         //创建缴费项目
         MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
         MusicGroupPaymentCalender.PaymentCalenderStatusEnum status = null;
@@ -3710,8 +3713,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             for (MusicGroupPaymentCalenderDto calenderDto : paymentCalenderDtos) {
                 //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
                 studentRegistrationService.insertStudent(calenderDto.getStudentIds(),calenderDto.getMusicGroupId(),musicGroup.getId(),masterTotalPrice);
-                //添加班级关联、课程关联
-
                 calenderDto.setMusicGroupId(musicGroup.getId());
                 List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = calenderDto.getMusicGroupPaymentCalenderStudentDetails();
                 boolean containsAll = musicGroupPaymentCalenderStudentDetails.containsAll(calenderStudentDetails);
@@ -3734,6 +3735,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }
                 }
             }
+            //将学员加进班级未开始的课程,以及班级关联、加群
+            classGroupStudentMapperService.updateClassGroupStudents(masterClassGroupId.longValue(),new HashSet<>(studentIds));
         }
     }
 }

+ 25 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -856,42 +856,51 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     continue;
                 }
             }
-            //当前学员是否以前存在过当前乐团
-            studentRegistration.setMusicGroupId(newMusicGroupId);
-            if (phoneAndMusicGroupId != null) {
-                studentRegistration.setId(phoneAndMusicGroupId.getId());
-                studentRegistrationDao.update(studentRegistration);
-            } else {
-                studentRegistrationDao.insertBasic(studentRegistration);
-            }
             //记录课程余额消费日志
             if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d){
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
                 if(studentRegistration.getSurplusCourseFee().doubleValue() > masterTotalPrice.doubleValue()){
                     studentCourseFeeDetail.setAmount(masterTotalPrice);
                     studentCourseFeeDetail.setSurplusCourseFee(studentRegistration.getSurplusCourseFee().subtract(masterTotalPrice));
+                }else {
+                    studentCourseFeeDetail.setAmount(studentRegistration.getSurplusCourseFee());
+                    studentCourseFeeDetail.setSurplusCourseFee(BigDecimal.ZERO);
                 }
-                studentCourseFeeDetail.setAmount(studentRegistration.getSurplusCourseFee());
-                studentCourseFeeDetail.setSurplusCourseFee(BigDecimal.ZERO);
+                studentRegistration.setSurplusCourseFee(studentCourseFeeDetail.getSurplusCourseFee());
                 studentCourseFeeDetail.setMemo("跨团合班消费");
                 studentCourseFeeDetail.setOperator(sysUser1.getId());
                 studentCourseFeeDetails.add(studentCourseFeeDetail);
             }
+            //当前学员是否以前存在过当前乐团
+            studentRegistration.setMusicGroupId(newMusicGroupId);
+            if (phoneAndMusicGroupId != null) {
+                studentRegistration.setId(phoneAndMusicGroupId.getId());
+                studentRegistrationDao.update(studentRegistration);
+            } else {
+                studentRegistrationDao.insertBasic(studentRegistration);
+            }
             MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), newMusicGroupId);
             if (studentFeeDaoByUser != null) {
-                //该学员已存在
+//                该学员已存在
                 continue;
             }
             //增加报名学生数
             musicGroupSubjectPlanService.addApplyStudentNum(newMusicGroupId, studentRegistration.getSubjectId(), 1);
             //新增Fee表
-            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(newMusicGroupId,
-                    studentRegistration.getUserId(), studentRegistration.getSubjectId(),BigDecimal.ZERO,
-                    null, studentRegistration.getTemporaryCourseFee(), studentRegistration.getPaymentStatus()==YES?PAID_COMPLETED:NON_PAYMENT);
-            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
+            MusicGroupStudentFee musicGroupStudentFee = null;
+            musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(),oldMusicGroupId);
+            if(musicGroupStudentFee != null){
+                musicGroupStudentFee.setMusicGroupId(newMusicGroupId);
+                musicGroupStudentFeeDao.update(musicGroupStudentFee);
+            }else {
+                musicGroupStudentFee = new MusicGroupStudentFee(newMusicGroupId,
+                        studentRegistration.getUserId(), studentRegistration.getSubjectId(),BigDecimal.ZERO,
+                        null, studentRegistration.getTemporaryCourseFee(), studentRegistration.getPaymentStatus()==YES?PAID_COMPLETED:NON_PAYMENT);
+                musicGroupStudentFeeDao.insert(musicGroupStudentFee);
+            }
         }
         if(studentCourseFeeDetails.size() > 0){
-
+            studentCourseFeeDetailDao.batchInsert(studentCourseFeeDetails);
         }
     }
 

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

@@ -462,7 +462,7 @@
                  LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
         WHERE cg.id_ = #{groupId}
           AND cg.group_type_ = 'MUSIC'
-          AND mg.status_ = 'PROGRESS'
+          AND mg.status_ IN ('PROGRESS','PAUSE')
           AND cg.del_flag_ = 0
     </select>
     <select id="queryUserMusicNames" resultType="java.util.Map">

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/StudentCourseFeeDetailMapper.xml

@@ -56,4 +56,12 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM student_course_fee_detail
 	</select>
+
+	<insert id="batchInsert">
+		INSERT INTO student_course_fee_detail (student_registration_id_,amount_,surplus_course_fee_,memo_,operator_,create_time_,update_time_)
+		VALUES
+		<foreach collection="replies" item="item" separator=",">
+			(#{item.studentRegistrationId},#{item.amount},#{item.surplusCourseFee},#{item.memo},#{item.operator},NOW(),NOW())
+		</foreach>
+    </insert>
 </mapper>