Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
0233db2096
25 changed files with 317 additions and 106 deletions
  1. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseHomeworkDao.java
  2. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java
  3. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java
  4. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java
  5. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  7. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  8. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  9. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java
  10. 14 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  12. 93 54
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  13. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkReplyServiceImpl.java
  15. 35 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  16. 4 1
      mec-biz/src/main/resources/config/contracts/courses.ftl
  17. 6 6
      mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml
  18. 9 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  19. 8 4
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  20. 6 1
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  21. 2 2
      mec-task/src/main/java/com/ym/mec/task/jobs/StudentCoursesScheduleRemaindTask.java
  22. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  23. 21 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  24. 18 4
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupSubjectPlanController.java
  25. 15 5
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.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);
 
 }

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

+ 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);

+ 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);

+ 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();
     
     /**
      * 上课提醒

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

@@ -202,7 +202,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param updateExpectedNumDtos
 	 * @return
 	 */
-    int updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos);
+	void updateExpectedStudentNum(List<UpdateExpectedNumDto> updateExpectedNumDtos);
 
 	/**
 	 * 开启乐团(筹备中 -->  进行中)
@@ -215,4 +215,16 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @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();
 }

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

@@ -54,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;
@@ -630,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) {
@@ -641,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

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

@@ -846,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();

+ 93 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -125,7 +125,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         List<SubjectRegisterDto> subjectRegisters = subFeeSettingDto.getSubjectRegisters();
         String musicGroupId = idGeneratorService.generatorId() + "";
         musicGroup.setId(musicGroupId);
-        musicGroup.setStatus(MusicGroupStatusEnum.DRAFT);
+        if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT && musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT){
+            throw new Exception("乐团初始状态错误");
+        }
         // 保存乐团基本信息
         musicGroupDao.insert(musicGroup);
         // 保存乐团付费主体列表
@@ -173,7 +175,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupSubjectGoodsGroupDao.batchInsert(musicGroupSubjectGoodsGroups,musicGroupId);
         }
         // 记录创建日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "保存乐团草稿", sysUser.getId(), ""));
+        String event = musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT?"新建乐团,提交审核":"保存乐团草稿";
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, event, sysUser.getId(), ""));
         return musicGroupId;
     }
 
@@ -189,8 +192,8 @@ 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)));
@@ -208,8 +211,10 @@ 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
@@ -242,7 +247,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new Exception("乐团信息不存在");
         }
         if(musicGroup.getStatus() != statusEnum){
-            throw new Exception("乐团状态异常");
+            throw new Exception("当前乐团状态不支持此操作");
         }
         musicGroup.setUpdateTime(date);
         return musicGroup;
@@ -262,6 +267,33 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @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);
+    }
+
+    @Override
     public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
         List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
         Set<String> musicGroupIds = musicCardDtos.stream().map(MusicCardDto::getMusicGroupId).collect(Collectors.toSet());
@@ -683,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

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

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

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

+ 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.expectedStudentNum}
-            </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>

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

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

@@ -209,7 +209,7 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "调整班级(临时调整)")
     @PostMapping("/revisionClassGroup")
     @PreAuthorize("@pcs.hasPermissions('classGroup/revisionClassGroup')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "添加班级结构", required = true, dataType = "String")})
+    @ApiImplicitParams({@ApiImplicitParam(name = "ClassGroup4MixDto", value = "添加班级结构", required = true, dataType = "String")})
     public HttpResponseResult revisionClassGroup(@RequestBody ClassGroup4MixDto classGroup4MixDto) throws Exception {
         return succeed(classGroupService.classGroupSnap(classGroup4MixDto));
     }

+ 21 - 1
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 = "根据乐团编号查询乐团详情")
@@ -143,6 +144,25 @@ public class MusicGroupController extends BaseController {
 		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();
+	}
 }