Browse Source

Merge branch 'system_fee' of http://git.dayaedu.com/yonge/mec

zouxuan 4 years ago
parent
commit
cc574abeb3
16 changed files with 161 additions and 63 deletions
  1. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  2. 11 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  3. 9 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankPrivilegesServiceImpl.java
  4. 15 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  5. 31 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  6. 7 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  7. 24 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  8. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  9. 2 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  10. 14 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  11. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderCourseSettingsMapper.xml
  12. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupSchoolTermCourseDetailMapper.xml
  13. 2 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupSchoolTermStudentCourseDetailMapper.xml
  14. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  15. 18 6
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  16. 8 0
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupPaymentCalenderController.java

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

@@ -293,6 +293,14 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     List<Integer> queryNormalUser(String musicGroupId);
 
     /**
+     * 获取乐团在读人数
+     *
+     * @param musicGroupId
+     * @return
+     */
+    List<Integer> queryNormalUserList(String musicGroupId);
+
+    /**
      * 获取学员基本信息
      *
      * @param mobile

+ 11 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -136,8 +136,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
-//    private StudentDao studentDao;
-//    @Autowired
     private StudentService studentService;
     @Autowired
     private MusicGroupPaymentCalenderCourseSettingsService musicGroupPaymentCalenderCourseSettingsService;
@@ -157,6 +155,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private MusicGroupSchoolTermStudentCourseDetailDao musicGroupSchoolTermStudentCourseDetailDao;
     @Autowired
     private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -1187,8 +1187,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         Date date = new Date();
-        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
-        List<CourseScheduleStudentPayment> totalCourseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
 
         // 计算单价
         Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
@@ -1230,6 +1228,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         BigDecimal originUnitPrice = new BigDecimal(0);
         CourseScheduleType courseType = null;
         for (ClassGroup classGroup : classGroupList) {
+            List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+            List<CourseScheduleStudentPayment> totalCourseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+
             if(HIGH_ONLINE.equals(classGroup.getType())){
                 Integer studentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
                 if(Objects.nonNull(studentNum)&&studentNum>=6){
@@ -1315,6 +1316,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                             List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
                             for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
                                 courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
+                                if(totalCurrentPriceMap.get(courseType) == null){
+                                    throw new BizException("该缴费项目有新增课时:请重新编辑");
+                                }
                                 if (!list.contains(courseType)) {
                                     list.add(courseType);
 
@@ -1326,7 +1330,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                                             totalOriginPriceMap.get(courseType).subtract(totalOrignPriceMap.get(courseType))));
                                 }
                             }
-                            totalCourseScheduleStudentPayments.addAll(courseScheduleStudentPayments);
                         }
                     }else {
                         for (CourseSchedule courseSchedule : courseSchedules) {
@@ -1351,7 +1354,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }
                 }
             }
-            if(totalCourseScheduleStudentPayments.size() > 0){
+            if(totalCourseScheduleStudentPayments.size() > 0 || courseScheduleStudentPayments.size() > 0){
+                totalCourseScheduleStudentPayments.addAll(courseScheduleStudentPayments);
                 courseScheduleStudentPaymentService.batchInsert(totalCourseScheduleStudentPayments);
                 studentService.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
             }
@@ -2678,12 +2682,6 @@ 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
@@ -2880,7 +2878,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }
                     //排课开始时间不可小于预排课时间
                     if(courseTimeDto.getStartDate().compareTo(schoolTermCourseDetail.getStartSchoolTerm()) < 0){
-                        throw new BizException("操作失败:排课开始时间不可小于预排课时间");
+                        throw new BizException("操作失败:排课开始时间不可小于开课日期");
                     }
 
                     //跳过节假日

+ 9 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankPrivilegesServiceImpl.java

@@ -40,14 +40,16 @@ public class MemberRankPrivilegesServiceImpl extends BaseServiceImpl<Integer, Me
 		Map<Integer, MemberPrivilegesItem> map = new HashMap<Integer, MemberPrivilegesItem>();
 
 		for (MemberPrivilegesItem item : memberPrivilegesItemList) {
-
-			MemberPrivilegesItem memberPrivilegesItem = queryParentBysubId(item);
-
-			if (map.containsKey(memberPrivilegesItem.getId())) {
-
-				memberPrivilegesItem = addSubItemToParent(map.get(memberPrivilegesItem.getId()), memberPrivilegesItem);
+			
+			if(!map.containsKey(item.getId())){
+				MemberPrivilegesItem memberPrivilegesItem = queryParentBysubId(item);
+				
+				if (map.containsKey(memberPrivilegesItem.getId())) {
+
+					memberPrivilegesItem = addSubItemToParent(map.get(memberPrivilegesItem.getId()), item);
+				}
+				map.put(memberPrivilegesItem.getId(), memberPrivilegesItem);
 			}
-			map.put(memberPrivilegesItem.getId(), memberPrivilegesItem);
 		}
 
 		return map.values().stream().collect(Collectors.toList());

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

@@ -23,6 +23,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
+import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,6 +71,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 	private GroupEventSource groupEventSource;
 	@Autowired
 	private StudentService studentService;
+	@Autowired
+	private CloudTeacherOrderDao cloudTeacherOrderDao;
 
 	@Override
 	public BaseDAO<Long, MusicGroupPaymentCalenderDetail> getDAO() {
@@ -89,6 +92,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		}
 		Date date = new Date();
 		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.get(calenderDetails.get(0).getMusicGroupPaymentCalenderId());
+		MusicGroup musicGroup = musicGroupDao.get(calender.getMusicGroupId());
 		//缴费项目已结束,并且没有单独开启缴费的学员,不能修改缴费金额
 //		if(calender.getStatus() == OVER){
 //			List<MusicGroupPaymentCalenderDetail> paymentCalenderDetails = calenderDetails.stream().filter(e -> e.getOpenFlag() == YesOrNoEnum.NO).collect(Collectors.toList());
@@ -111,7 +115,17 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			}else {
 				// 添加会员有效时长
 				if(calender.getMemberRankSettingId() != null){
-					studentService.updateMemberRank(e.getUserId(),calender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
+					CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+					cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
+					cloudTeacherOrder.setType(2);
+					cloudTeacherOrder.setTime(calender.getMemberValidDate());
+					cloudTeacherOrder.setAmount(expectAmount);
+					cloudTeacherOrder.setStatus(2);
+					cloudTeacherOrder.setStartTime(date);
+					cloudTeacherOrder.setEndTime(DateUtil.addMonths(date,calender.getMemberValidDate()));
+					cloudTeacherOrder.setRemark("进行中乐团加学生,缴费金额改为0元");
+					cloudTeacherOrderDao.insert(cloudTeacherOrder);
+					studentService.updateMemberRank(e.getUserId(),calender.getMemberRankSettingId(),PeriodEnum.MONTH,calender.getMemberValidDate());
 				}
 				calender.setActualNum((calender.getActualNum()==null?0:calender.getActualNum()) + 1);
 				e.setPaymentStatus(PAID_COMPLETED);
@@ -139,12 +153,10 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		musicGroupPaymentCalenderDetailDao.batchUpdate(calenderDetails);
 		//推送消息
 		if (calender.getPayUserType() == STUDENT && studentIds.size() > 0) {
-			String musicGroupId = calenderDetails.get(0).getMusicGroupId();
 			Map<Integer, String> push = new HashMap<>();
 			for (Integer userId : studentIds) {
 				push.put(userId, userId + "");
 			}
-			MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 			String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+calender.getId()+"&id=" + calender.getMusicGroupId();
 			// 发送续费通知
@@ -507,10 +519,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 				musicGroupPaymentCalenderDetail.setCreateTime(date);
 				musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
 				if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(new BigDecimal(0)) == 0) {
-					// 添加会员有效时长
-					if(musicGroupPaymentCalender.getMemberRankSettingId() != null){
-						studentService.updateMemberRank(studentId,musicGroupPaymentCalender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
-					}
 					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
 					paymentNum++;
 				} else {

+ 31 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -76,6 +76,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 	@Autowired
 	private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
+
+	@Autowired
+	private MusicGroupSchoolTermStudentCourseDetailDao musicGroupSchoolTermStudentCourseDetailDao;
 	
 	@Autowired
 	private IdGeneratorService idGeneratorService;
@@ -129,6 +132,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	private MemberRankSettingDao memberRankSettingDao;
 	@Autowired
 	private StudentService studentService;
+	@Autowired
+	private CloudTeacherOrderDao cloudTeacherOrderDao;
 
 	@Override
 	public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -958,11 +963,26 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					totalPrice = totalPrice.add(musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
 				}
 			}
+			//当前乐团是否有预排课计划
+			MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroup.getId(), null, 0);
 
 			List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<MusicGroupPaymentStudentCourseDetail>();
 			MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
 
 			for (String studentId : studentIdStr.split(",")) {
+				if(termCourseDetail != null){
+					//是否已经预排部分课程
+					List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByMusicGroupId(musicGroup.getId());
+					if(courseSchedules.size() > 0){
+						throw new BizException("操作失败:该乐团存在预排课课程,请优先完成预排课");
+					}else {
+						MusicGroupSchoolTermStudentCourseDetail studentCourseDetail = new MusicGroupSchoolTermStudentCourseDetail();
+						studentCourseDetail.setMusicGroupSchoolTermCourseDetailId(termCourseDetail.getId());
+						studentCourseDetail.setUserId(Integer.parseInt(studentId));
+						studentCourseDetail.setMemberCourseMinutes(termCourseDetail.getTotalCourseTime());
+						musicGroupSchoolTermStudentCourseDetailDao.insert(studentCourseDetail);
+					}
+				}
 				// 学生加到calenderDetail
 				MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 				musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
@@ -979,7 +999,17 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				if(totalPrice.doubleValue() == 0d){
 					// 添加会员有效时长
 					if(musicGroupPaymentCalender.getMemberRankSettingId() != null){
-						studentService.updateMemberRank(Integer.parseInt(studentId),musicGroupPaymentCalender.getMemberRankSettingId(),PeriodEnum.MONTH,6);
+						CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
+						cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
+						cloudTeacherOrder.setType(2);
+						cloudTeacherOrder.setTime(musicGroupPaymentCalender.getMemberValidDate());
+						cloudTeacherOrder.setAmount(totalPrice);
+						cloudTeacherOrder.setStatus(2);
+						cloudTeacherOrder.setStartTime(date);
+						cloudTeacherOrder.setEndTime(DateUtil.addMonths(date,musicGroupPaymentCalender.getMemberValidDate()));
+						cloudTeacherOrder.setRemark("进行中乐团0元加学生");
+						cloudTeacherOrderDao.insert(cloudTeacherOrder);
+						studentService.updateMemberRank(Integer.parseInt(studentId),musicGroupPaymentCalender.getMemberRankSettingId(),PeriodEnum.MONTH,musicGroupPaymentCalender.getMemberValidDate());
 					}
 					MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(Integer.parseInt(studentId), musicGroupPaymentCalender.getMusicGroupId());
 					if (musicGroupStudentFee != null) {

+ 7 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -59,11 +59,11 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 			throw new BizException("操作失败:该功能只适用于系统收费团");
 		}
 		//校验当前乐团是否所有学员都在班
-		if(studentRegistrationDao.checkHasNotClass(musicGroupId)){
+		if(!studentRegistrationDao.checkHasNotClass(musicGroupId)){
 			throw new BizException("操作失败:请确保所有在读学员都在班级");
 		}
 		MusicGroupSchoolTermCourseDetail courseDetail = musicGroupSchoolTermCourseDetailDao.
-				findByCourseDateAndMusicGroupId(musicGroupId,startCourseDate,0);
+				findByCourseDateAndMusicGroupId(musicGroupId,null,0);
 		Date date = DateUtil.stringToDate(DateUtil.format(new Date(),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 		if(startCourseDate != null){
 			MusicGroupSchoolTermCourseDetail courseDetail1 = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId,startCourseDate,1);
@@ -95,7 +95,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						studentCourseDetail.setMusicGroupSchoolTermCourseDetailId(courseDetail.getId());
 						studentCourseDetail.setMemberCourseMinutes(courseDetail.getTotalCourseTime());
 						//获取乐团所有在读学员
-						List<Integer> studentIds = studentRegistrationDao.queryNormalUser(musicGroupId);
+						List<Integer> studentIds = studentRegistrationDao.queryNormalUserList(musicGroupId);
 						if(studentIds == null || studentIds.size() == 0){
 							throw new BizException("操作失败:该乐团没有在读学员");
 						}
@@ -138,11 +138,11 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		//一个学期默认为6个月,9月1日—2月28、29日,3月1日—8月31日
 		Integer month = Integer.parseInt(DateUtil.getMonth(startCourseDate));
 		String year = DateUtil.getYear(startCourseDate);
-		if(month >= 9 && month <= 2){
+		if(month >= 9 || month <= 2){
 			if(month >= 9){
 				year = DateUtil.getYear(DateUtil.addYears(startCourseDate, 1));
 			}
-			courseDetail.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01")));
+			courseDetail.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01 00:00:00")));
 		}else {
 			courseDetail.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
 		}
@@ -151,7 +151,8 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 //		int week = LocalDateTime.ofInstant(startCourseDate.toInstant(),DateUtil.zoneId).getDayOfWeek().getValue();
 		int week = DateUtil.date2Week1(startCourseDate);
 		int weekSize = DateUtil.getWeekDays(startCourseDate, courseDetail.getEndSchoolTerm(), week).size();
-		courseDetail.setTotalCourseTime(weekSize * 4 * 45);
+		int i = weekSize * 4 * 45;
+		courseDetail.setTotalCourseTime(i > 3960?3960:i);
 		courseDetail.setStartCourseDate(startCourseDate);
 		return courseDetail;
 	}

+ 24 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -696,8 +697,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
-            OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+            if(musicGroupRegCalender == null){
+            	throw new BizException("缴费信息不存在");
+            }
+            BigDecimal cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
+            //OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
+            //BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            
             orderAmount = orderAmount.add(cloudTeacherPrice);
             studentRegistration.setHasCloudTeacher(1);
         }
@@ -887,8 +894,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
-            OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+        	
+        	MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+            if(musicGroupRegCalender == null){
+            	throw new BizException("缴费信息不存在");
+            }
+            BigDecimal cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
+            //OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
+            //BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            
             orderAmount = orderAmount.add(cloudTeacherPrice);
             studentRegistration.setHasCloudTeacher(1);
         }
@@ -1982,9 +1996,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //如果是会员团,并且有预排课计划
         MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId, null, 0);
         if(termCourseDetail != null){
-            MusicGroupSchoolTermStudentCourseDetailDao studentCourseDetailDao = musicGroupSchoolTermStudentCourseDetailDao.findByDetailIdAndStudentId(termCourseDetail.getId(),userId);
-            if(studentCourseDetailDao != null){
-                throw new BizException("退团失败:该学员存在预排课安排,请先取消预排课");
+            //是否已经预排部分课程
+            List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByMusicGroupId(musicGroup.getId());
+            if(courseSchedules.size() > 0){
+                throw new BizException("退团失败:该乐团存在预排课课程,请优先完成预排课");
+            }else {
+                musicGroupSchoolTermStudentCourseDetailDao.deleteByDetailId(termCourseDetail.getId(),userId);
             }
         }
 

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

@@ -133,9 +133,9 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
         if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
-            OrganizationCloudTeacherFee cloudTeacherFee = organizationCloudTeacherFeeDao.getByOrganId(musicGroup.getOrganId());
-            musicGroupSubjectGoodsAndInfo.setCloudTeacherFee(cloudTeacherFee.getPrice());
-            musicGroupSubjectGoodsAndInfo.setCloudTeacherPlusFee(cloudTeacherFee.getPlusPrice());
+        	musicGroupSubjectGoodsAndInfo.setCloudTeacherFee(musicGroupRegCalender.getMemberPaymentAmount());
+            /*OrganizationCloudTeacherFee cloudTeacherFee = organizationCloudTeacherFeeDao.getByOrganId(musicGroup.getOrganId());
+            musicGroupSubjectGoodsAndInfo.setCloudTeacherPlusFee(cloudTeacherFee.getPlusPrice());*/
             if(musicGroupRegCalender != null) {
             	musicGroupSubjectGoodsAndInfo.setMemberPrivilegesItemList(memberRankPrivilegesService.queryByMemberRankId(musicGroupRegCalender.getMemberRankSettingId()));
             }

+ 2 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -9,10 +9,7 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
-import com.ym.mec.biz.service.CourseHomeworkService;
-import com.ym.mec.biz.service.StudentCourseHomeworkService;
-import com.ym.mec.biz.service.StudentServeService;
-import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -505,6 +502,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         int count = musicGroupDao.queryCount(params);
         pageInfo.setTotal(count);
         params.put("offset", pageInfo.getOffset());
+//        StudentService
         List<MusicGroup> musicGroups = musicGroupDao.queryPage(params);
 
         List<EduHomeworkStatDto> dataList = new ArrayList<>();

+ 14 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -8,6 +8,7 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
+
 import javax.annotation.Resource;
 
 import com.ym.mec.biz.dal.dao.*;
@@ -17,6 +18,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.service.*;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -26,6 +28,7 @@ import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -480,8 +483,15 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
         //云教练/云教练+
         if (buyCloudTeacher || buyCloudTeacherPlus) {
-            OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-            BigDecimal cloudTeacherPrice = buyCloudTeacher ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            // OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
+            // BigDecimal cloudTeacherPrice = buyCloudTeacher ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
+            
+            MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(studentRegistration.getMusicGroupId());
+            if(musicGroupRegCalender == null){
+            	throw new BizException("缴费信息不存在");
+            }
+            BigDecimal cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
+            
             OrderDetailTypeEnum orderDetailTypeEnum = buyCloudTeacher ? OrderDetailTypeEnum.CLOUD_TEACHER : OrderDetailTypeEnum.CLOUD_TEACHER_PLUS;
             StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();
             cloudTeacherOrderDetail.setType(orderDetailTypeEnum);
@@ -504,9 +514,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
         int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
-        if ((musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) && !buyCloudTeacher) ||
-                (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) && !buyCloudTeacherPlus)
-        ) {
+        if ((musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) && !buyCloudTeacher))
+        {
             paidZeroFlag = true;
             if (studentRegistration.getNoneNeedCloudTeacher().equals(1)) {
                 musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);

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

@@ -133,8 +133,8 @@
 
 	<select id="getMusicGroupRegCalenderCourseSettings" resultMap="MusicGroupPaymentCalenderCourseSettings">
 		SELECT mgpccs.*
-		FROM music_group_payment_calender mgpc
-		LEFT JOIN music_group_payment_calender_course_settings mgpccs
+		FROM music_group_payment_calender_course_settings mgpccs 
+		LEFT JOIN music_group_payment_calender mgpc
 		ON mgpccs.music_group_payment_calender_id_ = mgpc.id_
 		WHERE mgpc.music_group_id_ = #{musicGroupId}
 		AND mgpc.payment_type_ = 'MUSIC_APPLY'

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

@@ -82,7 +82,7 @@
 		SELECT * FROM music_group_school_term_course_detail
 		WHERE music_group_id_ = #{musicGroupId}
 		<if test="startCourseDate != null">
-		  AND (#{startCourseDate} >= start_school_term_ OR #{startCourseDate} &lt;= end_school_term_)
+			AND (#{startCourseDate} BETWEEN start_school_term_ AND end_school_term_)
 		</if>
 		<if test="courseFlag != null">
 			AND course_flag_ = #{courseFlag}

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

@@ -142,7 +142,8 @@
 		GROUP BY music_group_school_term_course_detail_id_
 	</select>
 	<select id="checkNoCourse" resultType="java.lang.Boolean">
-		SELECT COUNT(id_) > 0 FROM music_group_school_term_student_course_detail WHERE music_group_school_term_course_detail_id_ = #{musicGroupSchoolTermCourseDetailId} AND pre_member_course_minutes_ = 0
+		SELECT COUNT(id_) > 0 FROM music_group_school_term_student_course_detail
+		WHERE music_group_school_term_course_detail_id_ = #{musicGroupSchoolTermCourseDetailId} AND pre_member_course_minutes_ = 0
 	</select>
 	<select id="findByDetailId" resultMap="MusicGroupSchoolTermStudentCourseDetail">
 		SELECT * FROM music_group_school_term_student_course_detail WHERE music_group_school_term_course_detail_id_ = #{courseDetailId}

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

@@ -857,6 +857,12 @@
         WHERE sr.music_group_status_ != 'QUIT'
         AND sr.music_group_id_ = #{musicGroupIds}
     </select>
+    <select id="queryNormalUserList" resultType="integer">
+        SELECT sr.user_id_
+        FROM student_registration sr
+        WHERE sr.music_group_status_ = 'NORMAL'
+        AND sr.music_group_id_ = #{musicGroupIds}
+    </select>
     <select id="queryUserByPhone" resultMap="StudentRegistration">
         SELECT su.id_,
         CASE WHEN sut.name_ IS NULL THEN su.real_name_ ELSE sut.name_ END parents_name_,

+ 18 - 6
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,15 +1,14 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 import javax.annotation.Resource;
 
@@ -24,21 +23,34 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
 import com.ym.mec.biz.dal.dao.StudentPreRegistrationDao;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPreRegistration;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.util.date.DateUtil;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")

+ 8 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupPaymentCalenderController.java

@@ -12,15 +12,18 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.service.MemberRankPrivilegesService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -28,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+
 import java.util.List;
 
 @RequestMapping("musicGroupPaymentCalender")
@@ -50,6 +54,9 @@ public class MusicGroupPaymentCalenderController extends BaseController {
     @Autowired
     private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
 
+	@Autowired
+	private MemberRankPrivilegesService memberRankPrivilegesService;
+
 
     @ApiOperation(value = "查询学员缴费详情")
     @GetMapping("/getCalenderInfo")
@@ -87,6 +94,7 @@ public class MusicGroupPaymentCalenderController extends BaseController {
             model.put("calenderCourseSettings", calenderCourseSettings);
             model.put("balance",studentRegistration.getBalance());
             model.put("calender",calender);
+            model.put("memberPrivilegesItemList", memberRankPrivilegesService.queryByMemberRankId(calender.getMemberRankSettingId()));
             return succeed(model);
         }else if(calender.getStatus() == PaymentCalenderStatusEnum.OVER){
             throw new BizException("缴费已截止,如有问题请联系指导老师");