Explorar o código

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge %!s(int64=5) %!d(string=hai) anos
pai
achega
fc24435089
Modificáronse 25 ficheiros con 286 adicións e 36 borrados
  1. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  2. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseReviewDto.java
  3. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java
  6. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  8. 1 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  9. 42 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  10. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  11. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  12. 23 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  13. 3 3
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  14. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  15. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml
  16. 2 2
      mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml
  17. 6 0
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  18. 98 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  19. 6 0
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  20. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  21. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  22. 6 0
      mec-student/src/main/java/com/ym/mec/student/controller/CourseGroupController.java
  23. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/PushNeedReview2TeacherTask.java
  24. 4 4
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  25. 9 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -430,4 +430,18 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     Set<Integer> findCommEducationalTeacherId(Integer studentId);
+
+    /**
+     * 获取教师关联的学员列表
+     * @param teacherId
+     * @return
+     */
+    Set<Integer> queryCourseClassStudentIds(Integer teacherId);
+
+    /**
+     * 获取教师关联的老师列表
+     * @param teacherId
+     * @return
+     */
+    Set<Integer> queryCourseClassTeacherIds(Integer teacherId);
 }

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

@@ -48,6 +48,9 @@ public class CourseReviewDto {
     @ApiModelProperty(value = "教务评价",required = false)
     private String courseReview;
 
+    @ApiModelProperty(value = "老师id",required = false)
+    private Integer teacherId;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -159,4 +162,12 @@ public class CourseReviewDto {
     public void setClassDate(Date classDate) {
         this.classDate = classDate;
     }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -46,6 +46,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_SMS_TEACHING_SCHOOL_CHANGE("STUDENT_SMS_TEACHING_SCHOOL_CHANGE", "教学点变动"),
     STUDENT_PUSH_TEACHING_SCHOOL_CHANGE("STUDENT_PUSH_TEACHING_SCHOOL_CHANGE", "教学点变动"),
     STUDENT_PUSH_JOB_MESSAGE("STUDENT_PUSH_JOB_MESSAGE", "作业提醒"),
+    HOMEWORK_REMIND("HOMEWORK_REMIND", "作业提醒-网管课"),
     STUDENT_PUSH_CLASS_MESSAGE("STUDENT_PUSH_CLASS_MESSAGE", "班级消息"),
 
     TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN("TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN", "乐团课新增安排"),

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java

@@ -24,8 +24,18 @@ public class PracticeGroupQueryInfo extends QueryInfo {
 
     private Integer educationalTeacherId;
 
+    private Boolean hasEducationalTeacherId;
+
     private boolean isExport = false;
 
+    public Boolean getHasEducationalTeacherId() {
+        return hasEducationalTeacherId;
+    }
+
+    public void setHasEducationalTeacherId(Boolean hasEducationalTeacherId) {
+        this.hasEducationalTeacherId = hasEducationalTeacherId;
+    }
+
     public Integer getEducationalTeacherId() {
         return educationalTeacherId;
     }

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

@@ -22,6 +22,16 @@ public class VipGroupQueryInfo extends QueryInfo {
 
     private Integer educationalTeacherId;
 
+    private Boolean hasEducationalTeacherId;
+
+    public Boolean getHasEducationalTeacherId() {
+        return hasEducationalTeacherId;
+    }
+
+    public void setHasEducationalTeacherId(Boolean hasEducationalTeacherId) {
+        this.hasEducationalTeacherId = hasEducationalTeacherId;
+    }
+
     public Integer getEducationalTeacherId() {
         return educationalTeacherId;
     }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java

@@ -55,5 +55,9 @@ public interface CourseReviewService extends BaseService<Integer, CourseSchedule
 	 */
 	CourseScheduleReview updateReview(CourseScheduleReview courseScheduleReview);
 
+	/**
+	 * 推送待填写评价给老师
+	 */
+	void pushNeedReview2Teacher();
 
 }

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

@@ -63,7 +63,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
     List<ImGroupModel> queryTeacherGroups(Integer userId,String search);
 
     /**
-     * 获取和当前教师相关的学员列表
+     * 获取教师通讯录
      * @param id
      * @param search
      * @return

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

@@ -713,12 +713,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ImGroupModel> imGroupModels = classGroupDao.queryUserMusicGroups(userId, search);
         imGroupModels.addAll(classGroupDao.queryUserVipGroups(userId, search));
         imGroupModels.addAll(classGroupDao.queryUserCommGroups(userId, search));
+
         if (imGroupModels != null && imGroupModels.size() > 0) {
-//            Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
-            //获取班级老师总数map
-//            Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))), HashMap.class);
             imGroupModels.forEach(e -> {
-//                Integer num = numsMap.get(Integer.parseInt(e.getId()));
                 e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
             });
         }

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

@@ -82,8 +82,16 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
     private CourseHomeworkDao courseHomeworkDao;
 
     @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private TeacherDao teacherDao;
+
+    @Autowired
     private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
 
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Integer, CourseScheduleReview> getDAO() {
@@ -166,7 +174,9 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
             throw new BizException("评论提交失败,请重试");
         }
 
-        if(StringUtils.isNotBlank(courseScheduleReview.getHomeWork())){
+        CourseHomework existHomework = courseHomeworkDao.findByCourseSchedule(courseScheduleId.longValue());
+
+        if(StringUtils.isNotBlank(courseScheduleReview.getHomeWork())&&Objects.isNull(existHomework)){
             //新增课堂作业
             CourseHomework courseHomework=new CourseHomework();
             courseHomework.setContent(courseScheduleReview.getHomeWork());
@@ -182,6 +192,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
             if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
                 List<StudentCourseHomework> studentCourseHomeworks=new ArrayList<>();
+                Map<Integer, String> userMap = new HashMap<>();
                 for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
                     StudentCourseHomework studentCourseHomework=new StudentCourseHomework();
                     studentCourseHomework.setCourseHomeworkId(courseHomework.getId());
@@ -193,8 +204,14 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
                     studentCourseHomework.setIsView(YesOrNoEnum.NO);
                     studentCourseHomework.setIsReplied(YesOrNoEnum.NO);
                     studentCourseHomeworks.add(studentCourseHomework);
+                    userMap.put(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getUserId().toString());
                 }
                 studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
+                Teacher teacher = teacherDao.get(courseScheduleReview.getTeacherId());
+                String dateStr=DateUtil.dateToString(DateUtil.addDays(date,1), "MM月dd日");
+                String notifyUrl="3?courseScheduleID="+courseSchedule.getId()+"&studentCourseHomeworkId="+courseHomework.getId();
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_REMIND,
+                        userMap, null, 0, notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
             }
         }
 
@@ -289,4 +306,28 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
         return courseScheduleReview;
     }
+
+    public void pushNeedReview2Teacher() {
+        CourseReviewQueryInfo courseReviewQueryInfo = new CourseReviewQueryInfo();
+        courseReviewQueryInfo.setHasReview(0);
+        courseReviewQueryInfo.setRows(10000);
+        PageInfo<CourseReviewDto> practiceGroupReviews = findPracticeGroupReviews(courseReviewQueryInfo);
+
+        if(practiceGroupReviews.getTotal() <=0){
+          return;
+        }
+        Map<Integer, List<CourseReviewDto>> teacherNeedReview = practiceGroupReviews.getRows().stream().collect(Collectors.groupingBy(CourseReviewDto::getTeacherId));
+
+        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+
+        String pushUrl = teacherBaseUrl + "/#/manageEvaluation";
+        Map<Integer, String> userMap = new HashMap<>();
+        for (Map.Entry<Integer, List<CourseReviewDto>> integerListEntry : teacherNeedReview.entrySet()) {
+            userMap.put(integerListEntry.getKey(), integerListEntry.getKey().toString());
+        }
+
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.NEED_POST_STUDY_REPORT,
+                userMap, null, 0, "8?" + pushUrl, "TEACHER");
+
+    }
 }

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

@@ -4056,6 +4056,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		int count = coursesGroupDao.countTeacherCourseGroups(params);
 		if(count > 0){
 			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
 			List<CoursesGroup> courseGroups = coursesGroupDao.queryTeacherCourseGroups(params);
 			List<Long> collect = courseGroups.stream().map(e -> e.getId()).collect(Collectors.toList());
 			//获取冻结课时

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

@@ -2095,6 +2095,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 //声部名称列表
                 Map<Long, String> subjectNames = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
                 Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+//                List<Integer> collect = dataList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
+//                Map<Integer, String> educationNames = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(collect,",")));
 
                 Map<Integer, String> idNameMap=new HashMap<>();
                 if(!CollectionUtils.isEmpty(educationalTeacherIds)){

+ 23 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -143,12 +143,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		//获取教师所在班级列表
 		List<ImGroupModel> imGroupModels =  classGroupDao.queryTeacherGroups(userId,search);
 		if(imGroupModels != null && imGroupModels.size() > 0){
-//			Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
-			//获取班级老师总数map
-//			Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))),HashMap.class);
-
 			imGroupModels.forEach(e -> {
-//				Integer num = numsMap.get(Integer.parseInt(e.getId()));
 				e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
 			});
 		}
@@ -157,23 +152,28 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 
 	@Override
 	public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
+		//获取关联的学员列表
+		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+		//获取关联的老师列表
+		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+
 		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
 		List<BasicUserDto> teachers = new ArrayList<>();
 		if(musicGroups != null && musicGroups.size() > 0){
 			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
 			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIds = new HashSet<>();
+			Set<Integer> teacherIdSet = new HashSet<>();
 			if(musicGroupList != null && musicGroupList.size() > 0){
 				musicGroupList.forEach(e->{
-					teacherIds.add(e.getTeamTeacherId());
-					teacherIds.add(e.getEducationalTeacherId());
-					teacherIds.add(e.getDirectorUserId());
+					teacherIdSet.add(e.getTeamTeacherId());
+					teacherIdSet.add(e.getEducationalTeacherId());
+					teacherIdSet.add(e.getDirectorUserId());
 				});
 			}
-			teacherIds.remove(teacherId);
-			teacherIds.removeAll(Collections.singleton(null));
-			if(teacherIds.size() > 0){
-				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIds,","), search);
+			teacherIdSet.remove(teacherId);
+			teacherIdSet.removeAll(Collections.singleton(null));
+			if(teacherIdSet.size() > 0){
+				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search);
 			}
 		}
 		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
@@ -187,14 +187,18 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				});
 			}
 		}
+		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
+		studentIds.remove(teacherId);
 		//获取课程关联的学生列表
-		teachers.addAll(teacherDao.findCloseCourseStudentIds(teacherId, search));
+//		teachers.addAll(teacherDao.findCloseCourseStudentIds(teacherId, search));
 		//获取相关vip陪练教务的学员编号
-		teachers.addAll(teacherDao.findVipEducationalStudentId(teacherId,search));
-		teachers.addAll(teacherDao.findCommEducationalStudentId(teacherId,search));
-		teachers.addAll(teacherDao.findPracticeEducationalStudentId(teacherId,search));
-
-		return teachers.stream().distinct().collect(Collectors.toList());
+//		teachers.addAll(teacherDao.findVipEducationalStudentId(teacherId,search));
+//		teachers.addAll(teacherDao.findCommEducationalStudentId(teacherId,search));
+//		teachers.addAll(teacherDao.findPracticeEducationalStudentId(teacherId,search));
+		if(studentIds.size() > 0){
+			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
+		}
+		return teachers;
 	}
 
     @Override

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

@@ -290,7 +290,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
         <where>
-            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND vg.group_status_ = 4 AND cgsm.group_type_ = 'VIP'
+            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND vg.group_status_ = 2 AND cgsm.group_type_ = 'VIP'
             <if test="userId != null">
                 AND cgsm.user_id_ = #{userId}
             </if>
@@ -401,9 +401,9 @@
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_ AND cg.group_type_ = 'VIP'
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_ AND cg.group_type_ = 'COMM'
-        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR
-        mg.director_user_id_ = #{userId} OR csg.educational_teacher_id_ = #{userId} OR vg.educational_teacher_id_ = #{userId})
+        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId})
         AND cg.del_flag_ = 0 AND (mg.status_ = 'PROGRESS' OR vg.group_status_ = 2 OR csg.status_ = 'NORMAL')
+        OR (vg.group_status_ = 2 AND vg.educational_teacher_id_ =  #{userId}) OR (csg.status_ = 'NORMAL' AND csg.educational_teacher_id_ =  #{userId})
         <if test="search != null">
             AND cg.name_ LIKE CONCAT('%',#{search},'%')
         </if>

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

@@ -2749,7 +2749,7 @@
         LEFT JOIN course_schedule_evaluate cse ON cs.id_ = cse.course_schedule_id_
         WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType}
         GROUP BY cs.id_
-        ORDER BY cs.class_date_,cs.start_class_time_ DESC
+        ORDER BY cs.class_date_,cs.start_class_time_ ASC
     </select>
     <select id="getLastEndCourse" resultMap="CourseSchedule">
         SELECT cs.id_ FROM course_schedule cs

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

@@ -123,6 +123,7 @@
         <result column="student_review_" property="studentReview"/>
         <result column="hand_homework_" property="handHomework"/>
         <result column="course_review_" property="courseReview"/>
+        <result column="teacher_id" property="teacherId"/>
     </resultMap>
 
     <sql id="practiceGroupReviewsQueryCondition">
@@ -181,7 +182,7 @@
     </sql>
 
     <select id="getPracticeGroupReviewList" resultMap="CourseReviewDto">
-        SELECT cs.id_,cs.class_date_, pg.subject_id_,pg.organ_id_,pg.name_ coursre_name_,su.real_name_
+        SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, pg.subject_id_,pg.organ_id_,pg.name_ coursre_name_,su.real_name_
         teacher_name_,edsu.real_name_
         edu_teacher_name_,pg.buy_months_,csr.id_ review_id_, csc.score_ student_review_,csr.hand_homework_,csr.course_review_
         FROM course_schedule cs

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

@@ -136,13 +136,13 @@
 
     <select id="queryTeacherCourseGroups" resultMap="CoursesGroup">
 		SELECT * FROM courses_group
-		WHERE teacher_id_=#{userId} AND status_ IN ('APPLYING', 'NORMAL')
+		WHERE teacher_id_=#{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH')
 		ORDER BY id_ DESC
 		<include refid="global.limit"/>
     </select>
     <select id="countTeacherCourseGroups" resultType="int">
 		SELECT COUNT(0) FROM courses_group
-		WHERE teacher_id_ = #{userId} AND status_ IN ('APPLYING', 'NORMAL')
+		WHERE teacher_id_ = #{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH')
     </select>
     <select id="findFreezeMinutes" resultType="java.util.Map">
 		SELECT COUNT(DISTINCT cs.id_) * cg.single_class_minutes_ 'value',cg.id_ 'key' FROM courses_group cg

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

@@ -227,6 +227,12 @@
     <sql id="practiceGroupQueryCondition">
         <where>
             pg.group_status_='NORMAL'
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == true">
+                AND pg.educational_teacher_id_ IS NOT NULL
+            </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == false">
+                AND pg.educational_teacher_id_ IS NULL
+            </if>
             <if test="search!=null and search!=''">
                 AND (pg.name_ LIKE CONCAT('%',#{search},'%') OR pg.id_= #{search})
             </if>

+ 98 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -941,4 +941,102 @@
         LEFT JOIN courses_group vg ON vg.id_ = cgsm.music_group_id_
         WHERE cgsm.group_type_ = 'COMM' AND cgsm.user_id_ = #{userId}
     </select>
+    <select id="queryCourseClassStudentIds" resultType="java.lang.Integer">
+        SELECT cssp.user_id_ FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule_student_payment cssp ON csts.course_schedule_id_ = cssp.course_schedule_id_
+        WHERE csts.user_id_ = #{teacherId}
+        GROUP BY cssp.user_id_
+        UNION ALL
+        SELECT cssp.user_id_ FROM class_group_teacher_mapper cgtm
+        LEFT JOIN course_schedule_student_payment cssp ON cgtm.class_group_id_ = cssp.class_group_id_
+        WHERE cgtm.user_id_ = #{teacherId}
+        GROUP BY cssp.user_id_
+        UNION ALL
+        SELECT cssp.user_id_ FROM music_group mg
+        LEFT JOIN course_schedule_student_payment cssp ON mg.id_ = cssp.music_group_id_
+        WHERE (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId}) AND cssp.group_type_ = 'MUSIC'
+        UNION ALL
+        SELECT cssp.user_id_ FROM vip_group vg
+        LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'VIP'
+        UNION ALL
+        SELECT cssp.user_id_ FROM courses_group cg
+        LEFT JOIN course_schedule_student_payment cssp ON cg.id_ = cssp.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'COMM'
+        UNION ALL
+        SELECT cssp.user_id_ FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'PRACTICE'
+    </select>
+    <select id="queryCourseClassTeacherIds" resultType="java.lang.Integer">
+        SELECT csts.user_id_ FROM music_group mg
+        LEFT JOIN course_schedule_teacher_salary csts ON mg.id_ = csts.music_group_id_
+        WHERE csts.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM vip_group vg 
+        LEFT JOIN course_schedule_teacher_salary csts ON vg.id_ = csts.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'VIP'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM courses_group cg 
+        LEFT JOIN course_schedule_teacher_salary csts ON cg.id_ = csts.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT csts.user_id_ FROM practice_group pg 
+        LEFT JOIN course_schedule_teacher_salary csts ON pg.id_ = csts.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
+        GROUP BY csts.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM music_group mg
+        LEFT JOIN class_group_teacher_mapper cgtm ON mg.id_ = cgtm.music_group_id_
+        WHERE cgtm.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM vip_group vg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON vg.id_ = cgtm.music_group_id_
+        WHERE vg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP'
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM courses_group cg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.music_group_id_
+        WHERE cg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT cgtm.user_id_ FROM practice_group pg 
+        LEFT JOIN class_group_teacher_mapper cgtm ON pg.id_ = cgtm.music_group_id_
+        WHERE pg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
+        GROUP BY cgtm.user_id_
+        UNION ALL
+        SELECT vg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
+        LEFT JOIN vip_group vg ON vg.id_ = cgtm.music_group_id_
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP'
+        GROUP BY vg.educational_teacher_id_
+        UNION ALL
+        SELECT cg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
+        LEFT JOIN courses_group cg ON cg.id_ = cgtm.music_group_id_
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
+        GROUP BY cg.educational_teacher_id_
+        UNION ALL
+        SELECT pg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
+        LEFT JOIN practice_group pg ON pg.id_ = cgtm.music_group_id_
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
+        GROUP BY pg.educational_teacher_id_
+        UNION ALL
+        SELECT vg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
+        LEFT JOIN vip_group vg ON vg.id_ = csts.music_group_id_
+        WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'VIP'
+        GROUP BY vg.educational_teacher_id_
+        UNION ALL
+        SELECT cg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
+        LEFT JOIN courses_group cg ON cg.id_ = csts.music_group_id_
+        WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
+        GROUP BY cg.educational_teacher_id_
+        UNION ALL
+        SELECT pg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
+        LEFT JOIN practice_group pg ON pg.id_ = csts.music_group_id_
+        WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
+        GROUP BY pg.educational_teacher_id_
+    </select>
 </mapper>

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

@@ -168,6 +168,12 @@
             <if test="search!=null and search!=''">
                 AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_= #{search})
             </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == true">
+                AND vg.educational_teacher_id_ IS NOT NULL
+            </if>
+            <if test="hasEducationalTeacherId != null and hasEducationalTeacherId == false">
+                AND vg.educational_teacher_id_ IS NULL
+            </if>
             <if test="teacherId!=null">
                 AND vg.user_id_=#{teacherId}
             </if>

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

@@ -91,4 +91,9 @@ public interface TaskRemoteService {
 	//预生成待提交月报
 	@GetMapping("task/createEvaluate")
 	void createEvaluate();
+
+	//新增待填写评论定时推送(推送老师)
+	@GetMapping("task/pushNeedReview2Teacher")
+	void pushNeedReview2Teacher();
+
 }

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

@@ -115,4 +115,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void createEvaluate() {
 		logger.info("预生成待提交月报失败");
 	}
+
+	@Override
+	public void pushNeedReview2Teacher() {
+		logger.info("新增待填写评论推送失败");
+	}
 }

+ 6 - 0
mec-student/src/main/java/com/ym/mec/student/controller/CourseGroupController.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -29,6 +30,11 @@ public class CourseGroupController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @ApiOperation(value = "获取课程组详情")
+    @GetMapping("/getGroupDetail")
+    public HttpResponseResult getGroupDetail(Long groupId){
+        return succeed(coursesGroupService.getGroupDetail(groupId));
+    }
 
     @ApiOperation(value = "购买课程组")
     @PostMapping("/buyCourseGroup")

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/PushNeedReview2TeacherTask.java

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

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

@@ -173,9 +173,9 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","网管课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","网管课编号", "课程名称", "指导老师", "教务老师", "班级人数", "先上课单价", "线下课单价",
                     "当前课次", "总课次", "剩余课次","开课时间", "结束时间"}, new String[]{
-                    "organName","id", "name", "teacherName", "studentNum", "onlineClassesUnitPrice",
+                    "organName","id", "name", "teacherName", "educationalTeacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "currentClassTimes", "totalClassTimes", "subClassTimes","coursesStartDate", "coursesExpireDate"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -217,9 +217,9 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "指导老师", "班级人数", "先上课单价", "线下课单价",
                     "活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "开课时间", "结束时间", "申请时间"}, new String[]{
-                    "id", "name", "status.msg", "userName", "studentNum", "onlineClassesUnitPrice",
+                    "id", "name", "status.msg", "userName", "educationalTeacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "subClassTimes", "monthConsumeRate",
                     "courseStartDate", "coursesExpireDate", "registrationStartTime"}, rows);
             response.setContentType("application/octet-stream");

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

@@ -47,6 +47,9 @@ public class TaskController extends BaseController {
 	@Autowired
 	private CourseScheduleEvaluateService courseScheduleEvaluateService;
 
+	@Autowired
+	private CourseReviewService courseReviewService;
+
 	@GetMapping("/refreshPaymentFeeStatus")
 	// 刷新付费状态
 	public void refreshPaymentFeeStatus() {
@@ -173,4 +176,10 @@ public class TaskController extends BaseController {
 		courseScheduleEvaluateService.createEvaluate(new Date());
 	}
 
+	//新增待填写评论定时推送(推送老师)
+	@GetMapping("/pushNeedReview2Teacher")
+	public void pushNeedReview2Teacher(){
+		courseReviewService.pushNeedReview2Teacher();
+	}
+
 }