Browse Source

Merge remote-tracking branch 'origin/master'

river 4 years ago
parent
commit
157763bff1
23 changed files with 277 additions and 64 deletions
  1. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  3. 12 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupTeachersDto.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  6. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 11 11
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSchoolTermCourseDetailService.java
  10. 8 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  11. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  12. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  14. 75 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  15. 0 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  17. 21 6
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 7 4
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  19. 9 6
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  20. 1 1
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  21. 48 1
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  22. 0 6
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSchoolTermCourseDetailController.java
  23. 13 1
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

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

@@ -1885,6 +1885,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
      */
     List<Map<Integer, Long>> countPreSubMinutesByClassGroupId(@Param("classGroupSet") List<Integer> classGroupSet, @Param("courseDetailId") Integer courseDetailId);
     List<Map<Integer, Long>> countPreSubMinutesByClassGroupId(@Param("classGroupSet") List<Integer> classGroupSet, @Param("courseDetailId") Integer courseDetailId);
 
 
+
+    /**
+     * 获取班级最大已排课时长
+     * @param classGroupSet
+     * @return
+     */
+    List<Map<Integer, Integer>> countPreMinutesByClassGroupId(@Param("classGroupSet") List<Integer> classGroupSet, @Param("courseDetailId") Integer courseDetailId);
+
     /**
     /**
      * 获取进行中或已结束的预排课课程
      * 获取进行中或已结束的预排课课程
      * @param musicGroupId
      * @param musicGroupId

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

@@ -230,4 +230,11 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return
      * @return
      */
      */
     int getMemberNum(@Param("studentIdsStr") String studentIdsStr);
     int getMemberNum(@Param("studentIdsStr") String studentIdsStr);
+
+    /**
+     * 会员结束前15天提醒学员续费
+     * @param pushMemberRenew
+     * @return
+     */
+    List<Integer> queryPushMemberRenew(String pushMemberRenew);
 }
 }

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

@@ -603,32 +603,32 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     int getFirstPayNum(@Param("musicGroupId") String musicGroupId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
     int getFirstPayNum(@Param("musicGroupId") String musicGroupId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 
 
     /**
     /**
-     * 获取报名缴费的相关人数
-     *
-     * @param musicGroupIds
+     * 获取不在指定班级类型的学员列表
+     * @param musicGroupId
      * @return
      * @return
      */
      */
-    List<MusicGroupRegAndMoneyDto> getRegisters(@Param("musicGroupIds") List<String> musicGroupIds);
+    String getNotClassName(@Param("musicGroupId") String musicGroupId);
 
 
     /**
     /**
-     * 获取已缴费审核中的人数
+     * 是否有其他会员收费团
      * @param musicGroupId
      * @param musicGroupId
+     * @param userId
      * @return
      * @return
      */
      */
-    int countPayAndCheckNum(@Param("musicGroupId") String musicGroupId);
+    boolean checkHasMemberGroup(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
 
 
     /**
     /**
-     * 获取不在班的学员列表
-     * @param musicGroupId
+     * 获取报名缴费的相关人数
+     *
+     * @param musicGroupIds
      * @return
      * @return
      */
      */
-    String getNotClassName(@Param("musicGroupId") String musicGroupId);
+    List<MusicGroupRegAndMoneyDto> getRegisters(@Param("musicGroupIds") List<String> musicGroupIds);
 
 
     /**
     /**
-     * 是否有其他会员收费团
+     * 获取已缴费审核中的人数
      * @param musicGroupId
      * @param musicGroupId
-     * @param userId
      * @return
      * @return
      */
      */
-    boolean checkHasMemberGroup(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
+    int countPayAndCheckNum(@Param("musicGroupId") String musicGroupId);
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupTeachersDto.java

@@ -27,6 +27,17 @@ public class ClassGroupTeachersDto extends ClassGroup {
 	/** 剩余可排课时长 */
 	/** 剩余可排课时长 */
 	private Integer preSubMinutes;
 	private Integer preSubMinutes;
 
 
+	/** 已排课时长 */
+	private Integer preMinutes;
+
+	public Integer getPreMinutes() {
+		return preMinutes;
+	}
+
+	public void setPreMinutes(Integer preMinutes) {
+		this.preMinutes = preMinutes;
+	}
+
 	public Integer getPreSubMinutes() {
 	public Integer getPreSubMinutes() {
 		return preSubMinutes;
 		return preSubMinutes;
 	}
 	}

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

@@ -183,8 +183,19 @@ public class CourseSchedule {
 	private Integer preCourseFlag = 0;
 	private Integer preCourseFlag = 0;
 
 
 	//课程调整不的超过该时间限制
 	//课程调整不的超过该时间限制
+	private Date validStartTime;
+
+	//课程调整不的超过该时间限制
 	private Date validEndTime;
 	private Date validEndTime;
 
 
+	public Date getValidStartTime() {
+		return validStartTime;
+	}
+
+	public void setValidStartTime(Date validStartTime) {
+		this.validStartTime = validStartTime;
+	}
+
 	public Date getValidEndTime() {
 	public Date getValidEndTime() {
 		return validEndTime;
 		return validEndTime;
 	}
 	}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -5,6 +5,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
     REMIND_EDUCATION_COURSE_TIME("REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
     REMIND_EDUCATION_COURSE_TIME("REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
+    STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
     SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),
     SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),

+ 11 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -46,6 +46,17 @@ public class StudentManageQueryInfo extends QueryInfo {
 
 
     private Integer comeOnPackage;
     private Integer comeOnPackage;
 
 
+    //是否有会员
+    private Integer hasMember;
+
+    public Integer getHasMember() {
+        return hasMember;
+    }
+
+    public void setHasMember(Integer hasMember) {
+        this.hasMember = hasMember;
+    }
+
     private Integer subjectId;
     private Integer subjectId;
 
 
     private String activityCourseType;
     private String activityCourseType;
@@ -74,17 +85,6 @@ public class StudentManageQueryInfo extends QueryInfo {
         this.activityCourseType = activityCourseType;
         this.activityCourseType = activityCourseType;
     }
     }
 
 
-    //是否有会员
-    private Integer hasMember;
-
-    public Integer getHasMember() {
-        return hasMember;
-    }
-
-    public void setHasMember(Integer hasMember) {
-        this.hasMember = hasMember;
-    }
-
     public Integer getCarePackage() {
     public Integer getCarePackage() {
         return carePackage;
         return carePackage;
     }
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -193,7 +193,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
             randomAccessFile.close();
             randomAccessFile.close();
             userSoundInfoMap.get(phone).setAccessFile(null);
             userSoundInfoMap.get(phone).setAccessFile(null);
         }
         }
-        userSoundInfoMap.get(phone).setRecordMeasurePithInfo(null);
+//        userSoundInfoMap.get(phone).setRecordMeasurePithInfo(null);
         LOGGER.info("评分数据:{}", JSON.toJSONString(userSoundInfoMap.get(phone)));
         LOGGER.info("评分数据:{}", JSON.toJSONString(userSoundInfoMap.get(phone)));
         userSoundInfoMap.remove(phone);
         userSoundInfoMap.remove(phone);
     }
     }

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

@@ -10,5 +10,5 @@ public interface MusicGroupSchoolTermCourseDetailService extends BaseService<Int
 
 
     HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
     HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
 
 
-    HttpResponseResult musicSchoolTermPush();
+    void musicSchoolTermPush();
 }
 }

+ 8 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -213,11 +213,17 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
 
     String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
     String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
 
 
-    String CHILDREN_DAY_VIP_ACTIVITY_IDS = "children_day_vip_activity_ids";
-
     //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
     //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
     String REMIND_COURSE_TIME = "remind_course_time";
     String REMIND_COURSE_TIME = "remind_course_time";
 
 
+    //会员结束前15天提醒学员续费(默认提前15天)
+    String PUSH_MEMBER_RENEW = "push_member_renew";
+
+    //会员结束前5天提醒学员续费(退团提醒)(默认提前15天)
+    String PUSH_MEMBER_RENEW_QUIT = "push_member_renew_quit";
+
+    String CHILDREN_DAY_VIP_ACTIVITY_IDS = "children_day_vip_activity_ids";
+
     /**
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName
      * @params paramName

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2701,6 +2701,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
             courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
             courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
             courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
             courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
             courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
+            musicGroupSchoolTermCourseDetailDao.delete(musicGroupSchoolTermCourseDetailId);
         }else {
         }else {
             List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByClassGroupId(classGroupId);
             List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByClassGroupId(classGroupId);
             if(courseSchedules.size() == 0){
             if(courseSchedules.size() == 0){
@@ -2946,6 +2947,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseSchedule.setPreCourseFlag(1);
                     courseSchedule.setPreCourseFlag(1);
                     courseSchedule.setMemberFlag(1);
                     courseSchedule.setMemberFlag(1);
                     courseSchedule.setValidEndTime(schoolTermCourseDetail.getEndSchoolTerm());
                     courseSchedule.setValidEndTime(schoolTermCourseDetail.getEndSchoolTerm());
+                    courseSchedule.setValidStartTime(schoolTermCourseDetail.getStartSchoolTerm());
                     courseScheduleDao.insert(courseSchedule);
                     courseScheduleDao.insert(courseSchedule);
                     courseScheduleList.add(courseSchedule);
                     courseScheduleList.add(courseSchedule);
 
 
@@ -3489,9 +3491,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId, null,0);
         MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId, null,0);
         Map<Integer, Long> preTotalNumMap = null;
         Map<Integer, Long> preTotalNumMap = null;
         Map<Integer, Long> preSubMinutesMap = null;
         Map<Integer, Long> preSubMinutesMap = null;
+        Map<Integer, Integer> preMinutesMap = null;
         if(termCourseDetail != null){
         if(termCourseDetail != null){
             preTotalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreTotalNumByClassGroupId(classGroupSet));
             preTotalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreTotalNumByClassGroupId(classGroupSet));
             preSubMinutesMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreSubMinutesByClassGroupId(classGroupSet,termCourseDetail.getId()));
             preSubMinutesMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreSubMinutesByClassGroupId(classGroupSet,termCourseDetail.getId()));
+            preMinutesMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreMinutesByClassGroupId(classGroupSet,termCourseDetail.getId()));
         }
         }
         Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
         Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupId(classGroupSet));
 
 
@@ -3511,6 +3515,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     classGroup.setPreSubMinutes(aLong==null?0:aLong.intValue());
                     classGroup.setPreSubMinutes(aLong==null?0:aLong.intValue());
                 }
                 }
             }
             }
+            if(preMinutesMap != null){
+                if (preMinutesMap.containsKey(classGroup.getId())) {
+                    classGroup.setPreMinutes(preMinutesMap.get(classGroup.getId()));
+                }
+            }
             if(preTotalNumMap != null){
             if(preTotalNumMap != null){
                 if (preTotalNumMap.containsKey(classGroup.getId())) {
                 if (preTotalNumMap.containsKey(classGroup.getId())) {
                     Long aLong = preTotalNumMap.get(classGroup.getId());
                     Long aLong = preTotalNumMap.get(classGroup.getId());

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1919,6 +1919,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							throw new BizException("操作失败:不允许跨学期调整");
 							throw new BizException("操作失败:不允许跨学期调整");
 						}
 						}
 					}
 					}
+					if(preCourseSchedule.getValidStartTime() != null){
+						if(preCourseSchedule.getValidStartTime().compareTo(preCourseSchedule.getClassDate()) > 0){
+							throw new BizException("操作失败:不允许跨学期调整");
+						}
+					}
                     for (CourseSchedule backCourseSchedule : existClassDateCourses) {
                     for (CourseSchedule backCourseSchedule : existClassDateCourses) {
 
 
                         //判断前后两节课是否存在冲突
                         //判断前后两节课是否存在冲突
@@ -3376,7 +3381,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 newCourseSchedule.setGroupType(oldCourseSchedule.getGroupType());
                 newCourseSchedule.setGroupType(oldCourseSchedule.getGroupType());
             }
             }
 			newCourseSchedule.setValidEndTime(oldCourseSchedule.getValidEndTime());
 			newCourseSchedule.setValidEndTime(oldCourseSchedule.getValidEndTime());
-            
+			newCourseSchedule.setValidStartTime(oldCourseSchedule.getValidStartTime());
+
             //课程是否已结算
             //课程是否已结算
             int settlementNum = courseScheduleTeacherSalaryDao.checkCourseIsSettlement(oldCourseSchedule.getId().intValue());
             int settlementNum = courseScheduleTeacherSalaryDao.checkCourseIsSettlement(oldCourseSchedule.getId().intValue());
             if (settlementNum > 0) {
             if (settlementNum > 0) {
@@ -3498,6 +3504,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					throw new BizException("操作失败:不允许跨学期调整");
 					throw new BizException("操作失败:不允许跨学期调整");
 				}
 				}
 			}
 			}
+			if(newCourseSchedule.getValidStartTime() != null){
+				if(newCourseSchedule.getValidStartTime().compareTo(newCourseSchedule.getClassDate()) > 0){
+					throw new BizException("操作失败:不允许跨学期调整");
+				}
+			}
 
 
 			if(newCourseSchedule.getStartClassTime().compareTo(date)<0){
 			if(newCourseSchedule.getStartClassTime().compareTo(date)<0){
 				throw new BizException("调整无效,不能调整至已结束");
 				throw new BizException("调整无效,不能调整至已结束");

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -260,6 +260,15 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 			throw new BizException("学员信息不存在");
 			throw new BizException("学员信息不存在");
 		}
 		}
 		
 		
+		//查询原定的是否已处理
+		StudentPaymentOrder orignStudentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
+		if(orignStudentPaymentOrder == null){
+			return false;
+		}
+		if(orignStudentPaymentOrder.getStatus() != DealStatusEnum.ING || orignStudentPaymentOrder.getStatus() != DealStatusEnum.WAIT_PAY){
+			return false;
+		}
+		
 		Date nowDate = new Date();
 		Date nowDate = new Date();
 		// 更新订单信息
 		// 更新订单信息
 		studentPaymentOrder.setUpdateTime(nowDate);
 		studentPaymentOrder.setUpdateTime(nowDate);

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

@@ -54,6 +54,8 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	private SysMessageService sysMessageService;
 	private SysMessageService sysMessageService;
 	@Autowired
 	@Autowired
 	private TeacherDao teacherDao;
 	private TeacherDao teacherDao;
+	@Autowired
+	private StudentDao studentDao;
 
 
 	@Override
 	@Override
 	public BaseDAO<Integer, MusicGroupSchoolTermCourseDetail> getDAO() {
 	public BaseDAO<Integer, MusicGroupSchoolTermCourseDetail> getDAO() {
@@ -77,7 +79,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		//校验当前乐团是否所有学员都在班
 		//校验当前乐团是否所有学员都在班
 		String notClassName = studentRegistrationDao.getNotClassName(musicGroupId);
 		String notClassName = studentRegistrationDao.getNotClassName(musicGroupId);
 		if(StringUtils.isNotEmpty(notClassName)){
 		if(StringUtils.isNotEmpty(notClassName)){
-			throw new BizException("操作失败:{} 学员未在任何班级",notClassName);
+			throw new BizException("操作失败:{} 学员未在以下任何班级",notClassName);
 		}
 		}
 		MusicGroupSchoolTermCourseDetail courseDetail = musicGroupSchoolTermCourseDetailDao.
 		MusicGroupSchoolTermCourseDetail courseDetail = musicGroupSchoolTermCourseDetailDao.
 				findByCourseDateAndMusicGroupId(musicGroupId,null,0);
 				findByCourseDateAndMusicGroupId(musicGroupId,null,0);
@@ -151,7 +153,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	}
 	}
 
 
 	@Override
 	@Override
-	public HttpResponseResult musicSchoolTermPush() {
+	public void musicSchoolTermPush() {
 		String remindCourseTime = sysConfigDao.findConfigValue(SysConfigService.REMIND_COURSE_TIME);
 		String remindCourseTime = sysConfigDao.findConfigValue(SysConfigService.REMIND_COURSE_TIME);
 		if(StringUtils.isEmpty(remindCourseTime)){
 		if(StringUtils.isEmpty(remindCourseTime)){
 			remindCourseTime = "14";
 			remindCourseTime = "14";
@@ -161,10 +163,10 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		if(musicGroupIds.size() > 0){
 		if(musicGroupIds.size() > 0){
 			List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
 			List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
 			List<Integer> educationIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
 			List<Integer> educationIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
-			Map<Integer, String> educationNameMap = MapUtil.convertMybatisMap(teacherDao.queryNameByIdList(educationIds));
+			Map<Integer, String> educationPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(educationIds,",")));
 			for (MusicGroup musicGroup : musicGroupList) {
 			for (MusicGroup musicGroup : musicGroupList) {
 				Map<Integer,String> userMap = new HashMap<>(1);
 				Map<Integer,String> userMap = new HashMap<>(1);
-				userMap.put(musicGroup.getEducationalTeacherId(),educationNameMap.get(musicGroup.getEducationalTeacherId()));
+				userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
 						userMap,
 						userMap,
@@ -173,9 +175,11 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						null,
 						null,
 						null,
 						null,
 						musicGroup.getName());
 						musicGroup.getName());
+				Map<Integer,String> userMap1 = new HashMap<>(1);
+				userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
-						userMap,
+						userMap1,
 						null,
 						null,
 						0,
 						0,
 						null,
 						null,
@@ -183,7 +187,66 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						musicGroup.getName());
 						musicGroup.getName());
 			}
 			}
 		}
 		}
-		return null;
+		//会员结束前15天提醒学员续费
+		String pushMemberRenew = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW);
+		if(StringUtils.isEmpty(pushMemberRenew)){
+			pushMemberRenew = "15";
+		}
+		List<Integer> studentIds = studentDao.queryPushMemberRenew(pushMemberRenew);
+		if(studentIds.size() > 0){
+			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIds,",")));
+			Map<Integer,String> userMap = new HashMap<>(studentIds.size());
+			Map<Integer,String> userMap1 = new HashMap<>(studentIds.size());
+			for (Integer studentId : studentIds) {
+				userMap.put(studentId,studentPhoneMap.get(studentId));
+				userMap1.put(studentId,studentId.toString());
+			}
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+					userMap,
+					null,
+					0,
+					null,
+					null);
+
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+					userMap1,
+					null,
+					0,
+					null,
+					"STUDENT");
+		}
+		//会员结束前15天提醒学员续费(退团提醒)
+		String pushMemberRenewQuit = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW_QUIT);
+		if(StringUtils.isEmpty(pushMemberRenewQuit)){
+			pushMemberRenewQuit = "5";
+		}
+		List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewQuit);
+		if(studentIdList.size() > 0){
+			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
+			Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
+			Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
+			for (Integer studentId : studentIdList) {
+				userMap.put(studentId,studentPhoneMap.get(studentId));
+				userMap1.put(studentId,studentId.toString());
+			}
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_QUIT_MESSAGE,
+					userMap,
+					null,
+					0,
+					null,
+					null);
+
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_QUIT_MESSAGE,
+					userMap1,
+					null,
+					0,
+					null,
+					"STUDENT");
+		}
 	}
 	}
 
 
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){
@@ -193,13 +256,18 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		String year = DateUtil.getYear(startCourseDate);
 		String year = DateUtil.getYear(startCourseDate);
 		if(month >= 9 || month <= 2){
 		if(month >= 9 || month <= 2){
 			if(month >= 9){
 			if(month >= 9){
+				courseDetail.setStartSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-09-01 00:00:00")));
 				year = DateUtil.getYear(DateUtil.addYears(startCourseDate, 1));
 				year = DateUtil.getYear(DateUtil.addYears(startCourseDate, 1));
+			}else {
+				String year1 = DateUtil.getYear(DateUtil.addYears(startCourseDate, -1));
+				courseDetail.setStartSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year1 + "-09-01 00:00:00")));
 			}
 			}
 			courseDetail.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01 00:00:00")));
 			courseDetail.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01 00:00:00")));
 		}else {
 		}else {
+			courseDetail.setStartSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-03-01 00:00:00")));
 			courseDetail.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
 			courseDetail.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
 		}
 		}
-		courseDetail.setStartSchoolTerm(startCourseDate);
+//		courseDetail.setStartSchoolTerm(startCourseDate);
 		//计算可排课时长
 		//计算可排课时长
 //		int week = LocalDateTime.ofInstant(startCourseDate.toInstant(),DateUtil.zoneId).getDayOfWeek().getValue();
 //		int week = LocalDateTime.ofInstant(startCourseDate.toInstant(),DateUtil.zoneId).getDayOfWeek().getValue();
 		int week = DateUtil.date2Week1(startCourseDate);
 		int week = DateUtil.date2Week1(startCourseDate);

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

@@ -26,9 +26,6 @@ import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;

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

@@ -2289,7 +2289,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			return;
 			return;
 		}
 		}
 
 
-		if(studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)){
+		if(!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)){
 			return;
 			return;
 		}
 		}
 
 

+ 21 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -39,6 +39,7 @@
         <result column="member_flag_" property="memberFlag"/>
         <result column="member_flag_" property="memberFlag"/>
         <result column="pre_course_flag_" property="preCourseFlag"/>
         <result column="pre_course_flag_" property="preCourseFlag"/>
         <result column="valid_end_time_" property="validEndTime"/>
         <result column="valid_end_time_" property="validEndTime"/>
+        <result column="valid_start_time_" property="validStartTime"/>
     </resultMap>
     </resultMap>
 
 
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -163,6 +164,7 @@
         cs.new_course_id_,
         cs.new_course_id_,
         cs.member_flag_,
         cs.member_flag_,
         cs.valid_end_time_,
         cs.valid_end_time_,
+        cs.valid_start_time_,
         cs.pre_course_flag_
         cs.pre_course_flag_
     </sql>
     </sql>
 
 
@@ -186,13 +188,13 @@
         INSERT INTO course_schedule
         INSERT INTO course_schedule
         (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
-        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_,pre_course_flag_,valid_end_time_)
+        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_,pre_course_flag_,valid_end_time_,valid_start_time_)
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},
         #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},
         #{endClassTime},#{teacherId},#{teacherId},now(),now(),
         #{endClassTime},#{teacherId},#{teacherId},now(),now(),
         #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},
         #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},
         #{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentNum},#{leaveStudentNum},
         #{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentNum},#{leaveStudentNum},
-        #{schoolId},#{isLock},#{note},#{teachingContent},#{organId},#{memberFlag},#{preCourseFlag},#{validEndTime})
+        #{schoolId},#{isLock},#{note},#{teachingContent},#{organId},#{memberFlag},#{preCourseFlag},#{validEndTime},#{validStartTime})
     </insert>
     </insert>
 
 
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
@@ -200,7 +202,7 @@
         INSERT INTO course_schedule
         INSERT INTO course_schedule
         (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         (group_type_,music_group_id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
         teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,
-        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_,pre_course_flag_,valid_end_time_)
+        schoole_id_,is_lock_,note_,teaching_content_,organ_id_,member_flag_,pre_course_flag_,valid_end_time_,valid_start_time_)
         VALUE
         VALUE
         <foreach collection="list" item="course" separator=",">
         <foreach collection="list" item="course" separator=",">
             (#{course.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.musicGroupId},
             (#{course.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.musicGroupId},
@@ -209,7 +211,7 @@
             #{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},
             #{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},
             #{course.leaveStudentNum},#{course.schoolId},#{course.isLock},#{course.note},#{course.teachingContent},
             #{course.leaveStudentNum},#{course.schoolId},#{course.isLock},#{course.note},#{course.teachingContent},
-            #{course.organId},#{course.memberFlag},#{course.preCourseFlag},#{course.validEndTime})
+            #{course.organId},#{course.memberFlag},#{course.preCourseFlag},#{course.validEndTime},#{course.validStartTime})
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 
@@ -220,6 +222,9 @@
             <if test="validEndTime != null">
             <if test="validEndTime != null">
                 valid_end_time_ = #{validEndTime},
                 valid_end_time_ = #{validEndTime},
             </if>
             </if>
+            <if test="validStartTime != null">
+                valid_start_time_ = #{validStartTime},
+            </if>
             <if test="preCourseFlag != null">
             <if test="preCourseFlag != null">
                 pre_course_flag_ = #{preCourseFlag},
                 pre_course_flag_ = #{preCourseFlag},
             </if>
             </if>
@@ -3796,8 +3801,7 @@
         <foreach collection="ids" item="id" open="(" close=")" separator=",">
         <foreach collection="ids" item="id" open="(" close=")" separator=",">
             #{id}
             #{id}
         </foreach>
         </foreach>
-        AND group_type_='MUSIC'
-        AND status_ IN ('UNDERWAY','OVER')
+        AND group_type_='MUSIC' AND DATE_FORMAT(NOW(),'%Y-%m-%d') >= class_date_
         GROUP BY music_group_id_
         GROUP BY music_group_id_
     </select>
     </select>
 
 
@@ -3910,6 +3914,17 @@
         AND mgst.music_group_school_term_course_detail_id_ = #{courseDetailId}
         AND mgst.music_group_school_term_course_detail_id_ = #{courseDetailId}
         GROUP BY cgsm.class_group_id_
         GROUP BY cgsm.class_group_id_
     </select>
     </select>
+    <select id="countPreMinutesByClassGroupId" resultType="java.util.Map">
+        SELECT cgsm.class_group_id_ 'key',MAX(mgst.pre_member_course_minutes_) 'value'
+        FROM class_group_student_mapper cgsm
+        LEFT JOIN music_group_school_term_student_course_detail mgst ON mgst.user_id_ = cgsm.user_id_
+        WHERE cgsm.class_group_id_ IN
+        <foreach collection="classGroupSet" open="(" close=")" item="classGroupId" separator=",">
+            #{classGroupId}
+        </foreach>
+        AND mgst.music_group_school_term_course_detail_id_ = #{courseDetailId}
+        GROUP BY cgsm.class_group_id_
+    </select>
     <select id="queryOverPreCourseListByMusicGroupId" resultType="int">
     <select id="queryOverPreCourseListByMusicGroupId" resultType="int">
         SELECT count(id_) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = 'MUSIC' AND is_lock_ = 1 AND pre_course_flag_ = 1
         SELECT count(id_) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = 'MUSIC' AND is_lock_ = 1 AND pre_course_flag_ = 1
                                         AND CONCAT(class_date_,' ', start_class_time_) &lt;= NOW()
                                         AND CONCAT(class_date_,' ', start_class_time_) &lt;= NOW()

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

@@ -22,10 +22,10 @@
         <result column="current_grade_num_" property="currentGradeNum"/>
         <result column="current_grade_num_" property="currentGradeNum"/>
         <result column="current_class_" property="currentClass"/>
         <result column="current_class_" property="currentClass"/>
         <result column="cooperation_organ_id_" property="cooperationOrganId"/>
         <result column="cooperation_organ_id_" property="cooperationOrganId"/>
-        <result column="activity_course_detail_" property="activityCourseDetail"/>
         <result column="member_rank_setting_id_" property="memberRankSettingId"/>
         <result column="member_rank_setting_id_" property="memberRankSettingId"/>
         <result column="membership_start_time_" property="membershipStartTime"/>
         <result column="membership_start_time_" property="membershipStartTime"/>
         <result column="membership_end_time_" property="membershipEndTime"/>
         <result column="membership_end_time_" property="membershipEndTime"/>
+        <result column="activity_course_detail_" property="activityCourseDetail"/>
     </resultMap>
     </resultMap>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
@@ -124,9 +124,6 @@
             <if test="currentClass != null">
             <if test="currentClass != null">
                 current_class_=#{currentClass},
                 current_class_=#{currentClass},
             </if>
             </if>
-            <if test="activityCourseDetail != null">
-                activity_course_detail_=#{activityCourseDetail},
-            </if>
             <if test="memberRankSettingId != null">
             <if test="memberRankSettingId != null">
                 member_rank_setting_id_=#{memberRankSettingId},
                 member_rank_setting_id_=#{memberRankSettingId},
             </if>
             </if>
@@ -136,6 +133,9 @@
             <if test="membershipEndTime != null">
             <if test="membershipEndTime != null">
                 membership_end_time_=#{membershipEndTime},
                 membership_end_time_=#{membershipEndTime},
             </if>
             </if>
+            <if test="activityCourseDetail != null">
+                activity_course_detail_=#{activityCourseDetail},
+            </if>
                 cooperation_organ_id_=#{cooperationOrganId},
                 cooperation_organ_id_=#{cooperationOrganId},
                 update_time_ = NOW()
                 update_time_ = NOW()
         </set>
         </set>
@@ -734,6 +734,9 @@
     <select id="getMemberNum" resultType="int">
     <select id="getMemberNum" resultType="int">
         SELECT COUNT(0) FROM student WHERE member_rank_setting_id_ IS NOT NULL AND FIND_IN_SET(user_id_,#{studentIdsStr})
         SELECT COUNT(0) FROM student WHERE member_rank_setting_id_ IS NOT NULL AND FIND_IN_SET(user_id_,#{studentIdsStr})
     </select>
     </select>
+    <select id="queryPushMemberRenew" resultType="java.lang.Integer">
+        SELECT user_id_ FROM student WHERE DATEDIFF(membership_end_time_,NOW()) = #{pushMemberRenew};
+    </select>
 
 
     <update id="updateGrade"><![CDATA[
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1
         UPDATE student SET current_grade_num_=current_grade_num_+1

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

@@ -1502,7 +1502,15 @@
         SELECT GROUP_CONCAT(DISTINCT su.username_) FROM student_registration sr
         SELECT GROUP_CONCAT(DISTINCT su.username_) FROM student_registration sr
         LEFT JOIN sys_user su ON su.id_ = sr.user_id_
         LEFT JOIN sys_user su ON su.id_ = sr.user_id_
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ = 'NORMAL'
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ = 'NORMAL'
-        AND sr.user_id_ NOT IN (SELECT DISTINCT user_id_ FROM class_group_student_mapper WHERE music_group_id_ = #{musicGroupId} AND group_type_ = 'MUSIC' AND status_ != 'QUIT')
+        AND sr.user_id_ NOT IN (SELECT DISTINCT cgsm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
+        WHERE cgsm.music_group_id_ = #{musicGroupId} AND cgsm.group_type_ = 'MUSIC'
+        AND cgsm.status_ != 'QUIT' AND cg.del_flag_ = 0 AND cg.type_ IN ('SNAP','NORMAL','MIX'))
+    </select>
+    <select id="checkHasMemberGroup" resultType="java.lang.Boolean">
+        SELECT COUNT(sr.id_) > 0 FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        WHERE sr.music_group_id_ != #{musicGroupId} AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{userId} AND mg.course_view_type_ = 1
     </select>
     </select>
 
 
     <!-- 获取报名相关数据 -->
     <!-- 获取报名相关数据 -->
@@ -1526,9 +1534,4 @@
           AND paying_status_ = 2
           AND paying_status_ = 2
           AND music_group_status_ = 'NORMAL'
           AND music_group_status_ = 'NORMAL'
     </select>
     </select>
-    <select id="checkHasMemberGroup" resultType="java.lang.Boolean">
-        SELECT COUNT(sr.id_) > 0 FROM student_registration sr
-        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
-        WHERE sr.music_group_id_ != #{musicGroupId} AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{userId} AND mg.course_view_type_ = 1
-    </select>
 </mapper>
 </mapper>

+ 1 - 1
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -205,6 +205,6 @@ public interface TaskRemoteService {
 	void autoCleanPreCourseTask();
 	void autoCleanPreCourseTask();
 
 
 	//每天10点推送排课、续费、退团提醒
 	//每天10点推送排课、续费、退团提醒
-	@GetMapping("task/autoCleanPreCourseTask")
+	@GetMapping("task/musicSchoolTermPush")
     void musicSchoolTermPush();
     void musicSchoolTermPush();
 }
 }

+ 48 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,5 +1,47 @@
 package com.ym.mec.student.controller;
 package com.ym.mec.student.controller;
 
 
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.DigestUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
@@ -11,8 +53,8 @@ import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -86,11 +128,16 @@ public class StudentOrderController extends BaseController {
     private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
     private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
     @Autowired
     @Autowired
     private ChildrenDayDegreeDetailDao childrenDayDegreeDetailDao;
     private ChildrenDayDegreeDetailDao childrenDayDegreeDetailDao;
+
     @Autowired
     @Autowired
     private CloudTeacherOrderService cloudTeacherOrderService;
     private CloudTeacherOrderService cloudTeacherOrderService;
     @Autowired
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
     private StudentRegistrationDao studentRegistrationDao;
 
 
+	@Autowired
+	private MemberRankPrivilegesService memberRankPrivilegesService;
+
+
     @Value("${spring.profiles.active:dev}")
     @Value("${spring.profiles.active:dev}")
     private String profiles;
     private String profiles;
 
 

+ 0 - 6
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSchoolTermCourseDetailController.java

@@ -26,10 +26,4 @@ public class MusicGroupSchoolTermCourseDetailController extends BaseController {
 	public HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
 	public HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
 		return musicGroupSchoolTermCourseDetailService.upset(musicGroupSchoolTermCourseDetail);
 		return musicGroupSchoolTermCourseDetailService.upset(musicGroupSchoolTermCourseDetail);
 	}
 	}
-
-	@ApiOperation("每天10点推送排课、续费、退团提醒")
-	@GetMapping(value = "musicSchoolTermPush")
-	public HttpResponseResult musicSchoolTermPush() {
-		return musicGroupSchoolTermCourseDetailService.musicSchoolTermPush();
-	}
 }
 }

+ 13 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -1,16 +1,18 @@
 package com.ym.mec.web.controller;
 package com.ym.mec.web.controller;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermCourseDetailDao;
 import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermCourseDetailDao;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermStudentCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermStudentCourseDetail;
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.event.source.CourseEventSource;
 import com.ym.mec.biz.event.source.CourseEventSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.redis.service.RedisCache;
+import io.swagger.annotations.ApiOperation;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.service.HistoryMessageService;
 import com.yonge.log.service.HistoryMessageService;
@@ -157,6 +159,9 @@ public class TaskController extends BaseController {
 	}
 	}
 
 
 
 
+	@Autowired
+	private MusicGroupSchoolTermCourseDetailService musicGroupSchoolTermCourseDetailService;
+
 	@GetMapping(value = "/autoAffirmReceiveTask")
 	@GetMapping(value = "/autoAffirmReceiveTask")
 	// 自动确认收货
 	// 自动确认收货
 	public void affirmReceive(){
 	public void affirmReceive(){
@@ -467,4 +472,11 @@ public class TaskController extends BaseController {
 			}
 			}
 		}
 		}
 	}
 	}
+
+	@ApiOperation("每天10点推送排课、续费、退团提醒")
+	@GetMapping(value = "/musicSchoolTermPush")
+	public HttpResponseResult musicSchoolTermPush() {
+		musicGroupSchoolTermCourseDetailService.musicSchoolTermPush();
+		return succeed();
+	}
 }
 }