Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
698f384db6
62 changed files with 945 additions and 545 deletions
  1. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  2. 443 434
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectGoodsGroupDao.java
  4. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java
  5. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/Mapper.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubFeeSettingDto.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubjectApplyDetailDto.java
  8. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/UpdateExpectedNumDto.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java
  10. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  11. 14 4
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  12. 4 5
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/UploadFileService.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkTemplateServiceImpl.java
  17. 33 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  18. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  19. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  20. 125 22
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  21. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java
  22. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  23. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  24. 42 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  25. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  26. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java
  27. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  28. 13 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  29. 8 3
      mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectGoodsGroupMapper.xml
  30. 14 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml
  31. 3 1
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  32. 9 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  33. 2 1
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  34. 8 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  35. 10 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  36. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java
  37. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java
  38. 1 1
      mec-im/src/main/java/com/ym/utils/IdentifierUtils.java
  39. 1 1
      mec-im/src/main/java/com/ym/utils/SecurityUtils.java
  40. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  41. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  42. 18 0
      mec-task/src/main/java/com/ym/mec/task/jobs/CoursesScheduleRemaindTask.java
  43. 18 0
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentSignInRemaindTask.java
  44. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java
  45. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  46. 1 1
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java
  47. 1 1
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/MOxintongSMSPlugin.java
  48. 1 1
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/ShiyuanSMSPlugin.java
  49. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/H5.java
  50. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Mp.java
  51. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPay.java
  52. 1 1
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  53. 1 1
      mec-util/src/main/java/com/ym/mec/util/http/HttpUtil.java
  54. 1 1
      mec-util/src/main/java/com/ym/mec/util/upload/UploadUtil.java
  55. 1 1
      mec-util/src/main/java/com/ym/mec/util/validator/CommonValidator.java
  56. 20 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  57. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/SysConfigController.java
  58. 12 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  59. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/UploadFileController.java
  60. 1 1
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/OrderController.java
  61. 1 1
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/ProcessController.java
  62. 1 1
      mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/TaskController.java

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -13,7 +13,7 @@ import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.ImFeignService;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 

+ 443 - 434
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,447 +1,456 @@
 package com.ym.mec.biz.dal.dao;
 package com.ym.mec.biz.dal.dao;
 
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
 import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
 
-    /**
-     * 根据教师ID获取当前课程信息
-     *
-     * @param courseID
-     * @return
-     */
-    TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
-
-    /**
-     * @param startTime:
-     * @param endTime:
-     * @param teacherId:
-     * @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
-     * @describe 根据时间区间获取教师上课的课程
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    TeacherAttendanceDto getTeacherCourseByDateSpeed(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("teacherId") Long teacherId);
-
-    int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
-
-    /**
-     * @describe 批量删除课程计划
-     * @author Joburgess
-     * @date 2019/10/31
-     * @param courseScheduleIds: 课程编号列表
-     * @return int
-     */
-    int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @describe 统计教师再指定时间区段内存在冲突的课程数量
-     * @author Joburgess
-     * @date 2019/10/28
-     * @param teacherId: 教师编号
-     * @param classDate: 上课日期
-     * @param startTime: 开始时间
-     * @param endTime: 结束时间
-     * @return int
-     */
-    int countExistRepeatInDateZone(@Param("teacherId") Integer teacherId,
-                                   @Param("classDate") Date classDate,
-                                   @Param("startTime") Date startTime,
-                                   @Param("endTime") Date endTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 统计学生所属班级数量
-     */
-    Integer[] countStudentInClass(List<Integer> classGroupIDs);
-
-    /**
-     * @describe 根据课程编号列表获取课程列表
-     * @author Joburgess
-     * @date 2019/10/22
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     */
-    List<CourseSchedule> findByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @describe 根据课程编号列表获取助教列表
-     * @author Joburgess
-     * @date 2019/10/23
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
-     */
-    List<CourseScheduleTeacherSalary> findTeachingTeachers(@Param("courseScheduleIds") List<Long> courseScheduleIds);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 根据日期获取当日排课信息
-     */
-    List<CourseScheduleDto> getCourseSchedulesWithDate(@Param("classDate") Date classDate);
-
-    /**
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     * @Author: Joburgess
-     * @Date: 2019/10/14
-     * @params [classDates, classGroupId]
-     * @describe 根据班级和上课日期获取课程计划
-     */
-    List<CourseSchedule> findByClassGroupAndDate(@Param("classDates") List<Date> classDates, @Param("classGroupId") Long classGroupId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 根据日期获取学生当日排课信息
-     */
-    List<CourseScheduleDto> getStudentCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("studentId") Long studentId);
-
-    /**
-     * @return java.util.List<java.lang.String>
-     * @Author: Joburgess
-     * @Date: 2019/10/11
-     * @params [courseScheduleId]
-     * @describe 获取课程签到学生姓名
-     */
-    List<String> findStudentNamesByCourseSchedule(Long courseScheduleId);
-
-    /**
-     * @param classDate: 上课日期
-     * @param teacherId: 教师编号
-     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
-     * @describe 根据日期获取老师当日排课信息
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate,
-                                                              @Param("teacherId") Long teacherId,
-                                                              @Param("type") String type);
-
-    /**
-     * @param params:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
-     * @describe 根据日期获取排课
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String, Object> params);
-
-    int countCourseSchedulesWithDate(Map<String, Object> params);
-
-    /**
-     * @param musicGroupID: 乐团编号
-     * @return int
-     * @describe 根据乐团ID删除排课
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    int deleteCourseSchedulesByMusicGroupID(@Param("musicGroupID") Long musicGroupID);
-
-    /**
-     * @param musicGroupID: 乐团编号
-     * @param month:        月份
-     * @return java.util.List<java.util.Date>
-     * @describe 根据月份获取乐团在该月有课的日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID, @Param("month") Date month);
-
-    /**
-     * @param studentId:
-     * @param month:
-     * @param isAttend:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取学生有课日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getStudentCourseScheduleDate(@Param("studentId") Long studentId, @Param("month") Date month, @Param("isAttend") Integer isAttend);
-
-    /**
-     * @param teacherId:
-     * @param month:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取教师有课日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId,
-                                            @Param("month") Date month,
-                                            @Param("type") String type);
-
-    /**
-     * @param month:
-     * @param organId:
-     * @return java.util.List<java.util.Date>
-     * @describe 获取当月有课的日期
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Date> getCourseScheduleDate(@Param("month") Date month, @Param("organId") Long organId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 统计教师在一天内有时间重复的课数
-     */
-    int countTeacherCourseInOnDayRepeats(CourseSchedule courseSchedule);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据日期获取对应老师的课程
-     */
-    List<CourseSchedule> findTeacherCoursesInDates(@Param("dates") List<Date> dates, @Param("teacherId") Long teacherId);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据日期获取课程
-     */
-    List<CourseSchedule> findCoursesByDates(@Param("dates") List<Date> dates);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 获取在指定时间段内存在重复的课程
-     */
-    List<CourseSchedule> findOverLapCoursesInDay(@Param("dates") List<Date> dates,
-                                                 @Param("startClassTime") Date startClassTime,
-                                                 @Param("endClassTime") Date endClassTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/29
-     * 获取班级的声部
-     */
-    String[] findClassSubjects(List<Integer> ids);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 根据id批量获取课程
-     */
-    List<CourseSchedule> findCourseSchedulesByIds(@Param("ids") Long[] ids);
-
-    /**
-     * 获取班级未开始的课程计划
-     *
-     * @param classGroupTeacherMapperList
-     * @return
-     */
-    List<CourseSchedule> findClassGroupNoStartCourseSchedules(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 获取学生上课记录
-     */
-    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleRecords(Map<String, Object> params);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 统计学生上课记录
-     */
-    int countStudentCourseScheduleRecords(Map<String, Object> params);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/30
-     * 获取学生未上课记录
-     */
-    List<StudentCourseScheduleRecordDto> findStudentCourseScheduleNotStartRecords(@Param("userId") Long userId, @Param("date") Date date);
-
-    /**
-     * @return int
-     * @Author: Joburgess
-     * @Date: 2019/10/8
-     * @params [classGroupId]
-     * @describe 统计已上课次
-     */
-    int countClassTimes(@Param("classGroupId") Long classGroupId,
-                        @Param("startClassTime") Date startClassTime);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/17
-     * 获取课程信息
-     */
-    CourseScheduleDto getCourseSchedules(@Param("courseScheduleId") Long courseScheduleId);
-
-    /**
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     * @Author: Joburgess
-     * @Date: 2019/10/14
-     * @params [vipGroupId]
-     * @describe 获取vip课排课计划
-     */
-    List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
-
-    /**
-     * @return java.lang.String
-     * @Author: Joburgess
-     * @Date: 2019/10/16
-     * @params [courseScheduleId]
-     * @describe 获取课程关联班级类型
-     */
-    String findClassTypeByCourse(@Param("courseScheduleId") Long courseScheduleId);
-
-    /**
-     * 根据课程状态查询老师指定月份的VIP课程记录数
-     *
-     * @param monthDate 指定月份
-     * @param status    课程状态
-     * @return
-     */
-    List<Map<Integer, Integer>> queryVipGroupTeachereClassTimesByMonth(@Param("monthDate") Date monthDate, @Param("status") CourseStatusEnum status);
-
-    /**
-     * 查询已完成未更新状态的课程列表
-     *
-     * @return
-     */
-    List<CourseSchedule> queryFinishedWithNoUpdateStatus();
-
-    int batchUpdate(List<CourseSchedule> courseScheduleList);
-
-    /**
-     * 查询提前指定分钟数还未签到的用户
-     *
-     * @param minutes 分钟数
-     * @return
-     */
-    List<CourseSchedule> queryNoSignInListByBeforeMinutes(Integer minutes);
-
-    /**
-     * @param params: 参数
-     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
-     * @describe 查询老师指定班级的排课信息
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<TeacherClassCourseSchudeleDto> queryTeacherClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
-     * @describe 查询老师指定班级历史排课信息
-     * @author Joburgess
-     * @date 2019/10/19
-     */
-    List<TeacherClassCourseSchudeleDto> queryTeacherHistoryClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params: 参数
-     * @return int
-     * @describe 统计老师指定班级的排课数量
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    int countTeacherClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param params:
-     * @return int
-     * @describe 统计历史老师指定班级的排课数量
-     * @author Joburgess
-     * @date 2019/10/19
-     */
-    int countTeacherHistoryClassCourseSchedule(Map<String, Object> params);
-
-    /**
-     * @param musicGroupId: 乐团编号
-     * @return java.util.List<java.util.Map < java.lang.Long, java.lang.Integer>>
-     * @describe 统计乐团下班级的排课数
-     * @author Joburgess
-     * @date 2019/10/18
-     */
-    List<Map<Integer, Long>> countClassCourseNumByMusicGroup(String musicGroupId);
-
-    /**
-     * @param courseSchedules: 课程计划编号列表
-     * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.Integer>>
-     * @describe 根据课程计划获取对应课次
-     * @author Joburgess
-     * @date 2019/10/20
-     */
-    List<Map<Integer, Integer>> findCourseScheduleCurrentTimes(List<Integer> courseSchedules);
-
-    /**
-     * 根据乐团编号修改课程教学点
-     *
-     * @param musicGroupId
-     * @param schoolId
-     */
-    void updateByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("schoolId") Integer schoolId);
-
-    /**
-     * 获取班级某时间后相应节数的课程
-     *
-     * @param classGroupId
-     * @param startDate
-     * @param times
-     * @return
-     */
-    List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") String startDate, @Param("times") int times);
-    
-    /**
-     * 根据时间范围查询老师指定类型的课程列表
-     * @param teacherId 老师编号
-     * @param type 课程类型 (如果为null,查询所有类型)
-     * @param startTime 开始时间
-     * @param endTime 结束时间
-     * @return
-     */
-    List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
-                                                                          @Param("startTime") Date startTime, @Param("endTime") Date endTime);
-
-    /**
-     * 查询班级未开始的课程
-     *
-     * @param classGroupId
-     * @return
-     */
-    List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
-
-    /**
-     * @describe 获取点名详情头部信息
-     * @author Joburgess
-     * @date 2019/10/24
-     * @param courseScheduleId: 课程编号
-     * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
-     */
-    CourseAttendanceDetailHeadInfoDto findByCourse(Long courseScheduleId);
-
-    /**
-     * 获取学员购买的所有乐团和vip编号分页列表
-     * @param params
-     * @return
-     */
-    List<String> queryMusicGroupIds(Map<String, Object> params);
-
-    /**
-     * @describe 获取时间段内的课程
-     * @author Joburgess
-     * @date 2019/10/31
-     * @param startTime: 开始时间
-     * @param endTime: 结束时间
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
-     */
-    List<CourseSchedule> findByDateZone(@Param("startTime") Date startTime,
-                                        @Param("endTime") Date endTime);
+	/**
+	 * 根据教师ID获取当前课程信息
+	 *
+	 * @param courseID
+	 * @return
+	 */
+	TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
+
+	/**
+	 * @param startTime:
+	 * @param endTime:
+	 * @param teacherId:
+	 * @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
+	 * @describe 根据时间区间获取教师上课的课程
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	TeacherAttendanceDto getTeacherCourseByDateSpeed(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("teacherId") Long teacherId);
+
+	int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
+
+	/**
+	 * @describe 批量删除课程计划
+	 * @author Joburgess
+	 * @date 2019/10/31
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return int
+	 */
+	int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @describe 统计教师再指定时间区段内存在冲突的课程数量
+	 * @author Joburgess
+	 * @date 2019/10/28
+	 * @param teacherId: 教师编号
+	 * @param classDate: 上课日期
+	 * @param startTime: 开始时间
+	 * @param endTime: 结束时间
+	 * @return int
+	 */
+	int countExistRepeatInDateZone(@Param("teacherId") Integer teacherId, @Param("classDate") Date classDate, @Param("startTime") Date startTime,
+			@Param("endTime") Date endTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 统计学生所属班级数量
+	 */
+	Integer[] countStudentInClass(List<Integer> classGroupIDs);
+
+	/**
+	 * @describe 根据课程编号列表获取课程列表
+	 * @author Joburgess
+	 * @date 2019/10/22
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 */
+	List<CourseSchedule> findByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @describe 根据课程编号列表获取助教列表
+	 * @author Joburgess
+	 * @date 2019/10/23
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+	 */
+	List<CourseScheduleTeacherSalary> findTeachingTeachers(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 根据日期获取当日排课信息
+	 */
+	List<CourseScheduleDto> getCourseSchedulesWithDate(@Param("classDate") Date classDate);
+
+	/**
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/14
+	 * @params [classDates, classGroupId]
+	 * @describe 根据班级和上课日期获取课程计划
+	 */
+	List<CourseSchedule> findByClassGroupAndDate(@Param("classDates") List<Date> classDates, @Param("classGroupId") Long classGroupId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 根据日期获取学生当日排课信息
+	 */
+	List<CourseScheduleDto> getStudentCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("studentId") Long studentId);
+
+	/**
+	 * @return java.util.List<java.lang.String>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/11
+	 * @params [courseScheduleId]
+	 * @describe 获取课程签到学生姓名
+	 */
+	List<String> findStudentNamesByCourseSchedule(Long courseScheduleId);
+
+	/**
+	 * @param classDate: 上课日期
+	 * @param teacherId: 教师编号
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+	 * @describe 根据日期获取老师当日排课信息
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
+
+	/**
+	 * @param params:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+	 * @describe 根据日期获取排课
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String, Object> params);
+
+	int countCourseSchedulesWithDate(Map<String, Object> params);
+
+	/**
+	 * @param musicGroupID: 乐团编号
+	 * @return int
+	 * @describe 根据乐团ID删除排课
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	int deleteCourseSchedulesByMusicGroupID(@Param("musicGroupID") Long musicGroupID);
+
+	/**
+	 * @param musicGroupID: 乐团编号
+	 * @param month:        月份
+	 * @return java.util.List<java.util.Date>
+	 * @describe 根据月份获取乐团在该月有课的日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getCourseScheduleDateByMonth(@Param("musicGroupID") Long musicGroupID, @Param("month") Date month);
+
+	/**
+	 * @param studentId:
+	 * @param month:
+	 * @param isAttend:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取学生有课日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getStudentCourseScheduleDate(@Param("studentId") Long studentId, @Param("month") Date month, @Param("isAttend") Integer isAttend);
+
+	/**
+	 * @param teacherId:
+	 * @param month:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取教师有课日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
+
+	/**
+	 * @param month:
+	 * @param organId:
+	 * @return java.util.List<java.util.Date>
+	 * @describe 获取当月有课的日期
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Date> getCourseScheduleDate(@Param("month") Date month, @Param("organId") Long organId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/23
+	 * 统计教师在一天内有时间重复的课数
+	 */
+	int countTeacherCourseInOnDayRepeats(CourseSchedule courseSchedule);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据日期获取对应老师的课程
+	 */
+	List<CourseSchedule> findTeacherCoursesInDates(@Param("dates") List<Date> dates, @Param("teacherId") Long teacherId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据日期获取课程
+	 */
+	List<CourseSchedule> findCoursesByDates(@Param("dates") List<Date> dates);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 获取在指定时间段内存在重复的课程
+	 */
+	List<CourseSchedule> findOverLapCoursesInDay(@Param("dates") List<Date> dates, @Param("startClassTime") Date startClassTime,
+			@Param("endClassTime") Date endClassTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/29
+	 * 获取班级的声部
+	 */
+	String[] findClassSubjects(List<Integer> ids);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/24
+	 * 根据id批量获取课程
+	 */
+	List<CourseSchedule> findCourseSchedulesByIds(@Param("ids") Long[] ids);
+
+	/**
+	 * 获取班级未开始的课程计划
+	 *
+	 * @param classGroupTeacherMapperList
+	 * @return
+	 */
+	List<CourseSchedule> findClassGroupNoStartCourseSchedules(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 获取学生上课记录
+	 */
+	List<StudentCourseScheduleRecordDto> findStudentCourseScheduleRecords(Map<String, Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 统计学生上课记录
+	 */
+	int countStudentCourseScheduleRecords(Map<String, Object> params);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/30
+	 * 获取学生未上课记录
+	 */
+	List<StudentCourseScheduleRecordDto> findStudentCourseScheduleNotStartRecords(@Param("userId") Long userId, @Param("date") Date date);
+
+	/**
+	 * @return int
+	 * @Author: Joburgess
+	 * @Date: 2019/10/8
+	 * @params [classGroupId]
+	 * @describe 统计已上课次
+	 */
+	int countClassTimes(@Param("classGroupId") Long classGroupId, @Param("startClassTime") Date startClassTime);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/17
+	 * 获取课程信息
+	 */
+	CourseScheduleDto getCourseSchedules(@Param("courseScheduleId") Long courseScheduleId);
+
+	/**
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 * @Author: Joburgess
+	 * @Date: 2019/10/14
+	 * @params [vipGroupId]
+	 * @describe 获取vip课排课计划
+	 */
+	List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
+
+	/**
+	 * @return java.lang.String
+	 * @Author: Joburgess
+	 * @Date: 2019/10/16
+	 * @params [courseScheduleId]
+	 * @describe 获取课程关联班级类型
+	 */
+	String findClassTypeByCourse(@Param("courseScheduleId") Long courseScheduleId);
+
+	/**
+	 * 根据课程状态查询老师指定月份的VIP课程记录数
+	 *
+	 * @param monthDate 指定月份
+	 * @param status    课程状态
+	 * @return
+	 */
+	List<Map<Integer, Integer>> queryVipGroupTeachereClassTimesByMonth(@Param("monthDate") Date monthDate, @Param("status") CourseStatusEnum status);
+
+	/**
+	 * 查询已完成未更新状态的课程列表
+	 *
+	 * @return
+	 */
+	List<CourseSchedule> queryFinishedWithNoUpdateStatus();
+
+	int batchUpdate(List<CourseSchedule> courseScheduleList);
+
+	/**
+	 * 查询提前指定分钟数还未签到的用户
+	 *
+	 * @param minutes 分钟数
+	 * @return
+	 */
+	List<CourseSchedule> queryNoSignInListByBeforeMinutes(Integer minutes);
+
+	/**
+	 * @param params: 参数
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
+	 * @describe 查询老师指定班级的排课信息
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<TeacherClassCourseSchudeleDto> queryTeacherClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto>
+	 * @describe 查询老师指定班级历史排课信息
+	 * @author Joburgess
+	 * @date 2019/10/19
+	 */
+	List<TeacherClassCourseSchudeleDto> queryTeacherHistoryClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params: 参数
+	 * @return int
+	 * @describe 统计老师指定班级的排课数量
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	int countTeacherClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param params:
+	 * @return int
+	 * @describe 统计历史老师指定班级的排课数量
+	 * @author Joburgess
+	 * @date 2019/10/19
+	 */
+	int countTeacherHistoryClassCourseSchedule(Map<String, Object> params);
+
+	/**
+	 * @param musicGroupId: 乐团编号
+	 * @return java.util.List<java.util.Map < java.lang.Long, java.lang.Integer>>
+	 * @describe 统计乐团下班级的排课数
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 */
+	List<Map<Integer, Long>> countClassCourseNumByMusicGroup(String musicGroupId);
+
+	/**
+	 * @param courseSchedules: 课程计划编号列表
+	 * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.Integer>>
+	 * @describe 根据课程计划获取对应课次
+	 * @author Joburgess
+	 * @date 2019/10/20
+	 */
+	List<Map<Integer, Integer>> findCourseScheduleCurrentTimes(List<Integer> courseSchedules);
+
+	/**
+	 * 根据乐团编号修改课程教学点
+	 *
+	 * @param musicGroupId
+	 * @param schoolId
+	 */
+	void updateByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("schoolId") Integer schoolId);
+
+	/**
+	 * 获取班级某时间后相应节数的课程
+	 *
+	 * @param classGroupId
+	 * @param startDate
+	 * @param times
+	 * @return
+	 */
+	List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") String startDate,
+			@Param("times") int times);
+
+	/**
+	 * 根据时间范围查询老师指定类型的课程列表
+	 * @param teacherId 老师编号
+	 * @param type 课程类型 (如果为null,查询所有类型)
+	 * @param startTime 开始时间
+	 * @param endTime 结束时间
+	 * @return
+	 */
+	List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
+			@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+	/**
+	 * 查询班级未开始的课程
+	 *
+	 * @param classGroupId
+	 * @return
+	 */
+	List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
+
+	/**
+	 * @describe 获取点名详情头部信息
+	 * @author Joburgess
+	 * @date 2019/10/24
+	 * @param courseScheduleId: 课程编号
+	 * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
+	 */
+	CourseAttendanceDetailHeadInfoDto findByCourse(Long courseScheduleId);
+
+	/**
+	 * 获取学员购买的所有乐团和vip编号分页列表
+	 * @param params
+	 * @return
+	 */
+	List<String> queryMusicGroupIds(Map<String, Object> params);
+
+	/**
+	 * @describe 获取时间段内的课程
+	 * @author Joburgess
+	 * @date 2019/10/31
+	 * @param startTime: 开始时间
+	 * @param endTime: 结束时间
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 */
+	List<CourseSchedule> findByDateZone(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+	/**
+	 * 查询用户明天的课程数
+	 * @return
+	 */
+	List<Mapper> queryStudentCoursesTimesOfTomorrow();
+
+	/**
+	 * 查询90分钟内未上的课程
+	 * @return
+	 */
+	List<Mapper> queryNotStartCourseScheduleIn90Mins();
 }
 }

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

@@ -30,4 +30,11 @@ public interface MusicGroupSubjectGoodsGroupDao extends BaseDAO<Long, MusicGroup
      * @return
      * @return
      */
      */
     List<MusicGroupSubjectGoodsGroup> findGoodsGroupByIds(@Param("ids") String ids);
     List<MusicGroupSubjectGoodsGroup> findGoodsGroupByIds(@Param("ids") String ids);
+
+    /**
+     * 删除声部商品打包列表
+     * @param musicGroupId
+     * @return
+     */
+    int delByMusicGroupId(String musicGroupId);
 }
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 package com.ym.mec.biz.dal.dao;
 
 
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 
 
@@ -38,4 +39,18 @@ public interface MusicGroupSubjectPlanDao extends BaseDAO<Integer, MusicGroupSub
      * @param musicOneSubjectClassPlan
      * @param musicOneSubjectClassPlan
      */
      */
     void updateApplyStudentNum(MusicGroupSubjectPlan musicOneSubjectClassPlan);
     void updateApplyStudentNum(MusicGroupSubjectPlan musicOneSubjectClassPlan);
+
+    /**
+     * 删除乐团声部规划
+     * @param musicGroupId
+     * @return
+     */
+    int delByMusicGroupId(String musicGroupId);
+
+    /**
+     * 修改计划招生人数
+     * @param updateExpectedNumDtos
+     * @return
+     */
+    int updateExpectedStudentNum(@Param("updateExpectedNumDtos") List<UpdateExpectedNumDto> updateExpectedNumDtos);
 }
 }

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/Mapper.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.dto;
+
+public class Mapper {
+
+	private Object key;
+	
+	private Object value;
+
+	public Object getKey() {
+		return key;
+	}
+
+	public void setKey(Object key) {
+		this.key = key;
+	}
+
+	public Object getValue() {
+		return value;
+	}
+
+	public void setValue(Object value) {
+		this.value = value;
+	}
+}

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

@@ -25,6 +25,17 @@ public class SubFeeSettingDto {
     @ApiModelProperty(value = "科目关联注册学员",required = false)
     @ApiModelProperty(value = "科目关联注册学员",required = false)
     private List<SubjectRegisterDto> subjectRegisters;
     private List<SubjectRegisterDto> subjectRegisters;
 
 
+    @ApiModelProperty(value = "乐团编号(修改时用)",required = false)
+    private String musicGroupId;
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
     public MusicGroup getMusicGroup() {
     public MusicGroup getMusicGroup() {
         return musicGroup;
         return musicGroup;
     }
     }

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

@@ -7,6 +7,9 @@ import io.swagger.annotations.ApiModelProperty;
  */
  */
 public class SubjectApplyDetailDto {
 public class SubjectApplyDetailDto {
 
 
+    @ApiModelProperty(value = "乐团声部计划编号",required = false)
+    private Integer musicGroupSubjectPlanId;
+
     @ApiModelProperty(value = "科目编号",required = false)
     @ApiModelProperty(value = "科目编号",required = false)
     private Integer subjectId;
     private Integer subjectId;
 
 
@@ -25,6 +28,14 @@ public class SubjectApplyDetailDto {
     @ApiModelProperty(value = "未分班人数",required = false)
     @ApiModelProperty(value = "未分班人数",required = false)
     private Integer notPartClassNum;
     private Integer notPartClassNum;
 
 
+    public Integer getMusicGroupSubjectPlanId() {
+        return musicGroupSubjectPlanId;
+    }
+
+    public void setMusicGroupSubjectPlanId(Integer musicGroupSubjectPlanId) {
+        this.musicGroupSubjectPlanId = musicGroupSubjectPlanId;
+    }
+
     public Integer getNotPartClassNum() {
     public Integer getNotPartClassNum() {
         return notPartClassNum;
         return notPartClassNum;
     }
     }

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/UpdateExpectedNumDto.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class UpdateExpectedNumDto {
+
+    @ApiModelProperty(value = "乐团声部计划编号",required = false)
+    private Integer musicGroupSubjectPlanId;
+
+    @ApiModelProperty(value = "计划招生人数",required = false)
+    private Integer expectedNum;
+
+    public Integer getMusicGroupSubjectPlanId() {
+        return musicGroupSubjectPlanId;
+    }
+
+    public void setMusicGroupSubjectPlanId(Integer musicGroupSubjectPlanId) {
+        this.musicGroupSubjectPlanId = musicGroupSubjectPlanId;
+    }
+
+    public Integer getExpectedNum() {
+        return expectedNum;
+    }
+
+    public void setExpectedNum(Integer expectedNum) {
+        this.expectedNum = expectedNum;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java

@@ -81,7 +81,7 @@ public class MusicGroupStudentFee {
 		this.nextPaymentDate = nextPaymentDate;
 		this.nextPaymentDate = nextPaymentDate;
 		this.continuousAbsenteeismTimes = continuousAbsenteeismTimes;
 		this.continuousAbsenteeismTimes = continuousAbsenteeismTimes;
 		this.temporaryCourseFee = temporaryCourseFee;
 		this.temporaryCourseFee = temporaryCourseFee;
-		this.paymentStatus = PaymentStatus.NON_PAYMENT;
+		this.paymentStatus = PaymentStatus.PAID_COMPLETED;
 	}
 	}
 
 
 	public MusicGroupStudentFee() {
 	public MusicGroupStudentFee() {

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -250,4 +250,14 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      */
      */
     List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId);
     List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId);
 
 
+    /**
+     * 有课提醒
+     * @return
+     */
+    void coursesScheduleRemind();
+    
+    /**
+     * 上课提醒
+     */
+    void studentSignInRemind();
 }
 }

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

@@ -7,10 +7,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
-import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ApprovalStatus;
 import com.ym.mec.biz.dal.entity.ApprovalStatus;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -193,4 +190,17 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 * @return
 	 */
 	 */
 	SubFeeSettingDto findMusicGroupSubjectInfo(String musicGroupId);
 	SubFeeSettingDto findMusicGroupSubjectInfo(String musicGroupId);
+
+	/**
+	 * 修改乐团声部、商品组信息
+	 * @param subFeeSettingDto
+	 */
+	void updateSubjectInfo(SubFeeSettingDto subFeeSettingDto) throws Exception;
+
+	/**
+	 * 修改乐团计划招生人数
+	 * @param updateExpectedNumDtos
+	 * @return
+	 */
+    int updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos);
 }
 }

+ 4 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -2,7 +2,6 @@ package com.ym.mec.biz.service;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.Map;
 import java.util.Map;
-import java.util.Set;
 
 
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -27,7 +26,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param triggerTime 触发时间
 	 * @param triggerTime 触发时间
 	 * @return
 	 * @return
 	 */
 	 */
-	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Set<String> receivers, Date triggerTime,
+	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
 									Integer readStatus, String memo);
 									Integer readStatus, String memo);
 
 
 	/**
 	/**
@@ -41,8 +40,8 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @param args 参数
 	 * @return
 	 * @return
 	 */
 	 */
-	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum messageType, Set<String> receivers, Date triggerTime,
-			Integer readStatus, String url, Object... args);
+	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
+								 Integer readStatus, String url, Object... args);
 
 
 	/**
 	/**
 	 * 发送消息
 	 * 发送消息
@@ -58,7 +57,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @return
 	 * @return
 	 */
 	 */
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
-			String url);
+							String url);
 
 
 	/**
 	/**
 	 * 发送验证码
 	 * 发送验证码

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

@@ -7,7 +7,7 @@ import java.io.InputStream;
 
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

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

@@ -20,7 +20,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;

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

@@ -11,7 +11,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

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

@@ -8,7 +8,7 @@ import com.ym.mec.biz.service.CourseHomeworkTemplateService;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.QueryInfo;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import com.timevale.tgtext.text.pdf.en;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
@@ -16,8 +17,9 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.collections.ListUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -26,6 +28,7 @@ import org.springframework.util.CollectionUtils;
 
 
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
+import java.util.Map.Entry;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.Stream;
 
 
@@ -728,9 +731,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 
 		List<CourseSchedule> list = courseScheduleDao.queryNoSignInListByBeforeMinutes(minutes);
 		List<CourseSchedule> list = courseScheduleDao.queryNoSignInListByBeforeMinutes(minutes);
 
 
-		Set<String> receivers = new HashSet<>();
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
 		for (CourseSchedule sf : list) {
 		for (CourseSchedule sf : list) {
-			receivers.add(sf.getTeacherId() + "");
+			receivers.put(sf.getTeacherId(), sf.getTeacherId() + "");
 		}
 		}
 
 
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_IN_MESSAGE, receivers, null, 0, "");
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_IN_MESSAGE, receivers, null, 0, "");
@@ -824,4 +827,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId) {
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId) {
 		return courseScheduleDao.findNoStartCoursesByClassGroupId(classGroupId);
 		return courseScheduleDao.findNoStartCoursesByClassGroupId(classGroupId);
     }
     }
+
+	@Override
+	public void coursesScheduleRemind() {
+		List<Mapper> mapperList = courseScheduleDao.queryStudentCoursesTimesOfTomorrow();
+		for (Mapper mapper : mapperList) {
+			Integer userId = (Integer) mapper.getKey();
+			Integer size = (Integer) mapper.getValue();
+
+			Map<Integer, String> receivers = new HashMap<Integer, String>();
+			receivers.put(userId, userId + "");
+
+			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_HAVE_COURSE_MESSAGE, receivers, null, 0, "", size);
+		}
+	}
+
+	@Override
+	public void studentSignInRemind() {
+		List<Mapper> mapperList = courseScheduleDao.queryNotStartCourseScheduleIn90Mins();
+		if(mapperList != null && mapperList.size() > 0){
+			for(Mapper mapper : mapperList){
+				Map<Integer, String> receivers = new HashMap<Integer, String>();
+				receivers.put((Integer) mapper.getKey(), mapper.getKey() + "");
+				
+				sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_ATTEND_COURSE_MESSAGE, receivers, null, 0, "", mapper.getValue());
+			}
+		}
+	}
 }
 }

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

@@ -19,7 +19,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;

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

@@ -24,7 +24,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 125 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,17 +1,84 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.dao.ChargeTypeDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CooperationOrganDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
+import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.PayService;
+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.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupMember;
-import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -19,15 +86,6 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
 
 
 @Service
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
@@ -170,6 +228,42 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
     }
 
 
     @Override
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSubjectInfo(SubFeeSettingDto subFeeSettingDto) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("身份校验失败");
+        }
+        String musicGroupId = subFeeSettingDto.getMusicGroupId();
+
+        //乐团状态是否正确
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if(musicGroup != null){
+            if(musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT || musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT){
+                throw new Exception("乐团状态异常");
+            }
+
+            //记录日志信息
+            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"修改乐团计划声部、乐器",sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
+            //删除原有的乐团声部规划
+            musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId);
+            //删除原有的声部商品组合
+            musicGroupSubjectGoodsGroupDao.delByMusicGroupId(subFeeSettingDto.getMusicGroupId());
+
+            musicGroupSubjectPlanDao.batchAdd(subFeeSettingDto.getMusicGroupSubjectPlans(),musicGroupId);
+            musicGroupSubjectGoodsGroupDao.batchInsert(subFeeSettingDto.getMusicGroupSubjectGoodsGroups(),musicGroupId);
+        }else {
+            throw new Exception("乐团信息不存在");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos) {
+        return musicGroupSubjectPlanDao.updateExpectedStudentNum(updateExpectedNumDtos);
+    }
+
+    @Override
     public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
     public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
         List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
         List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
         Set<String> musicGroupIds = musicCardDtos.stream().map(MusicCardDto::getMusicGroupId).collect(Collectors.toSet());
         Set<String> musicGroupIds = musicCardDtos.stream().map(MusicCardDto::getMusicGroupId).collect(Collectors.toSet());
@@ -349,6 +443,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
                 studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
                 studentRegistration.setUpdateTime(date);
                 studentRegistration.setUpdateTime(date);
 
 
+                studentRegistrationService.update(studentRegistration);
+
                 Integer subjectId = studentRegistration.getActualSubjectId();
                 Integer subjectId = studentRegistration.getActualSubjectId();
                 MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
                 MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
                 if (musicGroupSubjectPlan == null) {
                 if (musicGroupSubjectPlan == null) {
@@ -397,6 +493,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         // 退团
         // 退团
         studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
         studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
         studentRegistration.setUpdateTime(date);
         studentRegistration.setUpdateTime(date);
+        
+        studentRegistrationService.update(studentRegistration);
 
 
         Integer subjectId = studentRegistration.getActualSubjectId();
         Integer subjectId = studentRegistration.getActualSubjectId();
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
@@ -494,8 +592,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupStudentFeeDao.update(musicGroupStudentFee);
         musicGroupStudentFeeDao.update(musicGroupStudentFee);
         
         
 		SysUser user = sysUserFeignService.queryUserById(userId);
 		SysUser user = sysUserFeignService.queryUserById(userId);
-		Set<String> receivers = new HashSet<>();
-		receivers.add(userId + "");
+        Map<Integer, String> receivers = new HashMap<Integer, String>();
+        receivers.put(user.getId(), userId + "");
 
 
 		// 发送续费结果通知
 		// 发送续费结果通知
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_MUSIC_GROUP_RENEW_RESULT, receivers, null, 0, "",
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_MUSIC_GROUP_RENEW_RESULT, receivers, null, 0, "",
@@ -654,6 +752,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
     }
 
 
     @Override
     @Override
+    public SubFeeSettingDto findMusicGroupSubjectInfo(String musicGroupId) {
+        SubFeeSettingDto subFeeSettingDto = new SubFeeSettingDto();
+        //获取乐团声部规划列表
+        subFeeSettingDto.setMusicGroupSubjectPlans(musicGroupSubjectPlanDao.getMusicSubjectClassPlan(musicGroupId));
+        //获取乐团声部商品组
+        subFeeSettingDto.setMusicGroupSubjectGoodsGroups(musicGroupSubjectGoodsGroupDao.findGoodsGroup(musicGroupId,null));
+        return subFeeSettingDto;
+    }
+
+    @Override
     public List<MusicGroup> queryListByIds(Set<String> musicGroupIds) {
     public List<MusicGroup> queryListByIds(Set<String> musicGroupIds) {
         return musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds,","));
         return musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds,","));
     }
     }
@@ -725,9 +833,4 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //        String content = sysConfigDao.findConfigValue(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
 //        String content = sysConfigDao.findConfigValue(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
 //        sysMessageService.batchSendMessage(MessageSender.YIMEI,"",content,parentsPhones,date,0,"");
 //        sysMessageService.batchSendMessage(MessageSender.YIMEI,"",content,parentsPhones,date,0,"");
     }
     }
-
-    @Override
-    public SubFeeSettingDto findMusicGroupSubjectInfo(String musicGroupId) {
-        return null;
-    }
 }
 }

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

@@ -57,9 +57,9 @@ public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, Music
 		if (updateList.size() > 0) {
 		if (updateList.size() > 0) {
 			musicGroupStudentFeeDao.batchUpdate(updateList);
 			musicGroupStudentFeeDao.batchUpdate(updateList);
 
 
-			Set<String> receivers = new HashSet<>();
+			Map<Integer, String> receivers = new HashMap<Integer, String>();
 			for (MusicGroupStudentFee sf : updateList) {
 			for (MusicGroupStudentFee sf : updateList) {
-				receivers.add(sf.getUserId() + "");
+				receivers.put(sf.getUserId(), sf.getUserId() + "");
 			}
 			}
 
 
 			// 发送续费通知
 			// 发送续费通知

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

@@ -132,7 +132,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 for (int i = 0; i < subjectIds.length; i++) {
                 for (int i = 0; i < subjectIds.length; i++) {
                     Map<String, Object> resultMap = new HashMap<>(3);
                     Map<String, Object> resultMap = new HashMap<>(3);
                     int subjectId = Integer.parseInt(subjectIds[i]);
                     int subjectId = Integer.parseInt(subjectIds[i]);
-                    List<StudentRegistration> collect = students.stream().filter(e -> e.getSubjectId().equals(subjectId)).collect(Collectors.toList());
+                    List<StudentRegistration> collect = students.stream().filter(e -> e.getActualSubjectId().equals(subjectId)).collect(Collectors.toList());
                     resultMap.put("subjectId", subjectId);
                     resultMap.put("subjectId", subjectId);
                     resultMap.put("subjectName", subjectNameMap.get(subjectId));
                     resultMap.put("subjectName", subjectNameMap.get(subjectId));
                     resultMap.put("rows", collect);
                     resultMap.put("rows", collect);
@@ -444,7 +444,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 }
                 }
                 //新增班级学生关系
                 //新增班级学生关系
                 classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
                 classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
-                //乐团学生费用表
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 //获取当前月
                 //获取当前月
                 Integer month = Integer.parseInt(DateUtil.getMonth(new Date()));
                 Integer month = Integer.parseInt(DateUtil.getMonth(new Date()));

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

@@ -15,7 +15,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;

+ 42 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -1,5 +1,21 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Random;
+
+import org.apache.commons.lang.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.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
@@ -17,15 +33,6 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.string.MessageFormatter;
 import com.ym.mec.util.string.MessageFormatter;
-import org.apache.commons.lang.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.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
 
 
 @Service
 @Service
 public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
 public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
@@ -78,25 +85,31 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	 * @param group 消息组
 	 * @param group 消息组
 	 * @return
 	 * @return
 	 */
 	 */
-	private int addMessage(Set<String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
-			String errorMsg, Integer readStatus, String memo, String group) {
+	private int addMessage(Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
+						   String errorMsg, Integer readStatus, String memo, String group) {
 		SysMessage message = null;
 		SysMessage message = null;
 		Date date = new Date();
 		Date date = new Date();
 
 
 		List<SysMessage> messages = new ArrayList<SysMessage>();
 		List<SysMessage> messages = new ArrayList<SysMessage>();
 
 
 		Integer userId = null;
 		Integer userId = null;
-		for (String phone : receivers) {
+		String receiver;
+		for (Entry<Integer, String> entry : receivers.entrySet()) {
+			userId = entry.getKey();
+			receiver = entry.getValue();
+
 			message = new SysMessage();
 			message = new SysMessage();
-			SysUser user = sysUserFeignService.queryUserByMobile(phone);
-			if (user != null) {
-				userId = user.getId();
+			if (userId == null) {
+				SysUser user = sysUserFeignService.queryUserByMobile(receiver);
+				if (user != null) {
+					userId = user.getId();
+				}
 			}
 			}
 			message.setUserId(userId);
 			message.setUserId(userId);
 			message.setContent(content);
 			message.setContent(content);
 			message.setCreateOn(date);
 			message.setCreateOn(date);
 			message.setModifyOn(date);
 			message.setModifyOn(date);
-			message.setReceiver(phone);
+			message.setReceiver(receiver);
 			if (triggerTime == null) {
 			if (triggerTime == null) {
 				triggerTime = date;
 				triggerTime = date;
 			}
 			}
@@ -122,7 +135,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 
 	@Override
 	@Override
 	@Async
 	@Async
-	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Set<String> receivers, Date triggerTime,
+	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
 									Integer readStatus, String memo) {
 									Integer readStatus, String memo) {
 
 
 		if (receivers == null || receivers.size() == 0) {
 		if (receivers == null || receivers.size() == 0) {
@@ -131,7 +144,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (StringUtils.isBlank(content)) {
 		if (StringUtils.isBlank(content)) {
 			throw new BizException("消息内容不能为空");
 			throw new BizException("消息内容不能为空");
 		}
 		}
-		if (receivers != null && receivers.size() > 0) {
+		String[] tos = receivers.values().toArray(new String[receivers.size()]);
+		if (tos != null && tos.length > 0) {
 			Date date = new Date();
 			Date date = new Date();
 			SendStatusEnum status = SendStatusEnum.WAIT;
 			SendStatusEnum status = SendStatusEnum.WAIT;
 
 
@@ -140,7 +154,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 				// 立即发送
 				// 立即发送
 				if (triggerTime == null || date.after(triggerTime)) {
 				if (triggerTime == null || date.after(triggerTime)) {
 					status = SendStatusEnum.SENDING;
 					status = SendStatusEnum.SENDING;
-					if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, subject, content, receivers.toArray(new String[receivers.size()]), memo)) {
+					if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, subject, content, tos, memo)) {
 						status = SendStatusEnum.SUCCESSED;
 						status = SendStatusEnum.SUCCESSED;
 					} else {
 					} else {
 						status = SendStatusEnum.FAILED;
 						status = SendStatusEnum.FAILED;
@@ -165,13 +179,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 
 	@Override
 	@Override
 	@Async
 	@Async
-	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Set<String> receivers, Date triggerTime, Integer readStatus,
-			String url, Object... args) {
+	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
+								 String url, Object... args) {
 
 
 		if (receivers == null || receivers.size() == 0) {
 		if (receivers == null || receivers.size() == 0) {
 			throw new BizException("接收地址不能为空");
 			throw new BizException("接收地址不能为空");
 		}
 		}
-//		String[] tos = receivers.values().toArray(new String[receivers.size()]);
+		String[] tos = receivers.values().toArray(new String[receivers.size()]);
 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
 		if (messageConfig == null) {
 		if (messageConfig == null) {
 			throw new BizException("消息类型错误");
 			throw new BizException("消息类型错误");
@@ -185,7 +199,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			try {
 			try {
 				if (debugMode == true
 				if (debugMode == true
 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
-								MessageFormatter.arrayFormat(messageConfig.getContent(), args),receivers.toArray(new String[receivers.size()]) , url)) {
+						MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url)) {
 					status = SendStatusEnum.SUCCESSED;
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 				} else {
 					status = SendStatusEnum.FAILED;
 					status = SendStatusEnum.FAILED;
@@ -209,7 +223,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	@Override
 	@Override
 	@Async
 	@Async
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
 	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
-			String url) {
+							String url) {
 		if (StringUtils.isBlank(receiver)) {
 		if (StringUtils.isBlank(receiver)) {
 			throw new BizException("接收地址不能为空");
 			throw new BizException("接收地址不能为空");
 		}
 		}
@@ -237,8 +251,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		} else if (messageSender.getSendMode().equals("EMAIL")) {
 		} else if (messageSender.getSendMode().equals("EMAIL")) {
 			mode = MessageSendMode.EMAIL;
 			mode = MessageSendMode.EMAIL;
 		}
 		}
-		Set<String> receivers = new HashSet<>();
-		receivers.add(receiver);
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
+		receivers.put(userId, receiver);
 		addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null);
 		addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null);
 	}
 	}
 
 
@@ -254,8 +268,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (debugMode == false) {
 		if (debugMode == false) {
 			code = getRandomCode(messageType, receiver);
 			code = getRandomCode(messageType, receiver);
 		}
 		}
-		Set<String> receivers = new HashSet<>();
-		receivers.add(receiver);
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
+		receivers.put(userId, receiver);
 		batchSendMessage(messageSender, messageType, receivers, null, 1, "", code);
 		batchSendMessage(messageSender, messageType, receivers, null, 1, "", code);
 		redisCache.put(key, code, CODE_EXPIRE);
 		redisCache.put(key, code, CODE_EXPIRE);
 		redisCache.put(key1, code, CODE_INTERVAL_TIME);
 		redisCache.put(key1, code, CODE_INTERVAL_TIME);

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

@@ -23,7 +23,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -185,9 +185,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 
 		List<TeacherAttendance> list = teacherAttendanceDao.queryNoSignOutListByOverMinutes(minutes);
 		List<TeacherAttendance> list = teacherAttendanceDao.queryNoSignOutListByOverMinutes(minutes);
 
 
-		Set<String> receivers = new HashSet<>();
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
 		for (TeacherAttendance sf : list) {
 		for (TeacherAttendance sf : list) {
-			receivers.add(sf.getTeacherId() + "");
+			receivers.put(sf.getTeacherId(), sf.getTeacherId() + "");
 		}
 		}
 
 
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_OUT_MESSAGE, receivers, null, 0, "");
 		sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_OUT_MESSAGE, receivers, null, 0, "");

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

@@ -12,7 +12,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.json.JsonUtil;
 import com.ym.mec.util.json.JsonUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;

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

@@ -17,7 +17,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;

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

@@ -25,6 +25,11 @@
         <result column="leave_student_num_" property="leaveStudentNum"/>
         <result column="leave_student_num_" property="leaveStudentNum"/>
         <result column="schoole_id_" property="schoolId"/>
         <result column="schoole_id_" property="schoolId"/>
     </resultMap>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
+    	<result column="key_" property="key"/>
+    	<result column="value_" property="value"/>
+    </resultMap>
 
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
     <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
         <result column="teacher_name_" property="teacherName"/>
         <result column="teacher_name_" property="teacherName"/>
@@ -1091,4 +1096,12 @@
             WHERE cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d')
             WHERE cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d')
             AND csts.teacher_role_='BISHOP'
             AND csts.teacher_role_='BISHOP'
     </select>
     </select>
+    
+    <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
+    	select cssp.user_id_ key_,count(1) value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by cssp.user_id_
+    </select>
+    
+    <select id="queryNotStartCourseScheduleIn90Mins" resultMap="Mapper">
+    	select cssp.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 90 MINUTE) and cs.status_ = 'NOT_START'
+    </select>
 </mapper>
 </mapper>

+ 8 - 3
mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectGoodsGroupMapper.xml

@@ -78,8 +78,10 @@
 
 
     <!-- 根据主键删除一条记录 -->
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
     <delete id="delete">
-        DELETE FROM music_group_subject_goods_group
-        WHERE id_ = #{id}
+        DELETE FROM music_group_subject_goods_group WHERE id_ = #{id}
+    </delete>
+    <delete id="delByMusicGroupId">
+        DELETE FROM music_group_subject_goods_group WHERE music_group_id_ = #{musicGroupId}
     </delete>
     </delete>
 
 
     <!-- 分页查询 -->
     <!-- 分页查询 -->
@@ -103,7 +105,10 @@
         g_complement_goods_id_list_
         g_complement_goods_id_list_
         FROM music_group_subject_goods_group mgs,goods g
         FROM music_group_subject_goods_group mgs,goods g
         WHERE FIND_IN_SET (g.id_ ,mgs.goods_id_list_)
         WHERE FIND_IN_SET (g.id_ ,mgs.goods_id_list_)
-        AND mgs.music_group_id_ = #{musicGroupId} AND mgs.subject_id_ = #{subId}
+        AND mgs.music_group_id_ = #{musicGroupId}
+        <if test="subId != null">
+            AND mgs.subject_id_ = #{subId}
+        </if>
     </select>
     </select>
 
 
     <!-- 根据ids获取对应分组商品 -->
     <!-- 根据ids获取对应分组商品 -->

+ 14 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml

@@ -103,11 +103,25 @@
         WHERE id_ = #{id} AND version =#{version}
         WHERE id_ = #{id} AND version =#{version}
     </update>
     </update>
 
 
+    <update id="updateExpectedStudentNum">
+        <foreach collection="updateExpectedNumDtos" item="item" index="index" open="" close="" separator=";">
+            UPDATE music_group_subject_plan
+            <set>
+                expected_student_num_ = #{item.expectedNum}
+            </set>
+            where id_ = #{item.musicGroupSubjectPlanId}
+        </foreach>
+    </update>
+
     <!-- 根据主键删除一条记录 -->
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
     <delete id="delete">
         DELETE FROM music_group_subject_plan WHERE id_ = #{id}
         DELETE FROM music_group_subject_plan WHERE id_ = #{id}
     </delete>
     </delete>
 
 
+    <delete id="delByMusicGroupId">
+        DELETE FROM music_group_subject_plan WHERE music_group_id_=#{musicGroupId}
+    </delete>
+
     <!-- 分页查询 -->
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="MusicGroupSubjectPlan" parameterType="map">
     <select id="queryPage" resultMap="MusicGroupSubjectPlan" parameterType="map">
         SELECT * FROM music_group_subject_plan ORDER BY id_
         SELECT * FROM music_group_subject_plan ORDER BY id_

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

@@ -379,6 +379,7 @@
         <result property="userId" column="user_id_"/>
         <result property="userId" column="user_id_"/>
         <result property="realName" column="real_name_"/>
         <result property="realName" column="real_name_"/>
         <result property="phone" column="parents_phone_"/>
         <result property="phone" column="parents_phone_"/>
+        <result property="gender" column="gender_"/>
         <result property="currentGrade" column="current_grade_"/>
         <result property="currentGrade" column="current_grade_"/>
         <result property="currentClass" column="current_class_"/>
         <result property="currentClass" column="current_class_"/>
         <result property="subjectName" column="subject_name_"/>
         <result property="subjectName" column="subject_name_"/>
@@ -389,7 +390,8 @@
     </resultMap>
     </resultMap>
     <select id="queryMusicGroupStudent" resultMap="MusicGroupStudentsDto">
     <select id="queryMusicGroupStudent" resultMap="MusicGroupStudentsDto">
         SELECT sr.user_id_,su.real_name_,su.gender_,sr.parents_phone_,sr.current_grade_,
         SELECT sr.user_id_,su.real_name_,su.gender_,sr.parents_phone_,sr.current_grade_,
-        sr.current_class_,sr.music_group_status_,mgsf.payment_status_,s.name_ subject_name_,sr.music_group_id_,
+        sr.current_class_,sr.music_group_status_,IF(mgsf.payment_status_ IS NULL,'NON_PAYMENT',mgsf.payment_status_) payment_status_,
+        s.name_ subject_name_,sr.music_group_id_,
         IF(sr.create_time_ > mg.payment_expire_date_,1,0) is_new_student_
         IF(sr.create_time_ > mg.payment_expire_date_,1,0) is_new_student_
         FROM student_registration sr
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_

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

@@ -407,6 +407,15 @@
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 
+    <insert id="insertBasic" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
+        INSERT INTO student_registration
+        (parents_phone_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,
+        create_time_,update_time_,parents_name_,payment_status_,actual_subject_id_,music_group_status_)
+        VALUES (#{parentsPhone},#{userId},#{name},#{musicGroupId},#{currentGrade},#{currentClass},#{subjectId},
+            now(),now(),#{parentsName},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subjectId},
+            #{musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+    </insert>
+
     <!-- 查询乐团userIdList的学生 -->
     <!-- 查询乐团userIdList的学生 -->
     <select id="findStudentListByUserIdList" resultMap="StudentRegistration">
     <select id="findStudentListByUserIdList" resultMap="StudentRegistration">
         SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ IN
         SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ IN

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

@@ -105,11 +105,12 @@
         <result column="name_" property="subjectName"/>
         <result column="name_" property="subjectName"/>
         <result column="subject_id_" property="subjectId"/>
         <result column="subject_id_" property="subjectId"/>
         <result column="expected_student_num_" property="expectedStudentNum"/>
         <result column="expected_student_num_" property="expectedStudentNum"/>
+        <result column="music_group_subject_plan_id_" property="musicGroupSubjectPlanId"/>
         <result column="apply_student_num_" property="applyStudentNum"/>
         <result column="apply_student_num_" property="applyStudentNum"/>
         <result column="not_part_class_num_" property="notPartClassNum"/>
         <result column="not_part_class_num_" property="notPartClassNum"/>
     </resultMap>
     </resultMap>
     <select id="findSubApplyDetail" resultMap="subApplyDetail">
     <select id="findSubApplyDetail" resultMap="subApplyDetail">
-        SELECT mgsp.subject_id_,s.name_,mgsp.expected_student_num_
+        SELECT mgsp.subject_id_,s.name_,mgsp.expected_student_num_,mgsp.id_ music_group_subject_plan_id_
         FROM music_group_subject_plan mgsp
         FROM music_group_subject_plan mgsp
         LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
         LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
         WHERE mgsp.music_group_id_ = #{musicGroupId} AND s.del_flag_ = 0
         WHERE mgsp.music_group_id_ = #{musicGroupId} AND s.del_flag_ = 0

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

@@ -29,4 +29,12 @@ public interface TaskRemoteService {
 	@GetMapping("task/vipGroupTeacherSalarySettlement")
 	@GetMapping("task/vipGroupTeacherSalarySettlement")
 	// vip课课酬结算
 	// vip课课酬结算
 	public void vipGroupTeacherSalarySettlement();
 	public void vipGroupTeacherSalarySettlement();
+	
+	@GetMapping("task/coursesScheduleRemind")
+	// vip课课酬结算
+	public void coursesScheduleRemind();
+	
+	@GetMapping("task/studentSignInRemind")
+	// vip课课酬结算
+	public void studentSignInRemind();
 }
 }

+ 10 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -42,4 +42,14 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 		logger.info("vip课课酬结算的服务调用失败");
 		logger.info("vip课课酬结算的服务调用失败");
 	}
 	}
 
 
+	@Override
+	public void coursesScheduleRemind() {
+		logger.info("有课提醒的服务调用失败");
+	}
+
+	@Override
+	public void studentSignInRemind() {
+		logger.info("上课提醒的服务调用失败");
+	}
+
 }
 }

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java

@@ -5,7 +5,7 @@ import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Date;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.HttpOutputMessage;
 import org.springframework.http.HttpOutputMessage;
 import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotReadableException;

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/config/RequestHeaderConfiguration.java

@@ -2,7 +2,7 @@ package com.ym.mec.common.config;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 

+ 1 - 1
mec-im/src/main/java/com/ym/utils/IdentifierUtils.java

@@ -3,7 +3,7 @@ package com.ym.utils;
 /**
 /**
  * Created by weiqinxiao on 2019/2/25.
  * Created by weiqinxiao on 2019/2/25.
  */
  */
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 
 
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 import java.util.Base64;
 import java.util.Base64;

+ 1 - 1
mec-im/src/main/java/com/ym/utils/SecurityUtils.java

@@ -1,6 +1,6 @@
 package com.ym.utils;
 package com.ym.utils;
 
 
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 
 
 import javax.crypto.*;
 import javax.crypto.*;
 import javax.crypto.spec.SecretKeySpec;
 import javax.crypto.spec.SecretKeySpec;

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

@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiParam;
 
 
 import java.util.Date;
 import java.util.Date;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;

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

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiOperation;
 
 
 import java.io.IOException;
 import java.io.IOException;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;

+ 18 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/CoursesScheduleRemaindTask.java

@@ -0,0 +1,18 @@
+package com.ym.mec.task.jobs;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+
+public class CoursesScheduleRemaindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.coursesScheduleRemind();
+	}
+}

+ 18 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentSignInRemaindTask.java

@@ -0,0 +1,18 @@
+package com.ym.mec.task.jobs;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+
+public class StudentSignInRemaindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.studentSignInRemind();
+	}
+}

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiOperation;
 
 
 import java.io.IOException;
 import java.io.IOException;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -13,7 +13,7 @@ import com.ym.mec.util.upload.UploadUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java

@@ -4,7 +4,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashMap;
 
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 1 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/MOxintongSMSPlugin.java

@@ -4,7 +4,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 1 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/ShiyuanSMSPlugin.java

@@ -4,7 +4,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/H5.java

@@ -15,8 +15,8 @@ import javax.crypto.spec.SecretKeySpec;
 
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPost;

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/Mp.java

@@ -3,8 +3,8 @@ package com.ym.mec.thirdparty.union;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 
 
 import javax.crypto.Mac;
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.crypto.spec.SecretKeySpec;

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/union/UnionPay.java

@@ -3,8 +3,8 @@ package com.ym.mec.thirdparty.union;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
 import javax.crypto.Mac;
 import javax.crypto.Mac;

+ 1 - 1
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -1,6 +1,6 @@
 package com.ym.mec.util.date;
 package com.ym.mec.util.date;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;

+ 1 - 1
mec-util/src/main/java/com/ym/mec/util/http/HttpUtil.java

@@ -16,7 +16,7 @@ import java.util.Map.Entry;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.NameValuePair;

+ 1 - 1
mec-util/src/main/java/com/ym/mec/util/upload/UploadUtil.java

@@ -11,7 +11,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 
 import com.ym.mec.util.codec.NumEncodeUtil;
 import com.ym.mec.util.codec.NumEncodeUtil;
 import com.ym.mec.util.exception.UtilException;
 import com.ym.mec.util.exception.UtilException;

+ 1 - 1
mec-util/src/main/java/com/ym/mec/util/validator/CommonValidator.java

@@ -3,7 +3,7 @@ package com.ym.mec.util.validator;
 import java.util.regex.Matcher;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 
 /**
 /**
  * 常用验证类,如邮箱,手机格式验证
  * 常用验证类,如邮箱,手机格式验证

+ 20 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -1,11 +1,13 @@
 package com.ym.mec.web.controller;
 package com.ym.mec.web.controller;
 
 
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -62,6 +64,24 @@ public class MusicGroupController extends BaseController {
 		return succeed(musicGroupService.findMusicGroupSubjectInfo(musicGroupId));
 		return succeed(musicGroupService.findMusicGroupSubjectInfo(musicGroupId));
 	}
 	}
 
 
+	@ApiOperation(value = "修改乐团声部信息")
+	@PostMapping("/updateSubjectInfo")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/updateSubjectInfo')")
+	public Object updateSubjectInfo(@RequestBody SubFeeSettingDto subFeeSettingDto) throws Exception {
+		musicGroupService.updateSubjectInfo(subFeeSettingDto);
+		return succeed();
+	}
+
+	@ApiOperation(value = "修改乐团计划招生人数")
+	@PostMapping("/updateExpectedStudentNum")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/updateExpectedStudentNum')")
+	public Object updateExpectedStudentNum(@RequestBody List<UpdateExpectedNumDto> updateExpectedNumDtos){
+		if(updateExpectedNumDtos == null || updateExpectedNumDtos.size() <= 0){
+			return failed("参数校验错误");
+		}
+		return succeed(musicGroupService.updateExpectedStudentNum(updateExpectedNumDtos));
+	}
+
 	@ApiOperation(value = "根据乐团编号查询乐团详情")
 	@ApiOperation(value = "根据乐团编号查询乐团详情")
 	@GetMapping("/get")
 	@GetMapping("/get")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/get')")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/get')")

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

@@ -8,7 +8,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;

+ 12 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -66,4 +66,16 @@ public class TaskController extends BaseController {
 	public void pushNoSignOutMessage() {
 	public void pushNoSignOutMessage() {
 		teacherAttendanceService.pushNoSignOutMessage();
 		teacherAttendanceService.pushNoSignOutMessage();
 	}
 	}
+
+	@GetMapping("/coursesScheduleRemind")
+	// 有课提醒
+	public void coursesScheduleRemind() {
+		courseScheduleService.coursesScheduleRemind();
+	}
+
+	@GetMapping("/studentSignInRemind")
+	// 上课提醒
+	public void studentSignInRemind() {
+		courseScheduleService.studentSignInRemind();
+	}
 }
 }

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

@@ -3,7 +3,7 @@ package com.ym.mec.web.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/OrderController.java

@@ -4,7 +4,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.access.QueryFilter;

+ 1 - 1
mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/ProcessController.java

@@ -20,7 +20,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.access.QueryFilter;

+ 1 - 1
mec-workflow/src/main/java/com/ym/mec/workfow/controller/flow/TaskController.java

@@ -5,7 +5,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.access.QueryFilter;