zouxuan 4 rokov pred
rodič
commit
332b52d84b

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSchoolTermCourseDetailDao.java

@@ -22,6 +22,13 @@ public interface MusicGroupSchoolTermCourseDetailDao extends BaseDAO<Integer, Mu
                                                                      @Param("courseFlag") Integer courseFlag);
 
     /**
+     * 获取所选时间乐团的预排课明细
+     * @param musicGroupId
+     * @return
+     */
+    List<MusicGroupSchoolTermCourseDetail> findByMusicGroupId(@Param("musicGroupId") String musicGroupId);
+
+    /**
      * 获取所有未确认的预排课数据
      * @return
      */

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import java.text.ParseException;
+import java.util.List;
 
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.Student;
@@ -70,4 +71,19 @@ public interface StudentService extends BaseService<Integer, Student> {
      * 更新学员会员信息
      */
     void updateMemberRank(Integer userId, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);
+
+    /**
+     * 更新学员会员信息
+     */
+    void batchUpdateMemberRank(List<Integer> studentIds, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);
+
+    /**
+     * 更新服务指标
+     * @param studentId
+     * @param studentIds
+     * @param serviceTag
+     */
+    void updateStudentServiceTag(Integer studentId,List<Integer> studentIds,Integer serviceTag);
+
+    List<String> getStudentNames(List<Integer> studentIdList);
 }

+ 15 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -136,7 +136,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
-    private StudentDao studentDao;
+//    private StudentDao studentDao;
+//    @Autowired
+    private StudentService studentService;
     @Autowired
     private MusicGroupPaymentCalenderCourseSettingsService musicGroupPaymentCalenderCourseSettingsService;
     @Autowired
@@ -1351,7 +1353,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             if(totalCourseScheduleStudentPayments.size() > 0){
                 courseScheduleStudentPaymentService.batchInsert(totalCourseScheduleStudentPayments);
-                studentDao.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
+                studentService.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
             }
 
             if(!CollectionUtils.isEmpty(courseScheduleList)){
@@ -1857,7 +1859,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         if (classGroup4MixDtos.get(0).getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
             teachMode = TeachModeEnum.ONLINE;
-            List<String> studentNames = studentDao.getStudentNames(studentIdList);
+            List<String> studentNames = studentService.getStudentNames(studentIdList);
             classGroup4MixDtos.get(0).setClassGroupName(subjectNames + "•" + StringUtils.join(studentNames, ","));
         }
 
@@ -2059,7 +2061,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //学生结算表
         if (courseScheduleList.size() > 0) {
             courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIdList);
-            studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
+            studentService.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
         }
         //创建IM群组
         addImGroup(classGroup, userIds, teacherIds);
@@ -2605,7 +2607,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         if (!CollectionUtils.isEmpty(studentList)) {
-            studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
+            studentService.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
 
             //学生结算表
             courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIds);
@@ -2649,7 +2651,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //更新学员服务指标
         List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(courseScheduleIds);
         List<Integer> studentIds = studentPayments.stream().map(e -> e.getUserId()).collect(Collectors.toList());
-        studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
+        studentService.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
         //初始化老师考勤表
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
         List<TeacherAttendance> teacherIdByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
@@ -2676,6 +2678,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             teacherAttendanceDao.batchInsert(teacherAttendances);
         }
         imUserFriendService.refreshGroupImUserFriend(termCourseDetail.getMusicGroupId(),MUSIC);
+        //是否是该乐团第一次会员排课
+        List<MusicGroupSchoolTermCourseDetail> termCourseDetails = musicGroupSchoolTermCourseDetailDao.findByMusicGroupId(termCourseDetail.getMusicGroupId());
+        if(termCourseDetails.size() == 1){
+            MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(termCourseDetail.getMusicGroupId());
+            studentService.batchUpdateMemberRank(studentIds,calender.getMemberRankSettingId(),PeriodEnum.MONTH,calender.getMemberValidDate());
+        }
     }
 
     @Override
@@ -3221,7 +3229,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //学生结算表
         if (!CollectionUtils.isEmpty(studentIdList)) {
             courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIdList);
-            studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
+            studentService.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
         }
         return classGroup;
     }

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

@@ -256,10 +256,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		musicGroupPaymentCalenderDetail.setCreateTime(date);
 		musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
 		if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(totalPrice) == 0) {
-			// 添加会员有效时长
-			if(calender.getMemberRankSettingId() != null){
-				studentService.updateMemberRank(userId,calender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
-			}
 			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 		} else {
 			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.NON_PAYMENT);

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -147,6 +147,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		List<MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = musicGroupPaymentCalenderDto.getMusicGroupPaymentDateRangeList();
 
+		if(musicGroupPaymentCalenderDto.getMemberRankSettingId() != null){
+			if(paymentType != ADD_STUDENT && paymentType != MUSIC_APPLY){
+				throw new BizException("操作失败:{} 不支持会员收费",paymentType.getDesc());
+			}
+		}
+
 		if ((paymentType == PaymentType.ADD_COURSE)) {
 			if(musicGroupPaymentDateRangeList.size() > 1){
 				throw new BizException("[临时加课]不支持多周期缴费");
@@ -554,6 +560,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		List<MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = musicGroupPaymentCalenderDto.getMusicGroupPaymentDateRangeList();
 
+		if(musicGroupPaymentCalenderDto.getMemberRankSettingId() != null){
+			if(paymentType != ADD_STUDENT && paymentType != MUSIC_APPLY){
+				throw new BizException("操作失败:{} 不支持会员收费",paymentType.getDesc());
+			}
+		}
+
 		if ((paymentType == PaymentType.ADD_COURSE) && musicGroupPaymentDateRangeList.size() > 1) {
 			throw new BizException("[临时加课]不支持多周期缴费");
 		}

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -324,4 +325,60 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         student.setUpdateTime(nowDate);
         this.update(student);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchUpdateMemberRank(List<Integer> studentIds, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod) {
+        // 添加会员有效时长
+        List<Student> studentList = studentDao.findByStudentIds(studentIds);
+        Date nowDate = new Date();
+        for (Student student : studentList) {
+            if (student.getMemberRankSettingId() == null || nowDate.after(student.getMembershipEndTime())) {
+                switch (periodEnum) {
+                    case DAY:
+                        student.setMembershipEndTime(DateUtil.addDays(nowDate, quantityPerPeriod));
+                        break;
+                    case MONTH:
+                    case YEAR_HALF:
+                        student.setMembershipEndTime(DateUtil.addMonths(nowDate, quantityPerPeriod));
+                        break;
+                    case YEAR:
+                        student.setMembershipEndTime(DateUtil.addYears(nowDate, quantityPerPeriod));
+                        break;
+                    default:
+                        break;
+                }
+                student.setMembershipStartTime(nowDate);
+            } else {
+                switch (periodEnum) {
+                    case DAY:
+                        student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+                        break;
+                    case MONTH:
+                    case YEAR_HALF:
+                        student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+                        break;
+                    case YEAR:
+                        student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+            student.setMemberRankSettingId(rankSettingId);
+            student.setUpdateTime(nowDate);
+        }
+        studentDao.batchUpdate(studentList);
+    }
+
+    @Override
+    public void updateStudentServiceTag(Integer studentId,List<Integer> studentIds,Integer serviceTag) {
+        studentDao.updateStudentServiceTag(studentId, studentIds, serviceTag);
+    }
+
+    @Override
+    public List<String> getStudentNames(List<Integer> studentIdList) {
+        return studentDao.getStudentNames(studentIdList);
+    }
 }

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

@@ -74,6 +74,10 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM music_group_school_term_course_detail
 	</select>
+	<select id="findByMusicGroupId" resultMap="MusicGroupSchoolTermCourseDetail">
+		SELECT * FROM music_group_school_term_course_detail
+		WHERE music_group_id_ = #{musicGroupId}
+	</select>
 	<select id="findByCourseDateAndMusicGroupId" resultMap="MusicGroupSchoolTermCourseDetail">
 		SELECT * FROM music_group_school_term_course_detail
 		WHERE music_group_id_ = #{musicGroupId}