Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

周箭河 5 лет назад
Родитель
Сommit
baabd74c4f
24 измененных файлов с 320 добавлено и 63 удалено
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherHomeworkListDto.java
  2. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseQueryInfo.java
  5. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java
  6. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  7. 11 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java
  8. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesMessageServiceImpl.java
  9. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  10. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  11. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkReplyServiceImpl.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  14. 3 3
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  15. 10 2
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  16. 23 6
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  17. 24 22
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  18. 88 0
      mec-common/common-core/src/main/java/com/ym/mec/common/config/ParameterCheckServletRequestWrapper.java
  19. 5 5
      mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java
  20. 1 1
      mec-student/src/main/java/com/ym/mec/student/StudentApplication.java
  21. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  22. 6 6
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java
  23. 10 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  24. 1 1
      mec-web/src/main/java/com/ym/mec/web/WebApplication.java

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherHomeworkListDto.java

@@ -50,6 +50,16 @@ public class TeacherHomeworkListDto {
 
     private int isSubmit;
 
+    private int status;
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
     public Date getStartClassTime() {
         return startClassTime;
     }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -51,6 +51,18 @@ public class ExtracurricularExercises {
 
 	private int isSubmit;
 
+	private int status;
+	
+	private String organName;
+
+	public int getStatus() {
+		return status;
+	}
+
+	public void setStatus(int status) {
+		this.status = status;
+	}
+
 	public int getIsReplied() {
 		return isReplied;
 	}
@@ -171,6 +183,14 @@ public class ExtracurricularExercises {
 		this.teacher = teacher;
 	}
 
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercisesReply.java

@@ -43,6 +43,8 @@ public class ExtracurricularExercisesReply {
 	/** 是否已查看 */
 	private Integer isView;
 	
+	private String organName;
+	
 	public ExtracurricularExercises getExtracurricularExercises() {
 		return extracurricularExercises;
 	}
@@ -139,6 +141,14 @@ public class ExtracurricularExercisesReply {
 		this.user = user;
 	}
 
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -19,6 +19,8 @@ public class ExtraExercilseQueryInfo extends QueryInfo {
 	private Date createTime;
 
 	private String title;// 作业标题
+	
+	private Integer organId;
 
 	private Date assignStartTime;// 布置作业的开始时间
 
@@ -64,6 +66,14 @@ public class ExtraExercilseQueryInfo extends QueryInfo {
 		this.title = title;
 	}
 
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
 	public Date getAssignStartTime() {
 		return assignStartTime;
 	}

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java

@@ -18,6 +18,17 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 
 	private String title;
 
+	/** 提交状态 */
+	private Integer status;
+	
+	/** 是否回复 */
+	private Integer isReplied;
+	
+	/** 是否已查看 */
+	private Integer isView;
+	
+	private Integer organId;
+	
 	private Date submitStartTime;// 提交作业的开始时间
 
 	private Date submitEndTime;// 提交作业的结束时间
@@ -46,6 +57,14 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 		this.studentId = studentId;
 	}
 
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
 	public Date getSubmitStartTime() {
 		return submitStartTime;
 	}
@@ -69,4 +88,28 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 	public void setTitle(String title) {
 		this.title = title;
 	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Integer getIsReplied() {
+		return isReplied;
+	}
+
+	public void setIsReplied(Integer isReplied) {
+		this.isReplied = isReplied;
+	}
+
+	public Integer getIsView() {
+		return isView;
+	}
+
+	public void setIsView(Integer isView) {
+		this.isView = isView;
+	}
 }

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

@@ -71,6 +71,14 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
     List<BasicUserDto> queryGroupStudents(Integer id, String search);
 
     /**
+     * 获取教师通讯录学员列表
+     * @param id
+     * @param search
+     * @return
+     */
+    List<BasicUserDto> queryGroupStudentList(Integer id, String search);
+
+    /**
      * 查询分部所有老师
      * @param organId
      * @return

+ 11 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java

@@ -59,14 +59,21 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 				if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 					continue;
 				}
-				Map<YesOrNoEnum, List<StudentCourseHomework>> replyStudentsMap = studentCourseHomeworks.stream().collect(Collectors.groupingBy(StudentCourseHomework::getIsReplied));
-				if(CollectionUtils.isEmpty(replyStudentsMap.get(YesOrNoEnum.NO))){
+				long noRepliedNum=studentCourseHomeworks.stream().filter(e -> e.getStatus().equals(YesOrNoEnum.YES)&&e.getIsReplied().equals(YesOrNoEnum.NO)).count();
+				if(noRepliedNum<=0){
 					teacherHomeworkListDto.setIsReplied(YesOrNoEnum.YES.getCode());
 				}
-				List<StudentCourseHomework> collect = studentCourseHomeworks.stream().filter(e -> Objects.nonNull(e.getAttachments())).collect(Collectors.toList());
-				if(!CollectionUtils.isEmpty(collect)&&collect.size()>0){
+				long notSubmitNum = studentCourseHomeworks.stream().filter(e -> e.getStatus().equals(YesOrNoEnum.NO)).count();
+				if(notSubmitNum<=0){
 					teacherHomeworkListDto.setIsSubmit(1);
 				}
+				if(noRepliedNum>0){
+					teacherHomeworkListDto.setStatus(1);
+				}else if(noRepliedNum<=0&&notSubmitNum>0){
+					teacherHomeworkListDto.setStatus(2);
+				}else if(noRepliedNum<=0&&notSubmitNum<=0){
+					teacherHomeworkListDto.setStatus(3);
+				}
 			}
 		}
 		if (count != 0) {
@@ -90,7 +97,6 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 	@Override
 	public void homeworkNoReplyRemind() {
 		List<Mapper> list = courseHomeworkDao.queryTeacerNoReplyNum();
-
 		for (Mapper mapper : list) {
 			Map<Integer, String> receivers = new HashMap<>();
 			Integer userId = (Integer) mapper.getKey();

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

@@ -60,9 +60,11 @@ public class ExtracurricularExercisesMessageServiceImpl extends BaseServiceImpl<
 			throw new BizException("课外训练不存在");
 		}
 		ExtracurricularExercises extracurricularExercises = extracurricularExercisesDao.get(extracurricularExercisesReply.getExtracurricularExercisesId());
-		if("TEACHER".equals(extracurricularExercisesMessage.getRole())&&Objects.nonNull(extracurricularExercisesReply.getAttachments())){
-			extracurricularExercisesReply.setIsReplied(1);
-			extracurricularExercisesReplyDao.update(extracurricularExercisesReply);
+		if("TEACHER".equals(extracurricularExercisesMessage.getRole())){
+			if(extracurricularExercisesReply.getIsReplied()==0&&Objects.nonNull(extracurricularExercisesReply.getAttachments())){
+				extracurricularExercisesReply.setIsReplied(1);
+				extracurricularExercisesReplyDao.update(extracurricularExercisesReply);
+			}
 
 			Map<Integer, String> userMap = new HashMap<>();
 			userMap.put(extracurricularExercisesReply.getUserId(),extracurricularExercisesReply.getUserId().toString());

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

@@ -68,6 +68,9 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 	@Override
 	public CourseHomeworkStudentDetailDto findStudentExtraExerciseDetail(Long studentExerciseId) {
 		ExtraExerciseStudentsDto extraExerciseReply = extracurricularExercisesReplyDao.findExtraExerciseReply(studentExerciseId);
+		if(extraExerciseReply == null){
+			throw new BizException("找不到学生作业记录");
+		}
 		CourseHomeworkStudentDetailDto detail=new CourseHomeworkStudentDetailDto();
 		detail.setCourseHomeworkId(extraExerciseReply.getId());
 		detail.setClassGroupName(extraExerciseReply.getTitle() + "•" + extraExerciseReply.getStudentName());

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -106,14 +106,21 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 				if(CollectionUtils.isEmpty(extracurricularExercisesReplies)){
 					continue;
 				}
-				long repliedNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsReplied() == 0).count();
-				if(repliedNum<=0){
+				long noRepliedNum = extracurricularExercisesReplies.stream().filter(e -> e.getStatus()==1&&e.getIsReplied() == 0).count();
+				if(noRepliedNum<=0){
 					extracurricularExercises.setIsReplied(1);
 				}
-				long submitNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsView() == 1).count();
-				if(submitNum>0){
+				long notSubmitNum = extracurricularExercisesReplies.stream().filter(e -> e.getStatus() == 0).count();
+				if(notSubmitNum<=0){
 					extracurricularExercises.setIsSubmit(1);
 				}
+				if(noRepliedNum>0){
+					extracurricularExercises.setStatus(1);
+				}else if(noRepliedNum<=0&&notSubmitNum>0){
+					extracurricularExercises.setStatus(2);
+				}else if(noRepliedNum<=0&&notSubmitNum<=0){
+					extracurricularExercises.setStatus(3);
+				}
 			}
 
 			Map<String, List<ExtracurricularExercises>> collect = dataList.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getCreateTime(), "yyyy-MM-dd")));

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

@@ -78,9 +78,11 @@ public class StudentCourseHomeworkReplyServiceImpl extends BaseServiceImpl<Long,
 		if(Objects.isNull(studentCourseHomework)){
 			throw new BizException("请指定需要回复的作业");
 		}
-		studentCourseHomeworkService.updateReplyStatus(bean.getUserId(),
-				studentCourseHomework.getCourseHomeworkId(),
-				studentCourseHomework.getUserId());
+		if(Objects.nonNull(studentCourseHomework.getAttachments())){
+			studentCourseHomeworkService.updateReplyStatus(bean.getUserId(),
+					studentCourseHomework.getCourseHomeworkId(),
+					studentCourseHomework.getUserId());
+		}
 
 		CourseSchedule courseSchedule = courseScheduleDao.get(studentCourseHomework.getCourseScheduleId());
 		Map<Integer, String> userMap = new HashMap<>();

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -151,6 +151,17 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
+	public List<BasicUserDto> queryGroupStudentList(Integer teacherId, String search) {
+		//获取关联的学员列表
+		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+		List<BasicUserDto> teachers = new ArrayList<>();
+		if(studentIds.size() > 0){
+			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
+		}
+		return teachers.stream().distinct().collect(Collectors.toList());
+	}
+
+	@Override
 	public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
 		//获取关联的学员列表
 		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);

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

@@ -2093,7 +2093,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     	for(Integer userId:studentSurplusClassFees.keySet()){
 			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId,DealStatusEnum.SUCCESS.getCode());
 			if(null==studentPaymentOrder){
-				throw new BizException("未找到相关订单信息!");
+				throw new BizException("无法停止课程,需要全部学员退学后,才能停止,请先操作学员退学。");
 			}
 			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());

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

@@ -428,10 +428,10 @@
         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})
-        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})
+        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},'%')
+            AND (cg.name_ LIKE CONCAT('%',#{search},'%') OR cg.group_name_ LIKE CONCAT('%',#{search},'%'))
         </if>
         GROUP BY cg.id_
     </select>

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

@@ -20,6 +20,7 @@
 		<result column="expect_num_" property="expectNum" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
+		<result column="organ_name_" property="organName" />
 	</resultMap>
 
 	<sql id="queryPageCondition">
@@ -33,6 +34,9 @@
 			<if test="batchNo != null">
 				and batch_no_ = #{batchNo}
 			</if>
+			<if test="organId != null">
+				AND o.id_ = #{organId}
+			</if>
 			<if test="assignStartTime != null">
 				AND date(ee.create_time_) &gt;= #{assignStartTime}
 			</if>
@@ -108,14 +112,18 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="ExtracurricularExercises" parameterType="map">
-		SELECT ee.*,u.username_ FROM extracurricular_exercises ee left join sys_user u on ee.teacher_id_ = u.id_
+		SELECT ee.*,u.username_,o.name_ organ_name_ FROM extracurricular_exercises ee left join sys_user u on ee.teacher_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
 		<include refid="queryPageCondition"/>
 		ORDER BY id_ <include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(ee.id_) FROM extracurricular_exercises ee
+		SELECT COUNT(ee.id_) FROM extracurricular_exercises ee left join sys_user u on ee.teacher_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
 		<include refid="queryPageCondition"/>
 	</select>
 

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

@@ -19,6 +19,7 @@
 		<result column="status_" property="status" />
 		<result column="is_replied_" property="isReplied" />
 		<result column="is_view_" property="isView" />
+		<result column="organ_name_" property="organName" />
 	</resultMap>
 
 	<resultMap id="ExtraExerciseStudentsDto" type="com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto" extends="ExtracurricularExercisesReply">
@@ -33,19 +34,31 @@
 	<sql id="queryPageCondition">
 		<where>
 			<if test="extracurricularExercisesId != null">
-				extracurricular_exercises_id_ = #{extracurricularExercisesId}
+				AND extracurricular_exercises_id_ = #{extracurricularExercisesId}
 			</if>
 			<if test="teacherId != null">
-				teacher_id_ = #{teacherId}
+				AND teacher_id_ = #{teacherId}
+			</if>
+			<if test="organId != null">
+				AND o.id_ = #{organId}
 			</if>
 			<if test="studentId != null">
-				user_id_ = #{studentId}
+				AND user_id_ = #{studentId}
 			</if>
 			<if test="title != null">
-				title_ like '%' #{title} '%'
+				AND title_ like '%' #{title} '%'
+			</if>
+			<if test="status != null">
+				AND eer.status_ = #{status}
+			</if>
+			<if test="isReplied != null">
+				AND is_replied_ = #{isReplied}
+			</if>
+			<if test="isView != null">
+				AND is_view_ = #{isView}
 			</if>
 			<if test="search != null">
-				title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%')
+				AND title_ like concat('%',#{search},'%') or u.username_ like concat('%',#{search},'%')
 			</if>
 			<if test="submitStartTime != null">
 				AND date(eer.create_time_) &gt;= #{submitStartTime}
@@ -125,8 +138,10 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="ExtracurricularExercisesReply" parameterType="map">
-		SELECT eer.*,u.username_,ee.title_ FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
+		SELECT eer.*,u.username_,ee.title_,o.name_ organ_name_ FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
 		left join sys_user u on eer.user_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
 		<include refid="queryPageCondition"/>
 		 ORDER BY eer.id_ <include refid="global.limit"/>
 	</select>
@@ -135,6 +150,8 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(eer.id_) FROM extracurricular_exercises_reply eer left join extracurricular_exercises ee on eer.extracurricular_exercises_id_ = ee.id_
 		left join sys_user u on eer.user_id_ = u.id_
+		left join teacher t on t.id_ = ee.teacher_id_
+		left join organization o on o.id_ = t.organ_id_
 		<include refid="queryPageCondition"/>
 	</select>
 	

+ 24 - 22
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -391,15 +391,16 @@
 
     <select id="countStudentBuys" resultType="java.lang.Integer">
         SELECT COUNT(a.student_id_) FROM
-        (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate
-        FROM `practice_group` pg
-        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
-        WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL AND pg.group_status_ != 'CANCEL'
-        GROUP BY pg.`student_id_` ) a
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
+        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
-        on a.student_id_ = b.student_id_
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
+        left join `organization` o on o.`id_` = a.organ_id_
         <include refid="queryStudentBuysSql"/>
     </select>
     <resultMap id="queryStudentBuysMap" type="com.ym.mec.biz.dal.dto.StudentBuyPracticeDto">
@@ -413,20 +414,21 @@
         <result property="buyPractice" column="buy_practice_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <select id="queryStudentBuys" resultMap="queryStudentBuysMap">
-        SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,a.lastClassDate last_class_date_,
-        b.firstBuyTime first_buy_time_,
-        CASE WHEN DATEDIFF(b.firstBuyTime,a.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(b.firstBuyTime,a.lastClassDate) END interval_day_,
-        CASE WHEN b.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_ FROM
-        (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate
-        FROM `practice_group` pg
-        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
-        WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL AND pg.group_status_ != 'CANCEL'
-        GROUP BY pg.`student_id_` ) a
+        SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,
+        b.lastClassDate last_class_date_,c.firstBuyTime first_buy_time_,
+        CASE WHEN DATEDIFF(c.firstBuyTime,b.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(c.firstBuyTime,b.lastClassDate) END interval_day_,
+        CASE WHEN c.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_
+        FROM
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
+        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
-        on a.student_id_ = b.student_id_
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
-        left join `organization` o on o.`id_` = u.`organ_id_`
+        left join `organization` o on o.`id_` = a.organ_id_
         <include refid="queryStudentBuysSql"/>
         <include refid="global.limit"/>
     </select>
@@ -436,13 +438,13 @@
                 (u.id_ = #{search} OR u.`username_` LIKE CONCAT('%',#{search},'%'))
             </if>
             <if test="buyPractice != null and buyPractice == false">
-                AND b.firstBuyTime IS NULL
+                AND c.firstBuyTime IS NULL
             </if>
             <if test="buyPractice != null and buyPractice == true">
-                AND b.firstBuyTime IS NOT NULL
+                AND c.firstBuyTime IS NOT NULL
             </if>
             <if test="organId != null">
-                AND FIND_IN_SET(u.`organ_id_`,#{organId})
+                AND FIND_IN_SET(a.organ_id_`,#{organId})
             </if>
         </where>
     </sql>

+ 88 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/ParameterCheckServletRequestWrapper.java

@@ -0,0 +1,88 @@
+package com.ym.mec.common.config;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.StreamUtils;
+
+import com.vdurmont.emoji.EmojiParser;
+
+public class ParameterCheckServletRequestWrapper extends HttpServletRequestWrapper {
+
+	private byte[] requestBody;
+	private Charset charSet;
+
+	public ParameterCheckServletRequestWrapper(HttpServletRequest request) throws IOException {
+		super(request);
+
+		String requestBodyStr = getRequestPostStr(request);
+		if (StringUtils.isNotBlank(requestBodyStr)) {
+			requestBodyStr = EmojiParser.removeAllEmojis(requestBodyStr);
+			requestBody = requestBodyStr.getBytes(charSet);
+		} else {
+			requestBody = new byte[0];
+		}
+	}
+
+	public String getRequestPostStr(HttpServletRequest request) throws IOException {
+		String charSetStr = request.getCharacterEncoding();
+		if (charSetStr == null) {
+			charSetStr = "UTF-8";
+		}
+		charSet = Charset.forName(charSetStr);
+
+		return StreamUtils.copyToString(request.getInputStream(), charSet);
+	}
+
+	/**
+	 * 重写 getInputStream()
+	 */
+	@Override
+	public ServletInputStream getInputStream() {
+		if (requestBody == null) {
+			requestBody = new byte[0];
+		}
+
+		final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(requestBody);
+
+		return new ServletInputStream() {
+			@Override
+			public boolean isFinished() {
+				return false;
+			}
+
+			@Override
+			public boolean isReady() {
+				return false;
+			}
+
+			@Override
+			public void setReadListener(ReadListener readListener) {
+
+			}
+
+			@Override
+			public int read() {
+				return byteArrayInputStream.read();
+			}
+		};
+	}
+
+	/**
+	 * 重写 getReader()
+	 */
+	@Override
+	public BufferedReader getReader() {
+		return new BufferedReader(new InputStreamReader(getInputStream()));
+	}
+
+}

+ 5 - 5
mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java

@@ -9,11 +9,11 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
 
 import org.apache.commons.lang3.StringUtils;
 
 import com.vdurmont.emoji.EmojiParser;
+import com.ym.mec.common.config.ParameterCheckServletRequestWrapper;
 
 public class EmojiEncodingFilter implements Filter {
 
@@ -24,7 +24,7 @@ public class EmojiEncodingFilter implements Filter {
 
 	@Override
 	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
-		request = new HttpServletRequestWrapper((HttpServletRequest) request) {
+		request = new ParameterCheckServletRequestWrapper((HttpServletRequest) request) {
 
 			@Override
 			public String getParameter(String name) {
@@ -32,7 +32,7 @@ public class EmojiEncodingFilter implements Filter {
 				String value = super.getParameter(name);
 				if (StringUtils.isNotBlank(value)) {
 					// 返回值之前 先进行 Emoji 转化
-					return EmojiParser.parseToAliases(value);
+					return EmojiParser.removeAllEmojis(value);
 				}
 				return value;
 			}
@@ -44,14 +44,14 @@ public class EmojiEncodingFilter implements Filter {
 				String[] values = super.getParameterValues(name);
 				if (values != null) {
 					for (int i = 0; i < values.length; i++) {
-						values[i] = EmojiParser.parseToAliases(values[i]);
+						values[i] = EmojiParser.removeAllEmojis(values[i]);
 					}
 				}
 				return values;
 			}
 
 		};
-
+		
 		chain.doFilter(request, response);
 	}
 

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

@@ -42,7 +42,7 @@ public class StudentApplication {
 	 * 注册filter
 	 * @return
 	 */
-	//@Bean
+	@Bean
 	public FilterRegistrationBean<Filter> filterRegistrationBean() {
 		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
 		// 注入过滤器

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

@@ -42,7 +42,7 @@ public class TeacherApplication {
 	 * 注册filter
 	 * @return
 	 */
-	//@Bean
+	@Bean
 	public FilterRegistrationBean<Filter> filterRegistrationBean() {
 		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
 		// 注入过滤器

+ 6 - 6
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java

@@ -86,13 +86,13 @@ public class CourseHomeworkController extends BaseController {
     @ApiOperation(value = "获取学生作业界面详细信息-公用")
     @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
     public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID,Long userId, boolean extra){
-        StudentCourseHomework studentCourseHomework1 = studentCourseHomeworkService.get(courseScheduleID);
-        if(Objects.isNull(studentCourseHomework1)){
-            return failed("作业不存在");
-        }
         if(!extra){
+            StudentCourseHomework studentCourseHomework1 = studentCourseHomeworkService.get(courseScheduleID);
+            if(Objects.isNull(studentCourseHomework1)){
+                return failed("作业不存在");
+            }
             CourseHomeworkStudentDetailDto courseHomeworkStudentDetail = studentCourseHomeworkService.findCourseHomeworkStudentDetail(studentCourseHomework1.getCourseScheduleId(), userId);
-            if(Objects.nonNull(courseHomeworkStudentDetail)){
+            if(Objects.nonNull(courseHomeworkStudentDetail)&&Objects.nonNull(courseHomeworkStudentDetail.getAttachments())){
                 StudentCourseHomework studentCourseHomework=new StudentCourseHomework();
                 studentCourseHomework.setId(studentCourseHomework1.getId());
                 studentCourseHomework.setIsView(YesOrNoEnum.YES);
@@ -104,7 +104,7 @@ public class CourseHomeworkController extends BaseController {
             if(Objects.isNull(studentExtraExerciseDetail)){
                 return failed("作业不存在");
             }
-            if(Objects.nonNull(studentExtraExerciseDetail.getAttachments())){
+            if(Objects.nonNull(studentExtraExerciseDetail.getAttachments())&&studentExtraExerciseDetail.getStatus().equals(YesOrNoEnum.YES)){
                 ExtracurricularExercisesReply extracurricularExercisesReply=new ExtracurricularExercisesReply();
                 extracurricularExercisesReply.setId(studentExtraExerciseDetail.getCourseHomeworkId());
                 extracurricularExercisesReply.setIsView(1);

+ 10 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -126,6 +126,16 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.queryGroupStudents(sysUser.getId(),search));
     }
 
+    @ApiOperation(value = "获取当前教师通讯录学员列表")
+    @GetMapping("/queryGroupStudentList")
+    public Object queryGroupStudentList(String search){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("获取用户信息失败");
+        }
+        return succeed(teacherService.queryGroupStudentList(sysUser.getId(),search));
+    }
+
     @ApiOperation(value = "分页查询群公告列表")
     @GetMapping(value = "/queryNoticePage")
     public Object queryNoticePage(QueryInfo queryInfo){

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

@@ -42,7 +42,7 @@ public class WebApplication {
 	 * 注册filter
 	 * @return
 	 */
-	//@Bean
+	@Bean
 	public FilterRegistrationBean<Filter> filterRegistrationBean() {
 		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
 		// 注入过滤器