瀏覽代碼

Merge remote-tracking branch 'origin/feature_HW_20230331' into feature_HW_20230331

zouxuan 2 年之前
父節點
當前提交
791d5aedfe
共有 22 個文件被更改,包括 272 次插入36 次删除
  1. 4 0
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java
  2. 22 0
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java
  3. 31 0
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  4. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java
  5. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  6. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java
  8. 5 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  9. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImUserFriendService.java
  10. 32 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  11. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  12. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java
  14. 26 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  16. 3 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  17. 49 0
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  18. 27 0
      mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  19. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml
  20. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  21. 23 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  22. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

+ 4 - 0
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -34,4 +34,8 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
 	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
 
 
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
+
+    Integer queryHomework(Integer teacherId);
+
+    int queryPractice(@Param("userId") Integer userId, @Param("date") String date);
 }
 }

+ 22 - 0
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java

@@ -17,6 +17,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.List;
@@ -80,6 +82,9 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
                 }else if(sni.getTitle().equals("学员考勤异常")){
                 }else if(sni.getTitle().equals("学员考勤异常")){
                     //当前老师是否有学员考勤异常
                     //当前老师是否有学员考勤异常
                     sni.setRedDot(informationDao.countStudentAttendanceError(startTime,userId));
                     sni.setRedDot(informationDao.countStudentAttendanceError(startTime,userId));
+                } else if (sni.getTitle().equals("训练列表")) {
+                    //训练列表
+                    sni.setRedDot(queryHomework(userId));
                 }
                 }
     		}
     		}
             e.setInformationList(list);
             e.setInformationList(list);
@@ -92,6 +97,23 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
         return treeMenus;
         return treeMenus;
     }
     }
 
 
+    private Boolean queryHomework(Integer userId) {
+        int courseIdCount = informationDao.queryHomework(userId);
+        if (courseIdCount > 0) {
+            return true;
+        }
+
+        LocalDate now = LocalDate.now();
+        // 获取周一
+        LocalDate monday = now.minusDays(now.getDayOfWeek().getValue() - 1);
+        int practiceIdCount = informationDao.queryPractice(userId,monday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+        if (practiceIdCount > 0) {
+            return true;
+        }
+        return false;
+    }
+
     private List<SysNewsType> getChildren(SysNewsType rootMenu, List<SysNewsType> allMenus) {
     private List<SysNewsType> getChildren(SysNewsType rootMenu, List<SysNewsType> allMenus) {
         List<SysNewsType> childrenList = allMenus.stream().filter(e -> e.getParentId().equals(rootMenu.getId()))
         List<SysNewsType> childrenList = allMenus.stream().filter(e -> e.getParentId().equals(rootMenu.getId()))
                 .map(menu -> menu.setChildren(getChildren(menu, allMenus)))
                 .map(menu -> menu.setChildren(getChildren(menu, allMenus)))

+ 31 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -327,4 +327,35 @@
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 	</select>
 	</select>
+
+	<select id="queryHomework" resultType="java.lang.Integer">
+        SELECT count( csts.course_schedule_id_)
+        FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
+        left join lesson_examination le on le.course_schedule_id_ = csts.course_schedule_id_
+        left join teacher_attendance ta on ta.course_schedule_id_ = csts.course_schedule_id_
+        WHERE csts.user_id_ = #{teacherId}
+            AND cs.class_date_ = date_format(now(),'%Y-%m-%d')
+        AND FIND_IN_SET(cs.id_, se.course_ids_) and le.id_ is null
+        AND se.serve_type_ = 'HOMEWORK'
+        and ta.sign_out_status_ is null and ta.sign_in_status_ is not null
+    </select>
+
+	<select id="queryPractice" resultType="int">
+        SELECT
+            count(distinct sees.music_group_id_)
+        from
+            student_extracurricular_exercises_situation_ sees
+                LEFT JOIN
+            music_group mg
+            on mg.id_ = sees.music_group_id_
+        WHERE
+            sees.teacher_id_ = #{userId}
+          and sees.serve_type_ = 'EXERCISE'
+          and sees.actual_exercises_num_ = 0
+          and sees.monday_ = #{date}
+
+
+    </select>
 </mapper>
 </mapper>

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java

@@ -38,4 +38,8 @@ public interface ImGroupDao extends BaseDAO<String, ImGroup> {
     void updateMemberNum();
     void updateMemberNum();
 
 
     List<NameDto> queryNameByIds(@Param("ids") String ids);
     List<NameDto> queryNameByIds(@Param("ids") String ids);
+
+    List<ImGroup> queryByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("groupType") String groupType, @Param("musicGroupId") String musicGroupId, @Param("classType") String classType);
+
+    List<ImGroupMemberDto> queryMemberByIdV2(@Param("imGroupId") String imGroupId, @Param("search") String search, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
 }
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -41,4 +41,6 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 	void updateNullNickName();
 	void updateNullNickName();
 
 
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
+
+    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
 }
 }

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

@@ -73,6 +73,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH("STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH", "免费陪练课预约推送"),
     STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH("STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH", "免费陪练课预约推送"),
     TEACHER_PUSH_NEED_POST_STUDY_REPORT("TEACHER_PUSH_NEED_POST_STUDY_REPORT", "新增待填写月报"),
     TEACHER_PUSH_NEED_POST_STUDY_REPORT("TEACHER_PUSH_NEED_POST_STUDY_REPORT", "新增待填写月报"),
     STUDENT_PUSH_HOMEWORK_REMIND("STUDENT_PUSH_HOMEWORK_REMIND", "训练提醒-网管课"),
     STUDENT_PUSH_HOMEWORK_REMIND("STUDENT_PUSH_HOMEWORK_REMIND", "训练提醒-网管课"),
+    STUDENT_PUSH_HOMEWORK_REMIND_V2("STUDENT_PUSH_HOMEWORK_REMIND_V2", "训练提醒-网管课"),
     TEACHER_PUSH_COMM_NO_STUDENTS_PUSH("TEACHER_PUSH_COMM_NO_STUDENTS_PUSH", "对外课程组无学生提醒"),
     TEACHER_PUSH_COMM_NO_STUDENTS_PUSH("TEACHER_PUSH_COMM_NO_STUDENTS_PUSH", "对外课程组无学生提醒"),
     TEACHER_PUSH_HOMEWORK_SUBMIT("TEACHER_PUSH_HOMEWORK_SUBMIT", "学生提交训练提醒"),
     TEACHER_PUSH_HOMEWORK_SUBMIT("TEACHER_PUSH_HOMEWORK_SUBMIT", "学生提交训练提醒"),
     TEACHER_PUSH_HOMEWORK_REPLY("TEACHER_PUSH_HOMEWORK_REPLY", "学生训练回复提醒"),
     TEACHER_PUSH_HOMEWORK_REPLY("TEACHER_PUSH_HOMEWORK_REPLY", "学生训练回复提醒"),
@@ -83,6 +84,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     PUSH_NO_SUBMIT_LESSON_EXAMINATION("PUSH_NO_SUBMIT_LESSON_EXAMINATION", "测评提醒"),
     PUSH_NO_SUBMIT_LESSON_EXAMINATION("PUSH_NO_SUBMIT_LESSON_EXAMINATION", "测评提醒"),
     TEACHER_PUSH_LESSON_EXAMINATION_END("TEACHER_PUSH_LESSON_EXAMINATION_END", "测评提醒"),
     TEACHER_PUSH_LESSON_EXAMINATION_END("TEACHER_PUSH_LESSON_EXAMINATION_END", "测评提醒"),
     IM_HOMEWORK_REMIND("IM_HOMEWORK_REMIND", "训练提醒"),
     IM_HOMEWORK_REMIND("IM_HOMEWORK_REMIND", "训练提醒"),
+    IM_HOMEWORK_REMIND_V2("IM_HOMEWORK_REMIND_V2", "训练提醒"),
     IM_HOMEWORK_SUBMIT_PUSH("IM_HOMEWORK_SUBMIT_PUSH", "训练提交提醒"),
     IM_HOMEWORK_SUBMIT_PUSH("IM_HOMEWORK_SUBMIT_PUSH", "训练提交提醒"),
     IM_HOMEWORK_SUBMIT_PUSH_GROUP("IM_HOMEWORK_SUBMIT_PUSH_GROUP", "训练提交提醒"),
     IM_HOMEWORK_SUBMIT_PUSH_GROUP("IM_HOMEWORK_SUBMIT_PUSH_GROUP", "训练提交提醒"),
     IM_HOMEWORK_STUDENT_REPLY_PUSH("IM_HOMEWORK_STUDENT_REPLY_PUSH", "训练回复提醒"),
     IM_HOMEWORK_STUDENT_REPLY_PUSH("IM_HOMEWORK_STUDENT_REPLY_PUSH", "训练回复提醒"),
@@ -93,8 +95,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
      * 课外训练消息
      * 课外训练消息
      */
      */
     STUDENT_PUSH_EXTRA_REMIND("STUDENT_PUSH_EXTRA_REMIND", "训练提醒"),
     STUDENT_PUSH_EXTRA_REMIND("STUDENT_PUSH_EXTRA_REMIND", "训练提醒"),
+    STUDENT_PUSH_EXTRA_REMIND_V2("STUDENT_PUSH_EXTRA_REMIND_V2", "训练提醒"),
     EXTRA_REMIND_IM("EXTRA_REMIND_IM", "训练提醒"),
     EXTRA_REMIND_IM("EXTRA_REMIND_IM", "训练提醒"),
     EXTRA_REMIND_IM_DETAIL("EXTRA_REMIND_IM_DETAIL", "训练提醒"),
     EXTRA_REMIND_IM_DETAIL("EXTRA_REMIND_IM_DETAIL", "训练提醒"),
+    EXTRA_REMIND_IM_DETAIL_V2("EXTRA_REMIND_IM_DETAIL_V2", "训练提醒"),
     STUDENT_PUSH_EXTRA_REPLY("STUDENT_PUSH_EXTRA_REPLY", "训练点评提醒"),
     STUDENT_PUSH_EXTRA_REPLY("STUDENT_PUSH_EXTRA_REPLY", "训练点评提醒"),
     EXTRA_TEACHER_REPLY_IM("EXTRA_TEACHER_REPLY_IM", "训练点评提醒"),
     EXTRA_TEACHER_REPLY_IM("EXTRA_TEACHER_REPLY_IM", "训练点评提醒"),
     TEACHER_PUSH_EXTRA_SUBMIT("TEACHER_PUSH_EXTRA_SUBMIT", "训练提交提醒"),
     TEACHER_PUSH_EXTRA_SUBMIT("TEACHER_PUSH_EXTRA_SUBMIT", "训练提交提醒"),

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ExtraExercilseReplyQueryInfo.java

@@ -46,7 +46,17 @@ public class ExtraExercilseReplyQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "是否云教练作业")
 	@ApiModelProperty(value = "是否云教练作业")
 	private Boolean cloudHomeworkFlag;
 	private Boolean cloudHomeworkFlag;
 
 
-	public Boolean getCloudHomeworkFlag() {
+    private String versionTag;
+
+    public String getVersionTag() {
+        return versionTag;
+    }
+
+    public void setVersionTag(String versionTag) {
+        this.versionTag = versionTag;
+    }
+
+    public Boolean getCloudHomeworkFlag() {
 		return cloudHomeworkFlag;
 		return cloudHomeworkFlag;
 	}
 	}
 
 

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -4,10 +4,9 @@ import com.ym.mec.biz.dal.dto.ImGroupDto;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 
 
 public interface ImGroupService extends BaseService<String, ImGroup> {
 public interface ImGroupService extends BaseService<String, ImGroup> {
@@ -93,4 +92,8 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	* @date 2022/8/8 10:10
 	* @date 2022/8/8 10:10
 	*/
 	*/
 	List<NameDto> queryDetail(List<NameDto> nameDto);
 	List<NameDto> queryDetail(List<NameDto> nameDto);
+
+    List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType);
+
+    List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag);
 }
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
@@ -80,4 +81,6 @@ public interface ImUserFriendService extends BaseService<Long, ImUserFriend> {
 	 * @author zouxuan
 	 * @author zouxuan
 	 */
 	 */
 	void refreshGroupImUserFriend(String musicGroupId,GroupType groupType);
 	void refreshGroupImUserFriend(String musicGroupId,GroupType groupType);
+
+    List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag);
 }
 }

+ 32 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -179,23 +179,38 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 
 
         for (ExtracurricularExercisesReply extracurricularExercisesReply : extracurricularExercisesReplies) {
         for (ExtracurricularExercisesReply extracurricularExercisesReply : extracurricularExercisesReplies) {
             Integer studentId = extracurricularExercisesReply.getUserId();
             Integer studentId = extracurricularExercisesReply.getUserId();
-
-			String notifyUrl = "?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId() + "&extra=1";
-			String extra = "dayaedu" + notifyUrl + "&userId=" + studentId;
-			if (exercises.getMsgType() != ImSendTypeEnum.TXT){
-				sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM_DETAIL,exercises.getTeacherId().toString(),extra,
-						new String[]{studentId.toString()},
-						null, exercises.getTitle(), dateStr);
-			}else {
-				sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM,exercises.getTeacherId().toString(),extra,
-						new String[]{studentId.toString()},
-						null, exercises.getTitle(), dateStr,exercises.getContent());
-			}
-			Map<Integer, String> userMap = new HashMap<>();
-			userMap.put(studentId, studentId.toString());
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_EXTRA_REMIND,
-					userMap, null, 0, 3+notifyUrl, "STUDENT",
-					teacher.getRealName(),exercises.getTitle(), dateStr);
+            if (exercises.getVersionTag().equals("v2")) {
+
+                String notifyUrl = "?homeworkId=" + exercises.getId() + "&type=" +exercises.getGroupType();
+                String extra = "dayaedu" + notifyUrl ;
+                sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM_DETAIL_V2, exercises.getTeacherId().toString(), extra,
+                        new String[]{studentId.toString()},
+                        null, dateStr);
+
+                Map<Integer, String> userMap = new HashMap<>();
+                userMap.put(studentId, studentId.toString());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_EXTRA_REMIND_V2,
+                        userMap, null, 0, "homework" + notifyUrl, "STUDENT",
+                        teacher.getRealName());
+            } else {
+
+                String notifyUrl = "?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId() + "&extra=1";
+                String extra = "dayaedu" + notifyUrl + "&userId=" + studentId;
+                if (exercises.getMsgType() != ImSendTypeEnum.TXT) {
+                    sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM_DETAIL, exercises.getTeacherId().toString(), extra,
+                            new String[]{studentId.toString()},
+                            null, exercises.getTitle(), dateStr);
+                } else {
+                    sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM, exercises.getTeacherId().toString(), extra,
+                            new String[]{studentId.toString()},
+                            null, exercises.getTitle(), dateStr, exercises.getContent());
+                }
+                Map<Integer, String> userMap = new HashMap<>();
+                userMap.put(studentId, studentId.toString());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_EXTRA_REMIND,
+                        userMap, null, 0, 3 + notifyUrl, "STUDENT",
+                        teacher.getRealName(), exercises.getTitle(), dateStr);
+            }
 		}
 		}
 		studentServeService.updateExercisesSituation(exercises.getMusicGroupId(), new Date(), studentIds, exercises.getTeacherId());
 		studentServeService.updateExercisesSituation(exercises.getMusicGroupId(), new Date(), studentIds, exercises.getTeacherId());
 	}
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -245,4 +245,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 		}
 		}
         return dtos;
         return dtos;
     }
     }
+
+    @Override
+    public List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType) {
+        return imGroupDao.queryByUserIdV2(userId, search, groupType, musicGroupId, classType);
+    }
+
+    @Override
+    public List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
+        return imGroupDao.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag);
+    }
 }
 }

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

@@ -194,7 +194,16 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 //		executor.shutdown();
 //		executor.shutdown();
 	}
 	}
 
 
-	public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
+    @Override
+    public List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
+        // 逻辑过于复杂 拿出数据后筛选
+        return imUserFriendDao.queryFriendListByUserIdV2(userId, search,musicGroupId,subjectId,vipFlag);
+
+
+
+    }
+
+    public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
 		List<ImUserFriend> imUserFriends = new ArrayList<>();
 		List<ImUserFriend> imUserFriends = new ArrayList<>();
 		Set<Integer> educationIds = new HashSet<>();
 		Set<Integer> educationIds = new HashSet<>();
 		Integer repairUserId = null;
 		Integer repairUserId = null;

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

@@ -830,7 +830,7 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
                 }
                 }
 
 
                 // 如果是给学生布置的作业  名 : xx等多少名学员
                 // 如果是给学生布置的作业  名 : xx等多少名学员
-                if (StringUtils.isEmpty(courseHomeworkList.getMusicGroupId()) && courseHomeworkList.getClassGroupId() == null) {
+                if (courseHomeworkList.getClassGroupId() == null) {
                     String studentIdList = courseHomeworkList.getStudentIdList();
                     String studentIdList = courseHomeworkList.getStudentIdList();
                     if (StringUtils.isNotBlank(studentIdList)) {
                     if (StringUtils.isNotBlank(studentIdList)) {
 
 

+ 26 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -431,17 +431,32 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 						studentServeService.updateExercisesSituation(courseSchedule.getMusicGroupId(), courseSchedule.getClassDate(), studentIds, teacherAttendance.getTeacherId());
 						studentServeService.updateExercisesSituation(courseSchedule.getMusicGroupId(), courseSchedule.getClassDate(), studentIds, teacherAttendance.getTeacherId());
 
 
 						for (StudentCourseHomework studentCourseHomework : studentCourseHomeworks) {
 						for (StudentCourseHomework studentCourseHomework : studentCourseHomeworks) {
-							Map<Integer, String> userMap = new HashMap<>();
-							userMap.put(studentCourseHomework.getUserId(), studentCourseHomework.getUserId().toString());
-							String notifyUrl = "?courseScheduleID=" + courseSchedule.getId() + "&studentCourseHomeworkId=" + studentCourseHomework.getId() + "&extra=0";
-							String extra = "dayaedu" + notifyUrl + "&userId=" + studentCourseHomework.getUserId();
-
-							sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND, courseSchedule.getActualTeacherId().toString(), extra,
-									new String[]{studentCourseHomework.getUserId().toString()},
-									null, courseSchedule.getName(), dateStr, courseHomework.getContent());
-
-							sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_HOMEWORK_REMIND,
-									userMap, null, 0, 3 + notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
+                            if (versionTag.equals("v2")) {
+                                Map<Integer, String> userMap = new HashMap<>();
+                                userMap.put(studentCourseHomework.getUserId(), studentCourseHomework.getUserId().toString());
+                                String notifyUrl = "?homeworkId=" + courseHomework.getId() + "&type=" + ELessonTrainingType.HOMEWORK.getCode();
+                                String extra = "dayaedu" + notifyUrl ;
+
+                                sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND_V2, courseSchedule.getActualTeacherId().toString(), extra,
+                                        new String[]{studentCourseHomework.getUserId().toString()},
+                                        null, courseSchedule.getName(), dateStr);
+
+                                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_HOMEWORK_REMIND_V2,
+                                        userMap, null, 0, "homework" + notifyUrl, "STUDENT", teacher.getRealName());
+
+                            } else {
+                                Map<Integer, String> userMap = new HashMap<>();
+                                userMap.put(studentCourseHomework.getUserId(), studentCourseHomework.getUserId().toString());
+                                String notifyUrl = "?courseScheduleID=" + courseSchedule.getId() + "&studentCourseHomeworkId=" + studentCourseHomework.getId() + "&extra=0";
+                                String extra = "dayaedu" + notifyUrl + "&userId=" + studentCourseHomework.getUserId();
+
+                                sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_REMIND, courseSchedule.getActualTeacherId().toString(), extra,
+                                        new String[]{studentCourseHomework.getUserId().toString()},
+                                        null, courseSchedule.getName(), dateStr, courseHomework.getContent());
+
+                                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_HOMEWORK_REMIND,
+                                        userMap, null, 0, 3 + notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
+                            }
 						}
 						}
 					}
 					}
                     if (!CollectionUtils.isEmpty(studentLessonTrainingDetails)) {
                     if (!CollectionUtils.isEmpty(studentLessonTrainingDetails)) {

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

@@ -313,7 +313,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implem
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
+    public List<ImUserFriendDto>  queryGroupStudents1(Integer teacherId, String search) {
         Set<BasicUserDto> basicUserDtos = new HashSet<>();
         Set<BasicUserDto> basicUserDtos = new HashSet<>();
         //学员关联的通讯录
         //学员关联的通讯录
         //获取相关课程,班级老师列表
         //获取相关课程,班级老师列表

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

@@ -346,6 +346,9 @@
 			<if test="existVipCourse!=null and existVipCourse==0">
 			<if test="existVipCourse!=null and existVipCourse==0">
 				AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=eer.user_id_ AND cssp.group_type_='VIP' AND CONCAT(cs.class_date_," ",cs.start_class_time_) &gt; NOW())
 				AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=eer.user_id_ AND cssp.group_type_='VIP' AND CONCAT(cs.class_date_," ",cs.start_class_time_) &gt; NOW())
 			</if>
 			</if>
+            <if test="versionTag != null and versionTag != ''">
+                and ee.version_tag_ = #{versionTag}
+            </if>
 		</where>
 		</where>
 	</sql>
 	</sql>
 
 

+ 49 - 0
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -189,4 +189,53 @@
     <select id="queryNameByIds" resultMap="NameDto">
     <select id="queryNameByIds" resultMap="NameDto">
 		select id_,name_,3 type_ from im_group where FIND_IN_SET(id_,#{ids})
 		select id_,name_,3 type_ from im_group where FIND_IN_SET(id_,#{ids})
 	</select>
 	</select>
+
+	<select id="queryByUserIdV2" resultMap="ImGroup">
+        SELECT ig.* FROM im_group_member igm
+        LEFT JOIN im_group ig ON igm.im_group_id_ = ig.id_
+        left join class_group cg on cg.id_ = ig.id_
+        left join music_group mg on mg.id_ = cg.music_group_id_
+        where 1 =1
+        <if test="userId != null">
+            AND igm.user_id_ = #{userId}
+        </if>
+        <if test="search != null and search != ''">
+            AND (ig.name_ like concat('%',#{search},'%') or ig.tags_ like concat('%',#{search},'%'))
+        </if>
+        <if test="groupType != null and groupType != ''">
+            AND ig.group_type_ = #{groupType}
+        </if>
+        <if test="musicGroupId != null and musicGroupId != ''">
+            and mg.id_ = #{musicGroupId}
+        </if>
+        <if test="classType != null and classType != ''">
+            AND cg.type_ = #{classType}
+        </if>
+
+    </select>
+
+	<select id="queryMemberByIdV2" resultMap="ImGroupMemberDto">
+        SELECT igm.*,u.avatar_,CASE WHEN find_in_set('STUDENT',u.user_type_) THEN u.username_ ELSE u.real_name_ END username_,
+        st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
+        FROM im_group_member igm
+        LEFT JOIN sys_user u ON igm.user_id_ = u.id_
+        LEFT JOIN student st ON st.user_id_ = u.id_
+        LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
+        WHERE igm.im_group_id_ = #{imGroupId} and st.user_id_ is not null
+        <if test="search != null">
+            and (u.real_name_ like concat('%',#{search},'%'))
+        </if>
+        <if test="subjectId != null">
+            and st.subject_id_list_ = #{subjectId}
+        </if>
+        <if test="vipFlag != null">
+            <if test="vipFlag">
+                and st.member_rank_setting_id_ is not null
+            </if>
+            <if test="vipFlag == false">
+                and st.member_rank_setting_id_ is null
+            </if>
+        </if>
+
+    </select>
 </mapper>
 </mapper>

+ 27 - 0
mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -131,4 +131,31 @@
 		left join sys_user su on iuf.friend_id_ = su.id_
 		left join sys_user su on iuf.friend_id_ = su.id_
 		where iuf.user_id_ = #{userId} and find_in_set(friend_id_,#{ids})
 		where iuf.user_id_ = #{userId} and find_in_set(friend_id_,#{ids})
 	</select>
 	</select>
+
+	<select id="queryFriendListByUserIdV2" resultMap="ImUserFriendDto">
+        SELECT distinct iuf.*,u.real_name_,u.avatar_,u.phone_,u.user_type_,st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
+        FROM im_user_friend iuf
+        LEFT JOIN sys_user u ON iuf.friend_id_ = u.id_
+        LEFT JOIN student st ON st.user_id_ = u.id_
+        left join class_group_student_mapper cgs on cgs.user_id_ = st.user_id_
+        LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
+        WHERE iuf.user_id_ = #{userId} and st.user_id_ is not null
+        <if test="search != null">
+            and (u.real_name_ like concat('%',#{search},'%') or iuf.friend_nickname_ like concat('%',#{search},'%'))
+        </if>
+        <if test="subjectId != null">
+            and st.subject_id_list_ = #{subjectId}
+        </if>
+        <if test="musicGroupId != null and musicGroupId != ''">
+            and cgs.music_group_id_ = #{musicGroupId}
+        </if>
+        <if test="vipFlag != null">
+            <if test="vipFlag">
+                and st.member_rank_setting_id_ is not null
+            </if>
+            <if test="vipFlag == false">
+                and st.member_rank_setting_id_ is null
+            </if>
+        </if>
+    </select>
 </mapper>
 </mapper>

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

@@ -97,7 +97,7 @@
     </select>
     </select>
 
 
     <select id="queryNotSuccessExaminationList" resultType="int">
     <select id="queryNotSuccessExaminationList" resultType="int">
-        select sle.lesson_examination_id_
+        select count(sle.lesson_examination_id_)
         from student_lesson_examination sle
         from student_lesson_examination sle
         left join lesson_examination le on sle.lesson_examination_id_ = le.id_
         left join lesson_examination le on sle.lesson_examination_id_ = le.id_
         where sle.user_id_ = #{userId}
         where sle.user_id_ = #{userId}

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

@@ -1219,7 +1219,7 @@
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
         WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{userId}
         WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{userId}
     </select>
     </select>
-    <select id="findVipEducationalTeacherId" resultType="java.lang.Integer">
+    <select  id="findVipEducationalTeacherId" resultType="java.lang.Integer">
         SELECT DISTINCT vg.educational_teacher_id_ FROM class_group_student_mapper cgsm
         SELECT DISTINCT vg.educational_teacher_id_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
         LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_

+ 23 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -41,6 +41,13 @@ public class ImGroupController extends BaseController {
 		return succeed(imGroupService.queryByUserId(userLoginService.getUserId(), search,groupType));
 		return succeed(imGroupService.queryByUserId(userLoginService.getUserId(), search,groupType));
 	}
 	}
 
 
+
+    @ApiOperation("查询群列表-v2")
+    @GetMapping(value = "/queryGroupList/v2")
+    public Object queryGroupListV2(String search,String groupType,String musicGroupId,String classType) {
+        return succeed(imGroupService.queryByUserIdV2(userLoginService.getUserId(), search,groupType,musicGroupId,classType));
+    }
+
 	@ApiOperation("查询群详情")
 	@ApiOperation("查询群详情")
 	@GetMapping(value = "/queryGroupDetail")
 	@GetMapping(value = "/queryGroupDetail")
 	public Object queryGroupDetail(String imGroupId) {
 	public Object queryGroupDetail(String imGroupId) {
@@ -62,6 +69,13 @@ public class ImGroupController extends BaseController {
 		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
 		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
 	}
 	}
 
 
+
+    @ApiOperation("查询群学生列表v2")
+    @GetMapping(value = "/queryGroupStudentList/v2")
+    public Object queryGroupStudentListV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag) {
+        return succeed(imGroupService.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
+    }
+
 	@ApiOperation("查询群成员详情")
 	@ApiOperation("查询群成员详情")
 	@GetMapping(value = "/queryGroupMemberDetail")
 	@GetMapping(value = "/queryGroupMemberDetail")
 	public Object queryGroupMemberDetail(String imGroupId, Integer userId) {
 	public Object queryGroupMemberDetail(String imGroupId, Integer userId) {
@@ -99,6 +113,15 @@ public class ImGroupController extends BaseController {
 				.collect(Collectors.toList()));
 				.collect(Collectors.toList()));
 	}
 	}
 
 
+
+    @ApiOperation("查询好友中的学生列表-v2")
+    @GetMapping(value = "/queryFriendStudentList/v2")
+    public Object queryFriendStudentListV2(String search,String musicGroupId,Integer subjectId,Boolean vipFlag) {
+        return succeed(imUserFriendService.queryFriendListByUserIdV2(userLoginService.getUserId(), search,musicGroupId,subjectId,vipFlag)
+                .stream().filter(e -> StringUtils.isBlank(e.getTags()))
+                .collect(Collectors.toList()));
+    }
+
 	@ApiOperation("查询群公告列表")
 	@ApiOperation("查询群公告列表")
 	@GetMapping(value = "/queryNoticeList")
 	@GetMapping(value = "/queryNoticeList")
 	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
 	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExtracurricularExercisesReplyController.java

@@ -26,6 +26,8 @@ public class ExtracurricularExercisesReplyController extends BaseController {
     @GetMapping("/queryPageList")
     @GetMapping("/queryPageList")
     private HttpResponseResult findExtraExercilses(ExtraExercilseReplyQueryInfo queryInfo){
     private HttpResponseResult findExtraExercilses(ExtraExercilseReplyQueryInfo queryInfo){
         queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(queryInfo.getOrganIdList()));
         queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(queryInfo.getOrganIdList()));
+        // 只看历史v1版本记录
+        queryInfo.setVersionTag("v1");
         return succeed(extracurricularExercisesReplyService.findExtraExercises(queryInfo));
         return succeed(extracurricularExercisesReplyService.findExtraExercises(queryInfo));
     }
     }
 }
 }