瀏覽代碼

Merge remote-tracking branch 'origin/master'

周箭河 5 年之前
父節點
當前提交
85fd0389a1
共有 47 個文件被更改,包括 694 次插入272 次删除
  1. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseHomeworkDao.java
  2. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  4. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  5. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java
  6. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java
  7. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  8. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/UpdateExpectedNumDto.java
  9. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java
  10. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  11. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  12. 2 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java
  13. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SalarySettlementTypeEnum.java
  14. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  16. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  17. 22 4
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  18. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  19. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java
  20. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  21. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  22. 40 30
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  23. 37 60
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  24. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  25. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  26. 144 79
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  27. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  28. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkReplyServiceImpl.java
  29. 35 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  30. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  31. 6 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  32. 4 1
      mec-biz/src/main/resources/config/contracts/courses.ftl
  33. 37 19
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  34. 16 4
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  35. 22 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  36. 6 6
      mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml
  37. 9 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  38. 11 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  39. 8 1
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  40. 8 4
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  41. 6 1
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  42. 2 2
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentCoursesScheduleRemaindTask.java
  43. 34 5
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  44. 18 4
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSubjectPlanController.java
  45. 15 5
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  46. 2 3
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java
  47. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherLeaveRecordController.java

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseHomeworkDao.java

@@ -29,6 +29,6 @@ public interface CourseHomeworkDao extends BaseDAO<Long, CourseHomework> {
      * @return com.ym.mec.biz.dal.entity.CourseHomework
      */
     CourseHomework findByTeacherAndCourseHomewok(@Param("courseHomeworkId") Long courseHomeworkId,
-                                                 @Param("userId") Long userId);
+                                                 @Param("userId") Integer userId);
 
 }

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

@@ -458,5 +458,21 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 	 */
 	List<IntegerAndIntegerListDto> findCourseScheduleIdAndUserIdsMap(@Param("courseScheduleIds") List<Integer> courseScheduleIds);
 
+	/**
+	 * @describe 获取班级编号和与之对应的教师编号列表
+	 * @author Joburgess
+	 * @date 2019/11/3
+	 * @param classGroup: 班级编号列表
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto>
+	 */
+	List<IntegerAndIntegerListDto> findClassGroupAndUserIdsMap(@Param("classGroupIds") List<Integer> classGroup);
 
+	/**
+	 * @describe 获取指定日期的课程
+	 * @author Joburgess
+	 * @date 2019/11/3
+	 * @param date: 日期
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 */
+	List<CourseSchedule> findCourseScheduleWithDate(@Param("date") Date date);
 }

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -7,6 +7,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -45,7 +46,7 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
      * @Date: 2019/10/15
      * @params [days:天数]
      * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary>
-     * @describe 获取多少天之前的未结算教师课酬记录
+     * @describe 获取多少天之前的未结算教师课酬记录(vip课)
      */
     List<CourseScheduleTeacherSalary> findSomeDayAgoTeacherCourseSalaryNoSettlement(Integer days);
 
@@ -100,6 +101,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	List<Map<String,String>> findMusicGroupSettlementTypeByCourse(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
 	/**
+	 * @describe 根据课程获取对应乐团的收费类型
+	 * @author Joburgess
+	 * @date 2019/11/3
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<java.util.Map<java.lang.String,java.lang.Integer>>
+	 */
+	List<Map<String,Integer>> findMusicGroupChargeTypeByCourse(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
 	 * @describe 根据课程获取对应的教学点补贴
 	 * @author Joburgess
 	 * @date 2019/10/24

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -103,4 +103,13 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicGroup> queryListByIds(@Param("musicGroupIds") String musicGroupIds);
-}
+
+    /**
+     * @describe 根据乐团获取对应的结算方式
+     * @author Joburgess
+     * @date 2019/11/3
+     * @param musicGroupIds: 乐团编号列表
+     * @return java.util.List<java.util.Map<java.lang.String,java.lang.String>>
+     */
+    List<Map<String,String>> findSettlementTypeByMusicGroups(@Param("musicGroupIds") List<String> musicGroupIds);
+}

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java

@@ -49,8 +49,16 @@ public interface MusicGroupSubjectPlanDao extends BaseDAO<Integer, MusicGroupSub
 
     /**
      * 修改计划招生人数
-     * @param updateExpectedNumDtos
+     * @param expectedStudentNum
+     * @param musicGroupSubjectPlanId
      * @return
      */
-    int updateExpectedStudentNum(@Param("updateExpectedNumDtos") List<UpdateExpectedNumDto> updateExpectedNumDtos);
+    int updateExpectedStudentNum(@Param("expectedStudentNum") Integer expectedStudentNum,@Param("musicGroupSubjectPlanId") Integer musicGroupSubjectPlanId);
+
+    /**
+     *
+     * @param musicGroupSubjectPlans
+     * @return
+     */
+    int batchUpdateFee(@Param("plans") List<MusicGroupSubjectPlan> musicGroupSubjectPlans);
 }

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java

@@ -60,6 +60,11 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
      * @return com.ym.mec.biz.dal.entity.StudentCourseHomework
      */
     StudentCourseHomework findByStudentAndCourseHomewok(@Param("courseHomeworkId") Long courseHomeworkId,
-                                                        @Param("userId") Long userId);
+                                                        @Param("userId") Integer userId);
 	
+    /**
+     * 查询未完成的课程作业
+     * @return
+     */
+    List<StudentCourseHomework> queryNotDoneHomeworkList();
 }

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

@@ -204,4 +204,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     List<Map<Long, Long>> countApplyNum(String musicGroupId);
+
+    /**
+     * 根据家长手机号获取用户编号
+     * @param parentPhones
+     * @return
+     */
+    List<Map<Integer, String>> findParentId(String parentPhones);
 }

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

@@ -8,7 +8,7 @@ public class UpdateExpectedNumDto {
     private Integer musicGroupSubjectPlanId;
 
     @ApiModelProperty(value = "计划招生人数",required = false)
-    private Integer expectedNum;
+    private Integer expectedStudentNum;
 
     public Integer getMusicGroupSubjectPlanId() {
         return musicGroupSubjectPlanId;
@@ -18,11 +18,11 @@ public class UpdateExpectedNumDto {
         this.musicGroupSubjectPlanId = musicGroupSubjectPlanId;
     }
 
-    public Integer getExpectedNum() {
-        return expectedNum;
+    public Integer getExpectedStudentNum() {
+        return expectedStudentNum;
     }
 
-    public void setExpectedNum(Integer expectedNum) {
-        this.expectedNum = expectedNum;
+    public void setExpectedStudentNum(Integer expectedStudentNum) {
+        this.expectedStudentNum = expectedStudentNum;
     }
 }

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.util.Date;
@@ -34,8 +35,12 @@ public class CourseHomework {
 	/**  */
 	private String musicGroupId;
 	
+	private MusicGroup musicGroup = new MusicGroup();
+	
 	/**  */
 	private Integer classGroupId;
+	
+	private ClassGroup classGroup = new ClassGroup();
 
 	@ApiModelProperty(value = "作业完成人数",required = false)
 	private Integer completedNum;
@@ -131,6 +136,22 @@ public class CourseHomework {
 		return this.classGroupId;
 	}
 			
+	public MusicGroup getMusicGroup() {
+		return musicGroup;
+	}
+
+	public void setMusicGroup(MusicGroup musicGroup) {
+		this.musicGroup = musicGroup;
+	}
+
+	public ClassGroup getClassGroup() {
+		return classGroup;
+	}
+
+	public void setClassGroup(ClassGroup classGroup) {
+		this.classGroup = classGroup;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -124,6 +124,12 @@ public class MusicGroup {
 
 	@ApiModelProperty(value = "在读人数",required = true)
 	private Integer payNum;
+	
+	@ApiModelProperty(value = "是否是课堂课",required = true)
+	private boolean isClassroomLessons;
+	
+	@ApiModelProperty(value = "备注",required = true)
+	private String memo;
 
 	public String getCooperationOrganName() {
 		return cooperationOrganName;
@@ -389,6 +395,22 @@ public class MusicGroup {
 		this.settlementType = settlementType;
 	}
 
+	public boolean isClassroomLessons() {
+		return isClassroomLessons;
+	}
+
+	public void setClassroomLessons(boolean isClassroomLessons) {
+		this.isClassroomLessons = isClassroomLessons;
+	}
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 13 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java

@@ -15,7 +15,7 @@ public class StudentCourseHomework {
 	private Long id;
 
 	@ApiModelProperty(value = "学生ID",required = false)
-	private Long userId;
+	private Integer userId;
 
 	@ApiModelProperty(value = "用户名")
 	private String userName;
@@ -26,6 +26,8 @@ public class StudentCourseHomework {
 	/**  */
 	private Long courseHomeworkId;
 	
+	private CourseHomework courseHomework = new CourseHomework();
+	
 	/** 作品附件 */
 	private String attachments;
 	
@@ -106,11 +108,11 @@ public class StudentCourseHomework {
 		return this.id;
 	}
 
-	public Long getUserId() {
+	public Integer getUserId() {
 		return userId;
 	}
 
-	public void setUserId(Long userId) {
+	public void setUserId(Integer userId) {
 		this.userId = userId;
 	}
 
@@ -154,6 +156,14 @@ public class StudentCourseHomework {
 		return this.updateTime;
 	}
 			
+	public CourseHomework getCourseHomework() {
+		return courseHomework;
+	}
+
+	public void setCourseHomework(CourseHomework courseHomework) {
+		this.courseHomework = courseHomework;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 2 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java

@@ -3,10 +3,8 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum MusicGroupStatusEnum implements BaseEnum<String, MusicGroupStatusEnum> {
-	DRAFT("DRAFT","草稿"),AUDIT("AUDIT","审核中"),
-	APPLY("APPLY", "报名中"), PAY("PAY", "缴费中"),
-	PREPARE("PREPARE", "筹备中"), PROGRESS("PROGRESS", "进行中"),
-	CANCELED("CANCELED", "取消"), PAUSE("PAUSE", "暂停");
+	DRAFT("DRAFT", "草稿"), AUDIT("AUDIT", "审核中"), AUDIT_FAILED("AUDIT_FAILED", "审核失败"), APPLY("APPLY", "报名中"), PAY("PAY", "缴费中"), PREPARE("PREPARE", "筹备中"), PROGRESS(
+			"PROGRESS", "进行中"), CANCELED("CANCELED", "取消"), PAUSE("PAUSE", "暂停");
 
 	private String code;
 	private String msg;

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SalarySettlementTypeEnum.java

@@ -11,8 +11,7 @@ public enum SalarySettlementTypeEnum implements BaseEnum<String,SalarySettlement
     TEACHER_DEFAULT("TEACHER_DEFAULT","老师默认课酬"),
     RATIO_DISCOUNT("RATIO_DISCOUNT","课程单价比例折扣"),
     FIXED_SALARY("FIXED_SALARY","固定课酬"),
-    GRADIENT_SALARY("GRADIENT_SALARY","梯度课酬"),
-    CLASSROOM_SALARY("CLASSROOM_SALARY","课堂课酬");
+    GRADIENT_SALARY("GRADIENT_SALARY","梯度课酬");
 
     private String code;
 

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java

@@ -12,6 +12,26 @@ public class VipGroupQueryInfo extends QueryInfo {
 
     private Long vipGroupId;
 
+    private Integer teacherId;
+
+    private Integer activityId;
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
     public Long getVipGroupId() {
         return vipGroupId;
     }

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

@@ -254,7 +254,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * 有课提醒
      * @return
      */
-    void coursesScheduleRemind();
+    void studentCoursesScheduleRemind();
     
     /**
      * 上课提醒

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -30,8 +30,16 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @Date: 2019/10/15
      * @params []
      * @return void
-     * @describe 教师课酬结算
+     * @describe 教师vip课课酬结算
      */
     void teacherSalarySettlement();
 
-}
+    /**
+     * @describe 教师乐团课课酬结算
+     * @author Joburgess
+     * @date 2019/11/3
+     * @return void
+     */
+    void musicGroupTeacherSalarySettlement();
+
+}

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

@@ -23,7 +23,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param subFeeSettingDto
 	 * @Author superzou
 	 */
-	String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId);
+	String createGroup(SubFeeSettingDto subFeeSettingDto) throws Exception;
 
 	/**
 	 * 获取学生所在乐团详情
@@ -158,11 +158,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
     List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId);
 
 	/**
-	 * 开启缴费
+	 * 开启缴费(报名中 -->  缴费中)
 	 * @param musicGroupId
 	 * @return
 	 */
-	MusicGroup openPay(String musicGroupId, String expireDate);
+	MusicGroup openPay(String musicGroupId, String expireDate) throws Exception;
 
 	/**
 	 * 获取乐团详情
@@ -202,11 +202,29 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param updateExpectedNumDtos
 	 * @return
 	 */
-    int updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos);
+	void updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos);
 
 	/**
 	 * 开启乐团(筹备中 -->  进行中)
 	 * @param musicGroupId
 	 */
 	void musicGroupAction(String musicGroupId) throws Exception;
+
+	/**
+	 * 提交审核(草稿 -> 审核中)
+	 * @param musicGroupId
+	 */
+	void musicGroupAudit(String musicGroupId) throws Exception;
+
+	/**
+	 * 审核失败(审核中 -> 审核失败)
+	 * @param musicGroupId
+	 */
+	void musicGroupAuditFailed(String musicGroupId,String memo) throws Exception;
+
+	/**
+	 * 审核通过(审核中 -> 报名中)
+	 * @param musicGroupId
+	 */
+	void musicGroupAuditSuccess(String musicGroupId) throws Exception;
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java

@@ -47,4 +47,11 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @param subjectId
      */
     void addApplyStudentNum(String musicGroupId, Integer subjectId,int num);
+
+    /**
+     * 批量修改声部规划费用
+     * @param musicGroupSubjectPlans
+     * @return
+     */
+    int batchUpdateFee(List<MusicGroupSubjectPlan> musicGroupSubjectPlans);
 }

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

@@ -34,6 +34,11 @@ public interface StudentCourseHomeworkService extends BaseService<Long, StudentC
      * @param studentId: 学生编号
      * @return boolean
      */
-    boolean updateReplyStatus(Long teacherId,Long courseHomeworkId,Long studentId);
+    boolean updateReplyStatus(Integer teacherId,Long courseHomeworkId,Integer studentId);
 
+    /**
+     * 课程作业提醒
+     * @return
+     */
+    void homeworkRemind();
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -208,4 +208,11 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	List<StudentRegistration> queryStudentByMusicGroupId(String musicGroupId);
+
+	/**
+	 * 根据家长的手机号列表,获取用户编号
+	 * @param parentPhones
+	 * @return
+	 */
+	List<Map<Integer,String>> findParentId(String parentPhones);
 }

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

@@ -89,6 +89,9 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 	String STUDENT_APPLY_PAYMENT_DETAIL_URL = "student_apply_payment_detail_url";
 	String SERVER_PHONE = "server_phone";
 
+	/** 乐团课90分钟课酬计算时的收费类型 */
+	String MUSIC_GROUP_CHARGE_TYPE_90_="music_group_charge_type_90_";
+
 	/**
 	 * @params paramName
 	 * @return com.ym.mec.biz.dal.entity.SysConfig

+ 40 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1,8 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-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.*;
@@ -56,6 +54,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private MusicGroupDao musicGroupDao;
     @Autowired
+    private MusicGroupBuildLogDao musicGroupBuildLogDao;
+    @Autowired
     private MusicGroupService musicGroupService;
     @Autowired
     private ClassGroupRelationService classGroupRelationService;
@@ -632,6 +632,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void addMusicGroupTeam(Integer teacherId, String musicGroupId, Integer improventClassesNum) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if(musicGroup == null){
+            throw new Exception("乐团信息不存在");
+        }
+        if(musicGroup.getStatus() != MusicGroupStatusEnum.PREPARE){
+            throw new Exception("当前乐团状态不允许此操作");
+        }
         //所有学员都已经分配
         List<StudentRegistration> students = studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, null);
         if (students != null && students.size() > 0) {
@@ -643,12 +654,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             throw new Exception("还有单技班未分配合奏");
         }
         //设置教学主管
-        MusicGroup musicGroup = new MusicGroup();
-        musicGroup.setId(musicGroupId);
         musicGroup.setDirectorUserId(teacherId);
         musicGroup.setImproventClassesNum(improventClassesNum);
         musicGroup.setUpdateTime(new Date());
         musicGroupDao.update(musicGroup);
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"成团确认(学员、班级、教学主管已设置)",sysUser.getId(),""));
     }
 
     @Override
@@ -948,15 +958,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //对应基准课酬
                         BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                         //基准课酬
-                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            break;
-                        }
-                        //阶梯课酬
-                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                            salary = baseSalary;
-                            break;
-                        }
+//                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+//                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+//                            break;
+//                        }
+//                        //阶梯课酬
+//                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+//                            salary = baseSalary;
+//                            break;
+//                        }
                     }
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -1149,15 +1159,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //对应基准课酬
                         BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                         //基准课酬
-                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            break;
-                        }
-                        //阶梯课酬
-                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                            salary = baseSalary;
-                            break;
-                        }
+//                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+//                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+//                            break;
+//                        }
+//                        //阶梯课酬
+//                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+//                            salary = baseSalary;
+//                            break;
+//                        }
                     }
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -1352,15 +1362,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //对应基准课酬
                         BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                         //基准课酬
-                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            break;
-                        }
+//                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+//                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+//                            break;
+//                        }
                         //阶梯课酬
-                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                            salary = baseSalary;
-                            break;
-                        }
+//                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+//                            salary = baseSalary;
+//                            break;
+//                        }
                     }
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();

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

@@ -121,19 +121,20 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 }
                 BigDecimal salary = new BigDecimal("0");
                 List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaryList = classGroupTeacherMapper.getTeacherDefaultMusicGroupSalaryList();
+
                 for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalaryList) {
                     //对应基准课酬
-                    BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                    //基准课酬
-                    if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                        salary = new BigDecimal(duration).divide(new BigDecimal(30),8,BigDecimal.ROUND_HALF_UP).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                        break;
-                    }
-                    //阶梯课酬
-                    if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                        salary = baseSalary;
-                        break;
-                    }
+//                    BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+//                    //基准课酬
+//                    if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+//                        salary = new BigDecimal(duration).divide(new BigDecimal(30),8,BigDecimal.ROUND_HALF_UP).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+//                        break;
+//                    }
+//                    //阶梯课酬
+//                    if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+//                        salary = baseSalary;
+//                        break;
+//                    }
                 }
 
                 //课程与老师薪水表
@@ -199,36 +200,19 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 throw new BizException("存在未指定结算方式的课程类型");
             }
 
-            //根据结算方式将对应课程类型下的默认课酬设置列表分组
-            Map<String, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalaryGroupBySettlementType = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.groupingBy(teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary.getSettlementType().getCode()));
-
-            //获取对应结算方式下的默认课酬设置列表
-            List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithSettlementType = teacherDefaultMusicGroupSalaryGroupBySettlementType.get(settlementType);
-            if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithSettlementType)) {
-                throw new BizException("未找到结算方式对应的默认课酬");
-            }
-
             //根据教师编号将对应结算方式下的默认课酬设置分组
-            Map<Integer, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithSettlementType.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getUserId));
-
-            //课时长度
-            int duration = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), courseSchedule.getStartClassTime());
-
-            //课程时长与结算单位时长占比
-            BigDecimal classTimeDuty = new BigDecimal(duration).divide(teacherSalaryTimeUnit);
+            Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId,teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
             if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
                 //根据课程获取主教的默认课酬设置列表
-                List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
+                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
                 courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
                         courseSchedule,
                         TeachTypeEnum.BISHOP,
                         settlementType,
-                        classTimeDuty,
                         courseSubsidyMap.get(courseSchedule.getId()),
-                        duration,
                         courseSchedule.getActualTeacherId().intValue(),
-                        teacherDefaultMusicGroupSalariesWithTeacherId));
+                        teacherDefaultMusicGroupSalaryWithTeacherId));
             }
 
             //计算助教课程薪酬
@@ -238,30 +222,26 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 return;
             }
             teachingTeacherIdList.forEach(teacherId -> {
-                List<TeacherDefaultMusicGroupSalary> teachingTeacherDefaultMusicGroupSalariesWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
+                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
                 courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
                         courseSchedule,
                         TeachTypeEnum.TEACHING,
                         settlementType,
-                        classTimeDuty,
                         courseSubsidyMap.get(courseSchedule.getId()),
-                        duration,
                         teacherId,
-                        teachingTeacherDefaultMusicGroupSalariesWithTeacherId));
+                        teacherDefaultMusicGroupSalaryWithTeacherId));
             });
         });
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
     }
 
     /**
-     * @param courseSchedule:
-     * @param teachType:
-     * @param settlementType:
-     * @param classTimeDuty:
-     * @param subsidy:
-     * @param duration:
-     * @param teacherId:
-     * @param teacherDefaultMusicGroupSalariesWithTeacherId:
+     * @param courseSchedule: 课程信息
+     * @param teachType: 教师类型
+     * @param settlementType: 结算方式
+     * @param subsidy: 补贴
+     * @param teacherId: 教师编号
+     * @param teacherDefaultMusicGroupSalaryWithTeacherId: 教师课酬
      * @return com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary
      * @describe 计算教师课酬
      * @author Joburgess
@@ -270,36 +250,33 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private CourseScheduleTeacherSalary countMusicGroupTeacherSalary(CourseSchedule courseSchedule,
                                                                      TeachTypeEnum teachType,
                                                                      String settlementType,
-                                                                     BigDecimal classTimeDuty,
                                                                      BigDecimal subsidy,
-                                                                     int duration,
                                                                      Integer teacherId,
-                                                                     List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithTeacherId) {
-        if (CollectionUtils.isEmpty(teacherDefaultMusicGroupSalariesWithTeacherId)) {
+                                                                     TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId) {
+        if (Objects.isNull(teacherDefaultMusicGroupSalaryWithTeacherId)) {
             throw new BizException("存在未设置默认课酬的教师");
         }
         //教师课酬
         BigDecimal teacherSalary = new BigDecimal(0);
 
+        //课时长度
+        int duration = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), courseSchedule.getStartClassTime());
+
         //如果结算方式是教师默认课酬
         if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-            TeacherDefaultMusicGroupSalary bishopTeacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalariesWithTeacherId.get(0);
-            if (Objects.isNull(bishopTeacherDefaultMusicGroupSalary)) {
-                throw new BizException("存在未设置默认课酬的教师");
-            }
-            BigDecimal bishopTeacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? bishopTeacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : bishopTeacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-            teacherSalary = bishopTeacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
+            //课程时长与结算单位时长占比
+            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30));
+            BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+            teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
-            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalariesWithTeacherId) {
-                if (duration >= teacherDefaultMusicGroupSalary.getDurationMin() && duration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                    teacherSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                    break;
-                }
-            }
+            //课程时长与结算单位时长占比
+            BigDecimal classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90));
+            BigDecimal teacherDefaultSalary = teachType == TeachTypeEnum.BISHOP ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+            teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
         }
         return new CourseScheduleTeacherSalary(
                 courseSchedule.getId(),
-                TeachTypeEnum.BISHOP,
+                teachType,
                 teacherId,
                 teacherSalary,
                 subsidy,

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

@@ -292,6 +292,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				.stream()
 				.collect(Collectors.groupingBy(ClassGroupStudentMapper::getClassGroupId));
 
+//        allCourseSchedules
+//                    .stream()
+//                    .filter(courseSchedule -> Objects.nonNull(courseSchedule.getId()))
+//                    .map(CourseSchedule::getId)
+//                    .collect(Collectors.toList());
 
         courseScheduleDao.findCourseScheduleIdAndUserIdsMap(new ArrayList<>());
 
@@ -841,7 +846,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     }
 
 	@Override
-	public void coursesScheduleRemind() {
+	public void studentCoursesScheduleRemind() {
 		List<Mapper> mapperList = courseScheduleDao.queryStudentCoursesTimesOfTomorrow();
 		for (Mapper mapper : mapperList) {
 			Integer userId = (Integer) mapper.getKey();

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +36,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 	private VipGroupService vipGroupService;
 	@Autowired
 	private SchoolService schoolService;
+	@Autowired
+	private CourseScheduleDao courseScheduleDao;
+	@Autowired
+	private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
 	
 	@Autowired
 	private SysConfigDao sysConfigDao;
@@ -236,4 +241,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 		});
 
 	}
+
+	@Override
+	public void musicGroupTeacherSalarySettlement() {
+		Date now=new Date();
+		Date yesterday= DateUtil.addDays1(now,-1);
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+		//获取昨天的课程计划
+		List<CourseSchedule> yesterdayCourseSchedules = courseScheduleDao.findCourseScheduleWithDate(yesterday);
+
+	}
 }

+ 144 - 79
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -104,6 +104,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	@Autowired
 	private SysMessageService sysMessageService;
 
+	@Autowired
+	private SysMessageConfigDao sysMessageConfigDao;
+
     @Override
     public BaseDAO<String, MusicGroup> getDAO() {
         return musicGroupDao;
@@ -111,14 +114,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
+    public String createGroup(SubFeeSettingDto subFeeSettingDto) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
         MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
         List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
         List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
         List<SubjectRegisterDto> subjectRegisters = subFeeSettingDto.getSubjectRegisters();
         String musicGroupId = idGeneratorService.generatorId() + "";
         musicGroup.setId(musicGroupId);
-        musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
+        if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT && musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT){
+            throw new Exception("乐团初始状态错误");
+        }
         // 保存乐团基本信息
         musicGroupDao.insert(musicGroup);
         // 保存乐团付费主体列表
@@ -166,7 +175,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupSubjectGoodsGroupDao.batchInsert(musicGroupSubjectGoodsGroups,musicGroupId);
         }
         // 记录创建日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交建团申请", userId, ""));
+        String event = musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT?"新建乐团,提交审核":"保存乐团草稿";
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, event, sysUser.getId(), ""));
         return musicGroupId;
     }
 
@@ -182,10 +192,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //乐团状态是否正确
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if(musicGroup != null){
-            if(musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT || musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT){
-                throw new Exception("乐团状态异常");
+            if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT_FAILED){
+                throw new Exception("当前乐团状态不支持此操作");
             }
-
             //记录日志信息
             musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"修改乐团计划声部、乐器",sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
             //删除原有的乐团声部规划
@@ -202,23 +211,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos) {
-        return musicGroupSubjectPlanDao.updateExpectedStudentNum(updateExpectedNumDtos);
+    public void updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos) {
+        updateExpectedNumDtos.forEach(e->{
+            musicGroupSubjectPlanDao.updateExpectedStudentNum(e.getExpectedStudentNum(),e.getMusicGroupSubjectPlanId());
+        });
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void musicGroupAction(String musicGroupId) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
             throw new Exception("用户信息获取失败");
         }
-        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        if(musicGroup == null){
-            throw new Exception("乐团信息不存在");
-        }
-        if(musicGroup.getStatus() != MusicGroupStatusEnum.PREPARE){
-            throw new Exception("乐团状态异常");
-        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.PREPARE);
         //乐器采购清单是否确认
         Map<String,Object> param = new HashMap<>();
         param.put("musicGroupId",musicGroupId);
@@ -228,11 +234,62 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         //课酬是否确认
 //        courseScheduleTeacherSalaryDao.queryCount();
-        Date date = new Date();
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"确认开团(筹备中 -> 进行中)",sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.PROGRESS);
+        musicGroupDao.update(musicGroup);
+    }
+
+    private MusicGroup saveLog(String musicGroupId,MusicGroupStatusEnum statusEnum) throws Exception {
+        Date date = new Date();
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if(musicGroup == null){
+            throw new Exception("乐团信息不存在");
+        }
+        if(musicGroup.getStatus() != statusEnum){
+            throw new Exception("当前乐团状态不支持此操作");
+        }
         musicGroup.setUpdateTime(date);
+        return musicGroup;
+    }
+
+    @Override
+    public void musicGroupAudit(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.DRAFT);
+        //记录操作日志
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"提交审核(草稿 -> 审核中)",sysUser.getId(),""));
+        musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
+        musicGroupDao.update(musicGroup);
+    }
+
+    @Override
+    public void musicGroupAuditFailed(String musicGroupId,String memo) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.AUDIT);
+        //记录操作日志
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"审核失败(审核中 -> 审核失败)",sysUser.getId(),memo));
+        musicGroup.setMemo(memo);
+        musicGroup.setStatus(MusicGroupStatusEnum.AUDIT_FAILED);
+        musicGroupDao.update(musicGroup);
+    }
+
+    @Override
+    public void musicGroupAuditSuccess(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.AUDIT);
+        //记录操作日志
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"审核失败(审核中 -> 报名中)",sysUser.getId(),""));
+        musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
         musicGroupDao.update(musicGroup);
     }
 
@@ -658,57 +715,64 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateBaseInfo(SubFeeSettingDto subFeeSettingDto) throws Exception {
-        MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
-        String musicGroupId = musicGroup.getId();
-        MusicGroup group = musicGroupDao.get(musicGroupId);
-        if(group != null){
-            Date date = new Date();
-            List<Integer> months = subFeeSettingDto.getMonths();
-            //删除乐团相关付费周期
-            musicGroupPaymentCalenderDao.delByGroupId(musicGroupId);
-            if(months != null && months.size() > 0){
-                Integer num = musicGroupStudentFeeDao.countStudentNoPayNum(musicGroupId);
-                if(num > 0){
-                    throw new Exception("缴费周期更新失败,当前乐团有未缴费的学员");
-                }
-                //修改学员下次缴费日期
-                //获取当前月份
-                int currentMonth = Integer.parseInt(DateUtil.getMonth(date));
-                int nextMonth = currentMonth;
-                for (int i = 0;i < months.size();i++){
-                    if(i == months.size()-1 && months.get(i) <= currentMonth){
-                        nextMonth = months.get(0);
-                        break;
-                    }else if(months.get(i) > currentMonth){
-                        nextMonth = months.get(i);
-                        break;
-                    }
-                }
-                // 修改学员付费周期
-                Date nextPaymentDate = null;
-                if(nextMonth > currentMonth){
-                    nextPaymentDate = DateUtil.addMonths(date, nextMonth - currentMonth);
-                }else if(nextMonth < currentMonth) {
-                    nextPaymentDate = DateUtil.addMonths(date, 12 - currentMonth + nextMonth);
-                }else {
-                    nextPaymentDate = DateUtil.addMonths(date, 12);
-                }
-                musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId,nextPaymentDate);
-                //批量插入
-                musicGroupPaymentCalenderDao.batchAdd(months,musicGroupId);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        String musicGroupId = subFeeSettingDto.getMusicGroup().getId();
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.DRAFT);
+        if(musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT_FAILED){
+            throw new Exception("当前乐团状态不支持此操作");
+        }
+
+        Date date = new Date();
+        List<Integer> months = subFeeSettingDto.getMonths();
+        //删除乐团相关付费周期
+        musicGroupPaymentCalenderDao.delByGroupId(musicGroupId);
+        if(months != null && months.size() > 0){
+            Integer num = musicGroupStudentFeeDao.countStudentNoPayNum(musicGroupId);
+            if(num > 0){
+                throw new Exception("缴费周期更新失败,当前乐团有未缴费的学员");
             }
-            musicGroupDao.update(musicGroup);
-            //修改课程里面的教学点
-            if(!group.getSchoolId().equals(musicGroup.getSchoolId())){
-                courseScheduleDao.updateByMusicGroupId(musicGroupId,musicGroup.getSchoolId());
+            //修改学员下次缴费日期
+            //获取当前月份
+            int currentMonth = Integer.parseInt(DateUtil.getMonth(date));
+            int nextMonth = currentMonth;
+            for (int i = 0;i < months.size();i++){
+                if(i == months.size()-1 && months.get(i) <= currentMonth){
+                    nextMonth = months.get(0);
+                    break;
+                }else if(months.get(i) > currentMonth){
+                    nextMonth = months.get(i);
+                    break;
+                }
             }
-            // 删除乐团付费主体列表
-            musicGroupPaymentEntitiesDao.delByGroupId(musicGroupId);
-            //批量新增
-            if(subFeeSettingDto.getMusicGroupPaymentEntities() != null && subFeeSettingDto.getMusicGroupPaymentEntities().size() > 0){
-                musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
+            // 修改学员付费周期
+            Date nextPaymentDate = null;
+            if(nextMonth > currentMonth){
+                nextPaymentDate = DateUtil.addMonths(date, nextMonth - currentMonth);
+            }else if(nextMonth < currentMonth) {
+                nextPaymentDate = DateUtil.addMonths(date, 12 - currentMonth + nextMonth);
+            }else {
+                nextPaymentDate = DateUtil.addMonths(date, 12);
             }
+            musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId,nextPaymentDate);
+            //批量插入
+            musicGroupPaymentCalenderDao.batchAdd(months,musicGroupId);
         }
+        musicGroupDao.update(musicGroup);
+        //修改课程里面的教学点
+        if(!musicGroup.getSchoolId().equals(musicGroup.getSchoolId())){
+            courseScheduleDao.updateByMusicGroupId(musicGroupId,musicGroup.getSchoolId());
+        }
+        // 删除乐团付费主体列表
+        musicGroupPaymentEntitiesDao.delByGroupId(musicGroupId);
+        //批量新增
+        if(subFeeSettingDto.getMusicGroupPaymentEntities() != null && subFeeSettingDto.getMusicGroupPaymentEntities().size() > 0){
+            musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
+        }
+        //记录操作日志
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"修改乐团基本信息数据",sysUser.getId(),JSONObject.toJSONString(subFeeSettingDto)));
     }
 
     @Override
@@ -745,10 +809,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-    public MusicGroup openPay(String musicGroupId, String expireDate) {
-        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        musicGroup.setStatus(MusicGroupStatusEnum.PAY);
+    public MusicGroup openPay(String musicGroupId, String expireDate) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new Exception("用户信息获取失败");
+        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.APPLY);
+        //记录操作日志
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"开启缴费(报名中 -->  缴费中)",sysUser.getId(),""));
         musicGroup.setApplyExpireDate(DateUtil.toDate(expireDate));
+        musicGroup.setStatus(MusicGroupStatusEnum.PAY);
         musicGroupDao.update(musicGroup);
         return musicGroup;
     }
@@ -797,25 +867,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if(sysUser == null){
             throw new Exception("用户信息获取失败");
         }
-        Date date = new Date();
-        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        if(musicGroup == null){
-            throw new Exception("乐团信息不存在");
-        }
-        if(musicGroup.getStatus() != MusicGroupStatusEnum.PAY){
-            throw new Exception("乐团状态异常");
-        }
+        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.PAY);
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"确认开团(缴费中 -> 筹备中)",sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.PREPARE);
-        musicGroup.setUpdateTime(date);
         musicGroupDao.update(musicGroup);
+
         //给家长发送乐团基础训练课短信
         //获取所有乐团学员列表
-//        List<StudentRegistration> students = studentRegistrationService.queryStudentByMusicGroupId(musicGroupId);
+        List<StudentRegistration> students = studentRegistrationService.queryStudentByMusicGroupId(musicGroupId);
         //获取所有家长电话
-//        Set<String> parentsPhones = students.stream().map(StudentRegistration::getParentsPhone).collect(Collectors.toSet());
-//        String content = sysConfigDao.findConfigValue(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
-//        sysMessageService.batchSendMessage(MessageSender.YIMEI,"",content,parentsPhones,date,0,"");
+        Set<String> parentsPhones = students.stream().map(StudentRegistration::getParentsPhone).collect(Collectors.toSet());
+        //获取对应家长的用户编号
+//        Map<Integer,String> userIds = MapUtil.convertMybatisMap(studentRegistrationService.findParentId(StringUtils.join(parentsPhones,",")));
+//        String content = sysMessageConfigDao.findContent(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
+//        sysMessageService.batchSendMessage(MessageSender.YIMEI,"",content,userIds,date,0,"");
     }
 }

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

@@ -120,4 +120,9 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicOneSubjectClassPlan.setUpdateTime(new Date());
         musicGroupSubjectPlanDao.updateApplyStudentNum(musicOneSubjectClassPlan);
     }
+
+    @Override
+    public int batchUpdateFee(List<MusicGroupSubjectPlan> musicGroupSubjectPlans) {
+        return musicGroupSubjectPlanDao.batchUpdateFee(musicGroupSubjectPlans);
+    }
 }

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

@@ -43,7 +43,7 @@ public class StudentCourseHomeworkReplyServiceImpl extends BaseServiceImpl<Long,
 		if(Objects.isNull(studentCourseHomework)){
 			throw new BizException("请指定需要回复的作业");
 		}
-		studentCourseHomeworkService.updateReplyStatus(bean.getUserId().longValue(),
+		studentCourseHomeworkService.updateReplyStatus(bean.getUserId(),
 				studentCourseHomework.getCourseHomeworkId(),
 				studentCourseHomework.getUserId());
 		return super.insert(bean);

+ 35 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -7,25 +7,31 @@ import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Service
-public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, StudentCourseHomework>  implements StudentCourseHomeworkService {
-	
+public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, StudentCourseHomework> implements StudentCourseHomeworkService {
+
 	@Autowired
 	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 	@Autowired
@@ -36,6 +42,9 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
+	@Autowired
+	private SysMessageService sysMessageService;
+
 	private String url = "http://auth-server/queryUserInfo";
 
 	@Override
@@ -47,11 +56,11 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	@Override
 	public long insert(StudentCourseHomework bean) {
 		SysUser user = sysUserFeignService.queryUserInfo();
-		bean.setUserId(Long.valueOf(user.getId()));
+		bean.setUserId(user.getId());
 		bean.setStatus(YesOrNoEnum.YES);
 		long insert = super.insert(bean);
 
-		CourseHomework courseHomework=new CourseHomework();
+		CourseHomework courseHomework = new CourseHomework();
 		courseHomework.setId(bean.getCourseHomeworkId());
 		courseHomework.setCompletedNum(studentCourseHomeworkDao.countCompletedStudentNum(bean.getCourseHomeworkId()));
 		courseHomeworkService.update(courseHomework);
@@ -59,21 +68,21 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	}
 
 	@Override
-	public CourseHomeworkStudentDetailDto findCourseHomeworkStudentDetail(Long courseScheduleID,Long userId){
-		return studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID,userId);
+	public CourseHomeworkStudentDetailDto findCourseHomeworkStudentDetail(Long courseScheduleID, Long userId) {
+		return studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID, userId);
 	}
 
 	@Override
-	public boolean updateReplyStatus(Long teacherId, Long courseHomeworkId, Long studentId) {
+	public boolean updateReplyStatus(Integer teacherId, Long courseHomeworkId, Integer studentId) {
 		StudentCourseHomework byStudentAndCourseHomewok = studentCourseHomeworkDao.findByStudentAndCourseHomewok(courseHomeworkId, studentId);
-		if(Objects.isNull(byStudentAndCourseHomewok)){
+		if (Objects.isNull(byStudentAndCourseHomewok)) {
 			throw new BizException("作业记录不存在");
 		}
-		if(byStudentAndCourseHomewok.getIsReplied()==YesOrNoEnum.YES){
+		if (byStudentAndCourseHomewok.getIsReplied() == YesOrNoEnum.YES) {
 			return true;
 		}
 		CourseHomework byTeacherAndCourseHomewok = courseHomeworkDao.findByTeacherAndCourseHomewok(courseHomeworkId, teacherId);
-		if(Objects.nonNull(byTeacherAndCourseHomewok)){
+		if (Objects.nonNull(byTeacherAndCourseHomewok)) {
 			byStudentAndCourseHomewok.setIsView(YesOrNoEnum.YES);
 			studentCourseHomeworkDao.update(byStudentAndCourseHomewok);
 		}
@@ -83,16 +92,29 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 	@Override
 	public PageInfo<StudentCourseHomework> queryPage(QueryInfo queryInfo) {
 		SysUser user = sysUserFeignService.queryUserInfo();
-		CourseHomeworkQueryInfo courseHomeworkQueryInfo= (CourseHomeworkQueryInfo) queryInfo;
+		CourseHomeworkQueryInfo courseHomeworkQueryInfo = (CourseHomeworkQueryInfo) queryInfo;
 		courseHomeworkQueryInfo.setUserId(Long.valueOf(user.getId()));
 		return super.queryPage(queryInfo);
 	}
 
 	@Override
 	public List<StudentCourseHomework> findStudentCourseHomeworkByCourse(Long courseSchedule, String userName) {
-		if(Objects.isNull(courseSchedule)){
+		if (Objects.isNull(courseSchedule)) {
 			throw new BizException("请指定课程");
 		}
-		return studentCourseHomeworkDao.findByCourseSchedule(courseSchedule,userName);
+		return studentCourseHomeworkDao.findByCourseSchedule(courseSchedule, userName);
+	}
+
+	@Override
+	public void homeworkRemind() {
+		List<StudentCourseHomework> list = studentCourseHomeworkDao.queryNotDoneHomeworkList();
+
+		for (StudentCourseHomework sch : list) {
+			Map<Integer, String> receivers = new HashMap<Integer, String>();
+			receivers.put(sch.getUserId(), sch.getUserId() + "");
+
+			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_JOB_MESSAGE, receivers, null, 0, "", sch.getCourseHomework()
+					.getMusicGroup().getName(), sch.getCourseHomework().getClassGroup().getName());
+		}
 	}
 }

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

@@ -582,4 +582,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public List<StudentRegistration> queryStudentByMusicGroupId(String musicGroupId) {
         return studentRegistrationDao.queryStudentByMusicGroupId(musicGroupId);
     }
+
+    @Override
+    public List<Map<Integer, String>> findParentId(String parentPhones) {
+        return studentRegistrationDao.findParentId(parentPhones);
+    }
 }

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

@@ -925,8 +925,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			sysUserCashAccountDetail.setAttribute(studentApplyRefunds.getId().toString());
 			sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
 
-			classGroupStudentMapperDao.deleteStudentByClassGroupId(studentPaymentOrder.getClassGroupId().longValue(), studentPaymentOrder.getUserId()
-					.longValue());
+			ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(studentPaymentOrder.getUserId(),
+					studentPaymentOrder.getClassGroupId());
+
+			classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.LEAVE);
+			classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
+
 			break;
 		case REJECT:
 

+ 4 - 1
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -95,7 +95,10 @@
                 </div>
             </div>
         
-            (本协议中“乙方“指学员及家长;”乙方学员“仅指参加甲方课程的学员;”乙方家长“仅指乙方学员的法定监护人。)
+            
+        </div>
+        <div>
+        (本协议中“乙方“指学员及家长;”乙方学员“仅指参加甲方课程的学员;”乙方家长“仅指乙方学员的法定监护人。)
         </div>
         为进一步提升器乐教学质量和服务品质,保证学员学习进度,明确培训各方的权责,经甲、乙双方协商一致,特订立本协议,以便共同遵守。
 

+ 37 - 19
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -362,27 +362,27 @@
 
     <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-        cg.id_ seal_class_id_,
-        cs.name_,
-        cs.type_,
-        cs.id_,
-        cs.class_date_,
-        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
-        cs.status_,
-        cs.student_num_,
-        cs.leave_student_num_,
-        cg.student_num_ total_student_num_,
-        su.username_ teacher_name_,
-        ta.sign_in_status_ attendance_status_
+            cg.id_ seal_class_id_,
+            cs.name_,
+            cs.type_,
+            cs.id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cg.student_num_ total_student_num_,
+            su.username_ teacher_name_,
+            ta.sign_in_status_ attendance_status_
         FROM
-        music_group mg
-        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
-        LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
-        LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
+            music_group mg
+            LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+            LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+            LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
         WHERE
-        mg.organ_id_ = #{organId}
+            mg.organ_id_ = #{organId}
         AND cs.id_ IS NOT NULL
         AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
         <include refid="global.limit"/>
@@ -1120,4 +1120,22 @@
             #{courseScheduleId}
         </foreach>
     </select>
+    <select id="findClassGroupAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
+        SELECT
+            class_group_id_ id_,
+            user_id_ relate_ids
+        FROM
+            class_group_teacher_mapper
+        WHERE class_group_id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+            #{classGroupId}
+        </foreach>
+    </select>
+    <select id="findCourseScheduleWithDate" resultMap="CourseSchedule">
+        SELECT
+            cs.*
+        FROM
+            course_schedule cs
+        WHERE cs.class_date_=DATE_FORMAT(#{date},'%Y-%m-%d %H:%i:%s')
+    </select>
 </mapper>

+ 16 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -159,6 +159,7 @@
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		WHERE
 		CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt;= DATE_ADD( NOW( ), INTERVAL - 7 DAY )
+		AND cs.type_='VIP'
 		AND csts.settlement_time_ IS NULL
     </select>
     
@@ -192,15 +193,26 @@
 			#{courseScheduleId}
 		</foreach>
 	</select>
+	<select id="findMusicGroupChargeTypeByCourse" resultType="map">
+		SELECT
+			cs.id_ AS 'key',
+			mg.charge_type_id_ AS 'value'
+		FROM
+			course_schedule cs
+			LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+			LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
+		WHERE cs.id_ IN
+		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+			#{courseScheduleId}
+		</foreach>
+	</select>
 	<select id="findCourseSubsidyByCourses" resultType="map">
 		SELECT
 			cs.id_,
 			s.subsidy_
 		FROM
 			course_schedule cs
-			LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
-			LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
-			LEFT JOIN school s ON mg.school_id_=s.id_
+			LEFT JOIN school s ON cs.schoole_id_=s.id_
 		WHERE cs.id_ IN
 		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
 			#{courseScheduleId}
@@ -221,7 +233,7 @@
 		WHERE csts.course_schedule_id_ = #{courseScheduleId}
 	</select>
 
-    <update id="batchUpdateWages" parameterType="map">
+	<update id="batchUpdateWages" parameterType="map">
 		UPDATE course_schedule_teacher_salary set
 			subsidy_ = #{subsidy},
 			expect_salary_ = #{salary},

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

@@ -27,6 +27,8 @@
 		<result column="img_" property="img" />
 		<result column="director_user_id_" property="directorUserId" />
 		<result column="settlement_type_" property="settlementType" />
+		<result column="is_classroom_lessons_" property="isClassroomLessons" />
+		<result column="memo_" property="memo" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -50,11 +52,11 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO music_group
 		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,settlement_type_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_)
+		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,settlement_type_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_,is_classroom_lessons_,memo_)
 		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
 		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
 		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId})
+		#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId},#{isClassroomLessons},#{memo})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -124,6 +126,12 @@
 			<if test="settlementType != null">
 				settlement_type_ = #{settlementType},
 			</if>
+			<if test="isClassroomLessons != null">
+				is_classroom_lessons_ = #{isClassroomLessons},
+			</if>
+			<if test="memo != null">
+				memo_ = #{memo},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>
@@ -293,4 +301,16 @@
     <select id="queryListByIds" resultMap="MusicGroup" parameterType="list">
 		SELECT * FROM music_group WHERE FIND_IN_SET(id_,#{musicGroupIds})
 	</select>
+    <select id="findSettlementTypeByMusicGroups" resultType="map">
+		SELECT
+			id_ AS 'key',
+			settlement_type_ AS 'value'
+		FROM
+			music_group
+		WHERE
+			id_ IN
+			<foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+				#{musicGroupId}
+			</foreach>
+    </select>
 </mapper>

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

@@ -104,12 +104,12 @@
     </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}
+        UPDATE music_group_subject_plan SET expected_student_num_ = #{expectedStudentNum},update_time_ = now() WHERE id_ = #{musicGroupSubjectPlanId}
+    </update>
+
+    <update id="batchUpdateFee">
+        <foreach collection="plans" item="item" separator=";">
+            UPDATE music_group_subject_plan SET fee_ = #{item.fee},update_time_ = now() WHERE id_ = #{item.id}
         </foreach>
     </update>
 

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

@@ -35,6 +35,11 @@
 		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="is_replied_" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
+
+	<resultMap type="com.ym.mec.biz.dal.entity.StudentCourseHomework" id="StudentCourseHomeworkFull" extends="StudentCourseHomework">
+		<result column="musicGroupName" property="courseHomework.musicGroup.name" />
+		<result column="classGroupName" property="courseHomework.classGroup.name"/>
+	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="StudentCourseHomework" >
@@ -229,4 +234,8 @@
 	<select id="findByStudentAndCourseHomewok" resultMap="StudentCourseHomework">
 		SELECT * FROM student_course_homework WHERE user_id_=#{userId} AND course_homework_id_=#{courseHomeworkId}
 	</select>
+	
+	<select id="queryNotDoneHomeworkList" resultMap="StudentCourseHomeworkFull">
+		SELECT sch.*,cg.name_ classGroupName,mg.name_ musicGroupName FROM student_course_homework sch left join course_homework ch on sch.course_homework_id_ = ch.id_ left join music_group mg on ch.music_group_id_ = mg.id_ left join class_group cg on ch.class_group_id_ = cg.id_ where sch.status_ = 0
+	</select>
 </mapper>

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

@@ -429,6 +429,17 @@
         GROUP BY actual_subject_id_
     </select>
 
+    <select id="findParentId" resultType="java.util.Map">
+        SELECT MAX(sr.user_id_) `key`,sr.parents_phone_ `value`
+        FROM student_registration sr
+        WHERE FIND_IN_SET(sr.parents_phone_,#{parentPhones})
+        GROUP BY sr.parents_phone_
+    </select>
+    <select id="queryStudentByMusicGroupId" resultMap="StudentRegistration">
+        SELECT * FROM student_registration sr
+        WHERE sr.music_group_id_ = #{musicGroupId} AND sr.payment_status_ = 2
+    </select>
+
     <!-- 批量开启缴费 -->
     <update id="batchOpenPay">
         UPDATE student_registration

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

@@ -118,8 +118,15 @@
 
     <sql id="vipGroupQueryCondition">
         <where>
+            1=1
             <if test="search!=null and search!=''">
-                vg.name LIKE CONCAT('%',#{search},'%')
+                AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_=#{search})
+            </if>
+            <if test="teacherId!=null">
+                AND vg.user_id_=#{teacherId}
+            </if>
+            <if test="activityId!=null">
+                AND vg.vip_group_activity_id_=#{activityId}
             </if>
             <if test="organId!=null">
                 AND FIND_IN_SET(#{organId},vg.organ_id_list_)

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

@@ -30,11 +30,15 @@ public interface TaskRemoteService {
 	// vip课课酬结算
 	public void vipGroupTeacherSalarySettlement();
 	
-	@GetMapping("task/coursesScheduleRemind")
-	// vip课课酬结算
-	public void coursesScheduleRemind();
+	@GetMapping("task/studentCoursesScheduleRemind")
+	// 学生有课提醒
+	public void studentCoursesScheduleRemind();
 	
 	@GetMapping("task/studentSignInRemind")
-	// vip课课酬结算
+	// 学生上课提醒
 	public void studentSignInRemind();
+	
+	@GetMapping("task/studentHomeworkRemind")
+	// 学生作业提醒
+	public void studentHomeworkRemind();
 }

+ 6 - 1
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -43,7 +43,7 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	}
 
 	@Override
-	public void coursesScheduleRemind() {
+	public void studentCoursesScheduleRemind() {
 		logger.info("有课提醒的服务调用失败");
 	}
 
@@ -52,4 +52,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 		logger.info("上课提醒的服务调用失败");
 	}
 
+	@Override
+	public void studentHomeworkRemind() {
+		logger.info("学生作业提醒的服务调用失败");
+	}
+
 }

+ 2 - 2
mec-task/src/main/java/com/ym/mec/task/jobs/CoursesScheduleRemaindTask.java → mec-task/src/main/java/com/ym/mec/task/jobs/StudentCoursesScheduleRemaindTask.java

@@ -6,13 +6,13 @@ 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 {
+public class StudentCoursesScheduleRemaindTask extends BaseTask {
 
 	@Autowired
 	private TaskRemoteService taskRemoteService;
 
 	@Override
 	public void execute() throws TaskException {
-		taskRemoteService.coursesScheduleRemind();
+		taskRemoteService.studentCoursesScheduleRemind();
 	}
 }

+ 34 - 5
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -73,7 +73,8 @@ public class MusicGroupController extends BaseController {
 		if(updateExpectedNumDtos == null || updateExpectedNumDtos.size() <= 0){
 			return failed("参数校验错误");
 		}
-		return succeed(musicGroupService.updateExpectedStudentNum(updateExpectedNumDtos));
+		musicGroupService.updateExpectedStudentNum(updateExpectedNumDtos);
+		return succeed();
 	}
 
 	@ApiOperation(value = "根据乐团编号查询乐团详情")
@@ -98,12 +99,12 @@ public class MusicGroupController extends BaseController {
 	@ApiOperation(value = "新增乐团  建团申请数据提交")
 	@PostMapping("/createGroup")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/createGroup')")
-	public Object createGroup(@RequestBody SubFeeSettingDto subFeeSettingDto) {
+	public Object createGroup(@RequestBody SubFeeSettingDto subFeeSettingDto) throws Exception {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null || sysUser.getId() == null) {
 			return failed("获取用户信息失败");
 		}
-		return succeed(musicGroupService.createGroup(subFeeSettingDto, sysUser.getId()));
+		return succeed(musicGroupService.createGroup(subFeeSettingDto));
 	}
 
 	@ApiOperation(value = "根据乐团ids获取乐团列表")
@@ -116,12 +117,12 @@ public class MusicGroupController extends BaseController {
 		return succeed(musicGroupService.queryListByIds(musicGroupIds));
 	}
 
-	@ApiOperation(value = "开启乐团缴费功能")
+	@ApiOperation(value = "开启缴费(报名中 -->  缴费中)")
 	@PostMapping("/openPay")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/openPay')")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "expireDate", value = "截止缴费日期", required = true, dataType = "String") })
-	public Object openPay(String musicGroupId, String expireDate) {
+	public Object openPay(String musicGroupId, String expireDate) throws Exception {
 		return succeed(musicGroupService.openPay(musicGroupId, expireDate));
 	}
 
@@ -134,6 +135,34 @@ public class MusicGroupController extends BaseController {
 		return succeed();
 	}
 
+	@ApiOperation(value = "提交审核(草稿 -> 审核中)")
+	@PostMapping("/audit")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/audit')")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String") })
+	public Object audit(String musicGroupId) throws Exception {
+		musicGroupService.musicGroupAudit(musicGroupId);
+		return succeed();
+	}
+
+	@ApiOperation(value = "审核失败(审核中 -> 审核失败)")
+	@PostMapping("/auditFailed")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/auditFailed')")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "memo", value = "memo", required = true, dataType = "String") })
+	public Object auditFailed(String musicGroupId,String memo) throws Exception {
+		musicGroupService.musicGroupAuditFailed(musicGroupId,memo);
+		return succeed();
+	}
+
+	@ApiOperation(value = "审核通过(审核中 -> 报名中)")
+	@PostMapping("/auditSuccess")
+	@PreAuthorize("@pcs.hasPermissions('musicGroup/auditSuccess')")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+	public Object auditSuccess(String musicGroupId) throws Exception {
+		musicGroupService.musicGroupAuditSuccess(musicGroupId);
+		return succeed();
+	}
+
 	@ApiOperation(value = "开启乐团(筹备中 -->  进行中)")
 	@PostMapping("/action")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/action')")

+ 18 - 4
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSubjectPlanController.java

@@ -1,19 +1,19 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 import com.ym.mec.common.controller.BaseController;
 
+import java.util.List;
+
 @RequestMapping("musicGroupSubjectPlan")
 @Api(tags = "乐团声部计划服务")
 @RestController
@@ -36,4 +36,18 @@ public class MusicGroupSubjectPlanController extends BaseController {
         return succeed(musicGroupSubjectPlanService.getMusicSubjectClassPlan(musicGroupId));
     }
 
+    @ApiOperation(value = "获取乐团声部规划列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupSubjectPlan/queryPage')")
+    public Object queryPage(@ApiParam(value = "乐团编号", required = true) String musicGroupId) {
+        return succeed(musicGroupSubjectPlanService.getMusicSubjectClassPlan(musicGroupId));
+    }
+
+    @ApiOperation(value = "修改乐团声部规划费用")
+    @GetMapping("/batchUpdateFee")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupSubjectPlan/batchUpdateFee')")
+    public Object batchUpdateFee(@RequestBody List<MusicGroupSubjectPlan> musicGroupSubjectPlans) {
+        return succeed(musicGroupSubjectPlanService.batchUpdateFee(musicGroupSubjectPlans));
+    }
+
 }

+ 15 - 5
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 import com.ym.mec.biz.service.MusicGroupStudentFeeService;
+import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
@@ -31,6 +32,9 @@ public class TaskController extends BaseController {
 	@Autowired
 	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
 	
+	@Autowired
+	private StudentCourseHomeworkService studentCourseHomeworkService;
+	
 	@GetMapping("/refreshPaymentFeeStatus")
 	// 刷新付费状态
 	public void refreshPaymentFeeStatus() {
@@ -67,15 +71,21 @@ public class TaskController extends BaseController {
 		teacherAttendanceService.pushNoSignOutMessage();
 	}
 
-	@GetMapping("/coursesScheduleRemind")
-	// 有课提醒
-	public void coursesScheduleRemind() {
-		courseScheduleService.coursesScheduleRemind();
+	@GetMapping("/studentCoursesScheduleRemind")
+	// 学生有课提醒
+	public void studentCoursesScheduleRemind() {
+		courseScheduleService.studentCoursesScheduleRemind();
 	}
 
 	@GetMapping("/studentSignInRemind")
-	// 上课提醒
+	// 学生上课提醒
 	public void studentSignInRemind() {
 		courseScheduleService.studentSignInRemind();
 	}
+
+	@GetMapping("/studentHomeworkRemind")
+	// 学生作业提醒
+	public void studentHomeworkRemind() {
+		studentCourseHomeworkService.homeworkRemind();
+	}
 }

+ 2 - 3
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherDefaultMusicGroupSalaryController.java → mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java

@@ -1,6 +1,5 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.page.TeacherMusicGroupSalaryQueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -14,9 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.page.TeacherMusicGroupSalaryQueryInfo;
 import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
 
 @RequestMapping("teacherDefaultMusicGroupSalary")
 @Api(tags = "教师薪酬服务")

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherLeaveRecordController.java → mec-web/src/main/java/com/ym/mec/web/controller/TeacherLeaveRecordController.java

@@ -1,4 +1,4 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.TeacherLeaveRecordDto;
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;