瀏覽代碼

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父節點
當前提交
698f384db6
共有 62 個文件被更改,包括 945 次插入545 次删除
  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.service.impl.BaseServiceImpl;
 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.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;
 
+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.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 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.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 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> {
 
-    /**
-     * 根据教师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
      */
     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;
 
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import com.ym.mec.common.dal.BaseDAO;
 
@@ -38,4 +39,18 @@ public interface MusicGroupSubjectPlanDao extends BaseDAO<Integer, MusicGroupSub
      * @param 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)
     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() {
         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 {
 
+    @ApiModelProperty(value = "乐团声部计划编号",required = false)
+    private Integer musicGroupSubjectPlanId;
+
     @ApiModelProperty(value = "科目编号",required = false)
     private Integer subjectId;
 
@@ -25,6 +28,14 @@ public class SubjectApplyDetailDto {
     @ApiModelProperty(value = "未分班人数",required = false)
     private Integer notPartClassNum;
 
+    public Integer getMusicGroupSubjectPlanId() {
+        return musicGroupSubjectPlanId;
+    }
+
+    public void setMusicGroupSubjectPlanId(Integer musicGroupSubjectPlanId) {
+        this.musicGroupSubjectPlanId = musicGroupSubjectPlanId;
+    }
+
     public Integer getNotPartClassNum() {
         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.continuousAbsenteeismTimes = continuousAbsenteeismTimes;
 		this.temporaryCourseFee = temporaryCourseFee;
-		this.paymentStatus = PaymentStatus.NON_PAYMENT;
+		this.paymentStatus = PaymentStatus.PAID_COMPLETED;
 	}
 
 	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);
 
+    /**
+     * 有课提醒
+     * @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 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.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -193,4 +190,17 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	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.Map;
-import java.util.Set;
 
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -27,7 +26,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param triggerTime 触发时间
 	 * @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);
 
 	/**
@@ -41,8 +40,8 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @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
 	 */
 	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.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.Value;
 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.util.collection.MapUtil;
 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.stereotype.Service;
 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 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.Value;
 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.QueryInfo;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 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;
 
+import com.timevale.tgtext.text.pdf.en;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 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.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 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.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,6 +28,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.Map.Entry;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -728,9 +731,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		List<CourseSchedule> list = courseScheduleDao.queryNoSignInListByBeforeMinutes(minutes);
 
-		Set<String> receivers = new HashSet<>();
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
 		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, "");
@@ -824,4 +827,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer 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.util.collection.MapUtil;
 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.stereotype.Service;
 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.im.ImFeignService;
 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.security.crypto.bcrypt.BCryptPasswordEncoder;
 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;
 
+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.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.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.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.entity.ImGroupMember;
-import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 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.util.collection.MapUtil;
 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
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
@@ -170,6 +228,42 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @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) {
         List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
         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.setUpdateTime(date);
 
+                studentRegistrationService.update(studentRegistration);
+
                 Integer subjectId = studentRegistration.getActualSubjectId();
                 MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
                 if (musicGroupSubjectPlan == null) {
@@ -397,6 +493,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         // 退团
         studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
         studentRegistration.setUpdateTime(date);
+        
+        studentRegistrationService.update(studentRegistration);
 
         Integer subjectId = studentRegistration.getActualSubjectId();
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
@@ -494,8 +592,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupStudentFeeDao.update(musicGroupStudentFee);
         
 		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, "",
@@ -654,6 +752,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @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) {
         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());
 //        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) {
 			musicGroupStudentFeeDao.batchUpdate(updateList);
 
-			Set<String> receivers = new HashSet<>();
+			Map<Integer, String> receivers = new HashMap<Integer, String>();
 			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++) {
                     Map<String, Object> resultMap = new HashMap<>(3);
                     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("subjectName", subjectNameMap.get(subjectId));
                     resultMap.put("rows", collect);
@@ -444,7 +444,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 }
                 //新增班级学生关系
                 classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
-                //乐团学生费用表
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 //获取当前月
                 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.service.impl.BaseServiceImpl;
 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.stereotype.Service;
 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;
 
+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.entity.SysUser;
 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.MessageSender;
 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
 public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
@@ -78,25 +85,31 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	 * @param group 消息组
 	 * @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;
 		Date date = new Date();
 
 		List<SysMessage> messages = new ArrayList<SysMessage>();
 
 		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();
-			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.setContent(content);
 			message.setCreateOn(date);
 			message.setModifyOn(date);
-			message.setReceiver(phone);
+			message.setReceiver(receiver);
 			if (triggerTime == null) {
 				triggerTime = date;
 			}
@@ -122,7 +135,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@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) {
 
 		if (receivers == null || receivers.size() == 0) {
@@ -131,7 +144,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (StringUtils.isBlank(content)) {
 			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();
 			SendStatusEnum status = SendStatusEnum.WAIT;
 
@@ -140,7 +154,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 				// 立即发送
 				if (triggerTime == null || date.after(triggerTime)) {
 					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;
 					} else {
 						status = SendStatusEnum.FAILED;
@@ -165,13 +179,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@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) {
 			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);
 		if (messageConfig == null) {
 			throw new BizException("消息类型错误");
@@ -185,7 +199,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			try {
 				if (debugMode == true
 						|| 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;
 				} else {
 					status = SendStatusEnum.FAILED;
@@ -209,7 +223,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	@Override
 	@Async
 	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)) {
 			throw new BizException("接收地址不能为空");
 		}
@@ -237,8 +251,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		} else if (messageSender.getSendMode().equals("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);
 	}
 
@@ -254,8 +268,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (debugMode == false) {
 			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);
 		redisCache.put(key, code, CODE_EXPIRE);
 		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.util.collection.MapUtil;
 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.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -185,9 +185,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		List<TeacherAttendance> list = teacherAttendanceDao.queryNoSignOutListByOverMinutes(minutes);
 
-		Set<String> receivers = new HashSet<>();
+		Map<Integer, String> receivers = new HashMap<Integer, String>();
 		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, "");

+ 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.util.date.DateUtil;
 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.stereotype.Service;
 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.util.collection.MapUtil;
 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.stereotype.Service;
 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="schoole_id_" property="schoolId"/>
     </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">
         <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')
             AND csts.teacher_role_='BISHOP'
     </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>

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

@@ -78,8 +78,10 @@
 
     <!-- 根据主键删除一条记录 -->
     <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>
 
     <!-- 分页查询 -->
@@ -103,7 +105,10 @@
         g_complement_goods_id_list_
         FROM music_group_subject_goods_group mgs,goods g
         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>
 
     <!-- 根据ids获取对应分组商品 -->

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

@@ -103,11 +103,25 @@
         WHERE id_ = #{id} AND version =#{version}
     </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 FROM music_group_subject_plan WHERE id_ = #{id}
     </delete>
 
+    <delete id="delByMusicGroupId">
+        DELETE FROM music_group_subject_plan WHERE music_group_id_=#{musicGroupId}
+    </delete>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="MusicGroupSubjectPlan" parameterType="map">
         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="realName" column="real_name_"/>
         <result property="phone" column="parents_phone_"/>
+        <result property="gender" column="gender_"/>
         <result property="currentGrade" column="current_grade_"/>
         <result property="currentClass" column="current_class_"/>
         <result property="subjectName" column="subject_name_"/>
@@ -389,7 +390,8 @@
     </resultMap>
     <select id="queryMusicGroupStudent" resultMap="MusicGroupStudentsDto">
         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_
         FROM student_registration sr
         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>
     </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的学生 -->
     <select id="findStudentListByUserIdList" resultMap="StudentRegistration">
         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="subject_id_" property="subjectId"/>
         <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="not_part_class_num_" property="notPartClassNum"/>
     </resultMap>
     <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
         LEFT JOIN `subject` s ON mgsp.subject_id_ = s.id_
         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")
 	// vip课课酬结算
 	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课课酬结算的服务调用失败");
 	}
 
+	@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.util.Date;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.HttpOutputMessage;
 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 org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 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.
  */
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 
 import java.nio.ByteBuffer;
 import java.util.Base64;

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

@@ -1,6 +1,6 @@
 package com.ym.utils;
 
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 
 import javax.crypto.*;
 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 org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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 org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 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 org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 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.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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 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.annotation.Value;
 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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 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.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.client.methods.CloseableHttpResponse;
 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 org.apache.commons.codec.binary.Base64;
 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.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 org.apache.commons.codec.binary.Base64;
 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 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;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.text.ParseException;
 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.io.FileUtils;
 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.HttpResponse;
 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 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.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.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;
 
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
@@ -62,6 +64,24 @@ public class MusicGroupController extends BaseController {
 		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 = "根据乐团编号查询乐团详情")
 	@GetMapping("/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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 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() {
 		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.ApiParam;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 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.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.snaker.engine.SnakerEngine;
 import org.snaker.engine.access.Page;
 import org.snaker.engine.access.QueryFilter;