浏览代码

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父节点
当前提交
a17408b071

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

@@ -156,7 +156,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param studentRegistrationList
      * @return
      */
-    int batchInsert(@Param("studentRegistrationList") List<StudentRegistration> studentRegistrationList);
+    int batchInsert(@Param("list") List<StudentRegistration> studentRegistrationList);
 
 
     /**

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -121,6 +121,9 @@ public class StudentRegistration {
     
     private Integer chargeTypeId;
 
+    @ApiModelProperty(value = "是否是合并的学员 0-否 1-是",required = true)
+    private Integer isMerge = 0;
+
     public String getCertificateType() {
         return certificateType;
     }
@@ -423,4 +426,12 @@ public class StudentRegistration {
     public void setCurrentGradeDate(Date currentGradeDate) {
         this.currentGradeDate = currentGradeDate;
     }
+
+    public Integer getIsMerge() {
+        return isMerge;
+    }
+
+    public void setIsMerge(Integer isMerge) {
+        this.isMerge = isMerge;
+    }
 }

+ 59 - 1
mec-biz/src/main/java/com/ym/mec/biz/event/listener/GroupEventListener.java

@@ -38,7 +38,65 @@ public class GroupEventListener {
     @Async
     @EventListener
     public void musicGroupStudentChangeMonitor(MusicGroupStudentChangeEvent musicGroupStatusChangeEvent){
-
+        if(Objects.isNull(musicGroupStatusChangeEvent.getMusicGroupId())||Objects.isNull(musicGroupStatusChangeEvent.getStudentMusicGroupStatus())){
+            return;
+        }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupStatusChangeEvent.getMusicGroupId());
+        if(Objects.isNull(musicGroup)){
+            return;
+        }
+        List<Integer> studentIds = musicGroupStatusChangeEvent.getStudentIds();
+        if(CollectionUtils.isEmpty(studentIds)) {
+            List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryStudentByMusicGroupId(musicGroupStatusChangeEvent.getMusicGroupId());
+            studentIds = studentRegistrations.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
+        }
+        if(CollectionUtils.isEmpty(studentIds)){
+            return;
+        }
+        List<StudentRegistration> studentNormalRegistration = studentRegistrationDao.getStudentNormalRegistration(new HashSet<>(studentIds));
+        Map<Integer, Set<String>> userGroupIdMap = studentNormalRegistration.stream().collect(Collectors.groupingBy(StudentRegistration::getUserId, Collectors.mapping(StudentRegistration::getMusicGroupId, Collectors.toSet())));
+        int updateNum = 0;
+        for (Integer studentId : studentIds) {
+            if(userGroupIdMap.containsKey(studentId)&&userGroupIdMap.get(studentId).size()>1){
+                continue;
+            }
+            if(userGroupIdMap.containsKey(studentId)&&!userGroupIdMap.get(studentId).contains(musicGroupStatusChangeEvent.getMusicGroupId())){
+                continue;
+            }
+            updateNum+=1;
+        }
+        LocalDate nowDate = LocalDate.now();
+        String dayStr = nowDate.plusDays(-1).toString();
+        IndexBaseMonthData indexBaseMonthData = null;
+        switch (musicGroupStatusChangeEvent.getStudentMusicGroupStatus()){
+            case NORMAL:
+                indexBaseMonthData = indexBaseMonthDataDao.getOrganDataWithDayAndDataType(musicGroup.getOrganId(), dayStr, IndexDataType.NEWLY_STUDENT_NUM);
+                break;
+            case QUIT:
+                indexBaseMonthData = indexBaseMonthDataDao.getOrganDataWithDayAndDataType(musicGroup.getOrganId(), dayStr, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
+                break;
+            default:
+                return;
+        }
+        if(Objects.isNull(indexBaseMonthData)){
+            indexBaseMonthData = new IndexBaseMonthData();
+            Date date = DateUtil.stringToDate(dayStr, "yyyy-MM-dd");
+            BigDecimal zero = new BigDecimal(0);
+            indexBaseMonthData.setMonth(date);
+            indexBaseMonthData.setOrganId(musicGroup.getOrganId());
+            indexBaseMonthData.setDataType(StudentMusicGroupStatusEnum.NORMAL.equals(musicGroupStatusChangeEvent.getStudentMusicGroupStatus())?IndexDataType.NEWLY_STUDENT_NUM:IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
+            indexBaseMonthData.setTotalNum(zero);
+            indexBaseMonthData.setActivateNum(zero);
+            indexBaseMonthData.setPercent(zero);
+        }
+        indexBaseMonthData.setTotalNum(indexBaseMonthData.getTotalNum().add(new BigDecimal(updateNum)));
+        indexBaseMonthData.setActivateNum(indexBaseMonthData.getActivateNum().add(new BigDecimal(updateNum)));
+        indexBaseMonthData.setPercent(indexBaseMonthData.getPercent().add(new BigDecimal(updateNum)));
+        if(Objects.isNull(indexBaseMonthData.getId())){
+            indexBaseMonthDataDao.insert(indexBaseMonthData);
+        }else{
+            indexBaseMonthDataDao.update(indexBaseMonthData);
+        }
     }
 
 }

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

@@ -352,7 +352,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param registerIds 学员注册id
 	 * @return 添加学员记录
 	 */
-	List<StudentRegistration> addMusicGroupRegs(String musicGroupId,List<Long> registerIds);
+	List<StudentRegistration> addMusicGroupRegs(String musicGroupId,List<Long> registerIds) throws Exception;
 
 
 	/**

+ 18 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2833,7 +2833,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<StudentRegistration> addMusicGroupRegs(String musicGroupId, List<Long> registerIds) {
+    public List<StudentRegistration> addMusicGroupRegs(String musicGroupId, List<Long> registerIds) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null || sysUser.getId() == null) {
             throw new BizException("获取用户信息失败");
@@ -2882,10 +2882,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             for (StudentRegistration studentRegistration : regs) {
                 studentRegistration.setId(null);
                 studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
-                studentRegistration.setPaymentStatus(PaymentStatusEnum.NO);
+                studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN); //开启缴费
                 studentRegistration.setMusicGroupId(musicGroupId);
                 studentRegistration.setSubjectId(subjectId);
                 studentRegistration.setActualSubjectId(subjectId);
+                studentRegistration.setIsMerge(1);
                 studentRegistration.setTemporaryCourseFee(null);
             }
             studentRegistrationList.addAll(regs);
@@ -2895,6 +2896,21 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (studentRegistrationList.size() > 0) {
             studentRegistrationDao.batchInsert(studentRegistrationList);
         }
+        //0元的和学校缴费的默认缴费
+        MusicGroupPaymentCalender regCalender = musicGroupPaymentCalenderService.findByMusicGroupRegCalender(musicGroupId);
+        if (regCalender == null || regCalender.getPayUserType().equals(MusicGroupPaymentCalender.PayUserType.SCHOOL) ||
+                regCalender.getPaymentAmount().compareTo(BigDecimal.ZERO) == 0) {
+            List<MusicGroupPaymentCalenderCourseSettings> musicGroupRegCalenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(musicGroupId);
+            List<Integer> courseSettings = musicGroupRegCalenderCourseSettings.stream().filter(e -> !e.getIsStudentOptional()).map(MusicGroupPaymentCalenderCourseSettings::getId).collect(Collectors.toList());
+            RegisterPayDto registerPayDto = new RegisterPayDto();
+            registerPayDto.setAmount(BigDecimal.ZERO);
+            registerPayDto.setNewCourse(courseSettings);
+            for (StudentRegistration studentRegistration : studentRegistrationList) {
+                registerPayDto.setRegisterId(studentRegistration.getId().intValue());
+                Map payMap = this.pay(registerPayDto);
+            }
+
+        }
 
         //修改乐团信息
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1138,6 +1138,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
             addCalenderDetail(studentPaymentOrder, studentRegistration);
 
+            if (studentRegistration.getIsMerge().equals(1) && studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) <= 0) {
+                return studentPaymentOrder;
+            }
+
             //三方乐团不发送缴费通知
             if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
                 //发送缴费成功通知(短信 + push)

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -469,19 +469,19 @@
         AND music_group_status_ != 'QUIT'
     </select>
 
-    <insert id="batchInsert">
+    <insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO student_registration
         (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,
         is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,
-        parents_name_,parents_company_,payment_status_,actual_subject_id_,music_group_status_)
+        parents_name_,parents_company_,payment_status_,actual_subject_id_,music_group_status_,is_merge_)
         VALUES
-        <foreach collection="studentRegistrationList" item="item" index="index" separator=",">
+        <foreach collection="list" item="item" index="index" separator=",">
             (#{item.parentsPhone},#{item.id},#{item.userId},#{item.name},#{item.musicGroupId},#{item.currentGrade},
             #{item.currentClass},#{item.subjectId},#{item.isAllowAdjust,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{item.kitPurchaseMethod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{item.remark},now(),now(),#{item.parentsName},#{item.parentsCompany},
             #{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.subjectId},
-            #{item.musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+            #{item.musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.isMerge})
         </foreach>
     </insert>