zouxuan %!s(int64=4) %!d(string=hai) anos
pai
achega
b2d02ea951

+ 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);
 
+
+    /**
+     * 获取班级最大已排课时长
+     * @param classGroupSet
+     * @return
+     */
+    List<Map<Integer, Long>> countPreMinutesByClassGroupId(@Param("classGroupSet") List<Integer> classGroupSet, @Param("courseDetailId") Integer courseDetailId);
+
     /**
      * 获取进行中或已结束的预排课课程
      * @param musicGroupId

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

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

+ 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 preMinutes;
+
+	public Integer getPreMinutes() {
+		return preMinutes;
+	}
+
+	public void setPreMinutes(Integer preMinutes) {
+		this.preMinutes = preMinutes;
+	}
+
 	public Integer getPreSubMinutes() {
 		return preSubMinutes;
 	}

+ 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> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
     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", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
     SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),

+ 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 musicSchoolTermPush();
+    void musicSchoolTermPush();
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -216,6 +216,12 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
     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";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

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

@@ -3489,9 +3489,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.findByCourseDateAndMusicGroupId(musicGroupId, null,0);
         Map<Integer, Long> preTotalNumMap = null;
         Map<Integer, Long> preSubMinutesMap = null;
+        Map<Integer, Long> preMinutesMap = null;
         if(termCourseDetail != null){
             preTotalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countPreTotalNumByClassGroupId(classGroupSet));
             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));
 
@@ -3511,6 +3513,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     classGroup.setPreSubMinutes(aLong==null?0:aLong.intValue());
                 }
             }
+            if(preMinutesMap != null){
+                if (preMinutesMap.containsKey(classGroup.getId())) {
+                    Long aLong = preMinutesMap.get(classGroup.getId());
+                    classGroup.setPreMinutes(aLong==null?0:aLong.intValue());
+                }
+            }
             if(preTotalNumMap != null){
                 if (preTotalNumMap.containsKey(classGroup.getId())) {
                     Long aLong = preTotalNumMap.get(classGroup.getId());

+ 74 - 6
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;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private StudentDao studentDao;
 
 	@Override
 	public BaseDAO<Integer, MusicGroupSchoolTermCourseDetail> getDAO() {
@@ -151,7 +153,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	}
 
 	@Override
-	public HttpResponseResult musicSchoolTermPush() {
+	public void musicSchoolTermPush() {
 		String remindCourseTime = sysConfigDao.findConfigValue(SysConfigService.REMIND_COURSE_TIME);
 		if(StringUtils.isEmpty(remindCourseTime)){
 			remindCourseTime = "14";
@@ -161,10 +163,10 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		if(musicGroupIds.size() > 0){
 			List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
 			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) {
 				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,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
 						userMap,
@@ -173,9 +175,11 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						null,
 						null,
 						musicGroup.getName());
+				Map<Integer,String> userMap1 = new HashMap<>(1);
+				userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 						MessageTypeEnum.REMIND_EDUCATION_COURSE_TIME,
-						userMap,
+						userMap1,
 						null,
 						0,
 						null,
@@ -183,7 +187,66 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						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){
@@ -193,13 +256,18 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 		String year = DateUtil.getYear(startCourseDate);
 		if(month >= 9 || month <= 2){
 			if(month >= 9){
+				courseDetail.setStartSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-09-01 00:00:00")));
 				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")));
 		}else {
+			courseDetail.setStartSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-03-01 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 = DateUtil.date2Week1(startCourseDate);

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -3910,6 +3910,17 @@
         AND mgst.music_group_school_term_course_detail_id_ = #{courseDetailId}
         GROUP BY cgsm.class_group_id_
     </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 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()

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -718,6 +718,9 @@
     <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>
+    <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 student SET current_grade_num_=current_grade_num_+1

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSchoolTermCourseDetailController.java

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