Sfoglia il codice sorgente

Merge branch 'master' into Joburgess

Joburgess 4 anni fa
parent
commit
7f4d315492
36 ha cambiato i file con 638 aggiunte e 636 eliminazioni
  1. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  2. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java
  3. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  4. 1 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  5. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  6. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java
  7. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  8. 9 19
      mec-biz/src/main/java/com/ym/mec/biz/service/ImUserFriendService.java
  9. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java
  10. 64 66
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  11. 18 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  12. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  13. 4 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  14. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  15. 2 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  16. 71 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  17. 7 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  18. 141 284
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  19. 21 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  20. 51 109
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  21. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java
  22. 2 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  23. 7 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java
  24. 38 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  25. 18 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  26. 35 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java
  27. 14 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  28. 22 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  29. 20 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml
  30. 16 0
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  31. 3 9
      mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  32. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  33. 7 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  34. 1 1
      mec-im/src/main/java/com/ym/config/ResourceServerConfig.java
  35. 2 11
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  36. 0 7
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStudentMapper> {
 
@@ -447,4 +448,12 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @return
      */
     Boolean hasStudent(@Param("masterClassGroupId") Integer masterClassGroupId, @Param("studentIds") List<Integer> studentIds);
+
+    /**
+     * 获取班级关联的学员列表
+     * @param classGroupId
+     * @return
+     */
+    Set<Integer> queryStudentIdsByClassGroupId(@Param("classGroupId") Integer classGroupId,@Param("musicGroupId") String musicGroupId,
+                                               @Param("groupType") GroupType groupType);
 }

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

@@ -8,6 +8,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeacherMapper> {
 
@@ -136,5 +137,16 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @param classGroupIds
      * @param newTeacherId
      */
-    void batchUpdateTeacherByClassId(@Param("classGroupIds") List<Integer> classGroupIds, @Param("oldTeacherId") Integer oldTeacherId, @Param("newTeacherId") Integer newTeacherId);
+    void batchUpdateTeacherByClassId(@Param("classGroupIds") List<Integer> classGroupIds,
+                                     @Param("oldTeacherId") Integer oldTeacherId,
+                                     @Param("newTeacherId") Integer newTeacherId);
+
+    /**
+     * 获取班级和课程上关联的老师列表
+     * @param classGroupId
+     * @return
+     */
+    Set<Integer> queryTeacherIdsByClassGroupId(@Param("classGroupId") Integer classGroupId,
+                                               @Param("musicGroupId") String musicGroupId,
+                                               @Param("groupType") GroupType groupType);
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -175,4 +175,23 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      */
     List<SimpleUserDto> findAllByRole(@Param("roleIds") String roleIds,
                                    @Param("organIds") String organIds);
+
+    /**
+     * 获取离职员工所在的乐团列表
+     * @param levelUserId
+     * @return
+     */
+    List<String> queryMusicGroupIdByUserId(Integer levelUserId);
+    /**
+     * 获取离职员工所在的乐团列表
+     * @param levelUserId
+     * @return
+     */
+    List<String> queryPracticeGroupIdByUserId(Integer levelUserId);
+    /**
+     * 获取离职员工所在的乐团列表
+     * @param levelUserId
+     * @return
+     */
+    List<String> queryVipGroupIdByUserId(Integer levelUserId);
 }

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

@@ -1,11 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.List;
-import java.util.Set;
-
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImUserFriend;
 import com.ym.mec.common.dal.BaseDAO;
@@ -30,10 +27,5 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 	 */
     void deleteByUserId(Integer teacherId);
 
-	/**
-	 * 批量新增
-	 * @param teachers
-	 * @param teacherId
-	 */
-	void batchInsert(@Param("teachers") Set<BasicUserDto> teachers, @Param("teacherId") Integer teacherId);
+	void insertByBasicUser(@Param("basicUserDto") BasicUserDto basicUserDto, @Param("teacherId") Integer teacherId);
 }

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

@@ -59,6 +59,8 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
     List<Map<Integer, String>> queryNameByIdList(@Param("userIds") List<Integer> userIds);
 
+    List<Map<Integer, String>> queryUserNameByIdList(@Param("userIds") List<Integer> userIds);
+
     List<Map<Integer, String>> querySubjectNameByIdList(@Param("userIds") List<Integer> userIds);
 
     /**

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

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

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -382,9 +382,10 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * 添加IM群组
      * @param classGroup
      * @param userIds
+     * @param teacherIdList
      * @return
      */
-    Boolean addImGroup(ClassGroup classGroup,List<Integer> userIds);
+    Boolean addImGroup(ClassGroup classGroup,List<Integer> userIds, List<Integer> teacherIdList);
 
     /**
      * 检测是否设置课酬
@@ -488,7 +489,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mergeClassSplitClassAffirmDto
      * @return
      */
-    String mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws InvocationTargetException, IllegalAccessException, Exception;
+    HttpResponseResult mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws InvocationTargetException, IllegalAccessException, Exception;
 
     /**
      * 进行中乐团-修改-班级详情-学员班级调整-合并结果确认-获取新班级的可排课时长
@@ -534,7 +535,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mergeClassSplitClassAffirmDto
      * @return
      */
-    String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
+    HttpResponseResult spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
 
     /**
      * 跨团合班缴费项目审核通过后

+ 9 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/ImUserFriendService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import java.util.List;
+import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImUserFriend;
@@ -59,35 +60,24 @@ public interface ImUserFriendService extends BaseService<Long, ImUserFriend> {
     void batchInsert(List<ImUserFriend> imUserFriends);
 
 	/**
-	 * 班级新增学员
-	 * @param classGroupId
-	 * @param studentId
+	 * 刷新班级通讯录
+	 * @param courseScheduleId
 	 * @author zouxuan
 	 */
-	void classGroupAddStudent(Integer classGroupId,List<Integer> studentId);
+	void refreshCourseImUserFriend(Long courseScheduleId);
 
 	/**
-	 * 班级更换老师
+	 * 刷新班级通讯录
 	 * @param classGroupId
-	 * @param teacherId
 	 * @author zouxuan
 	 */
-	void classGroupChangeTeacher(Integer classGroupId,Integer teacherId);
+	void refreshClassImUserFriend(Integer classGroupId);
 
 	/**
-	 * 课程组更换教务老师
-	 * @param groupId
-	 * @param educationId
+	 * 刷新课程组通讯录
+	 * @param musicGroupId
 	 * @param groupType
 	 * @author zouxuan
 	 */
-	void groupChangeEducation(String groupId, Integer educationId, GroupType groupType);
-
-	/**
-	 * 课程老师调整
-	 * @param courseScheduleId
-	 * @param teacherId
-	 * @author zouxuan
-	 */
-	void courseScheduleChangeTeacher(Long courseScheduleId,Integer teacherId);
+	void refreshGroupImUserFriend(String musicGroupId,GroupType groupType);
 }

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

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentClassAdjust;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -116,7 +117,7 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 * @author zouxuan
 	 * @param batchNo
 	 */
-	public void autoClassGroupAdjust(String batchNo);
+	public void autoClassGroupAdjust(MusicGroupStudentClassAdjust musicGroupStudentClassAdjust);
 
 	/**
 	 * @describe 审核拒绝

+ 64 - 66
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -7,6 +7,7 @@ import static com.ym.mec.biz.dal.enums.GroupType.COMM;
 import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
+import static com.ym.mec.biz.dal.enums.MusicGroupStatusEnum.PROGRESS;
 
 import java.math.BigDecimal;
 import java.time.Duration;
@@ -34,6 +35,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.util.collection.ListUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -242,6 +244,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         insert(classGroup);
 
         //设置班级上的老师
+        List<Integer> teacherIdList = new ArrayList<>();
         List<ClassGroupTeacherMapper> teacherMapperList = classGroup.getTeacherMapperList();
         for (ClassGroupTeacherMapper tm : teacherMapperList) {
             tm.setClassGroupId(classGroup.getId());
@@ -249,6 +252,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             tm.setGroupType(classGroup.getGroupType());
             tm.setCreateTime(date);
             tm.setUpdateTime(date);
+            teacherIdList.add(tm.getUserId());
         }
 
         if (teacherMapperList.size() > 0) {
@@ -282,7 +286,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         // 加入IM群组
         if (userIdList.size() > 0) {
-            addImGroup(classGroup, userIdList);
+            addImGroup(classGroup, userIdList, teacherIdList);
         }
         return true;
     }
@@ -364,7 +368,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
 
         //加入IM群组
-        addImGroup(classGroup, userIdList);
+        addImGroup(classGroup, userIdList, null);
         return classGroup;
     }
 
@@ -430,7 +434,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupRelationService.classGroupRelationsInsert(classGroupRelationList);
 
         //加入IM群组
-        addImGroup(classGroup, userIdList);
+        addImGroup(classGroup, userIdList, null);
 
         return classGroup;
     }
@@ -1767,12 +1771,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             throw new BizException("主教与助教存在冲突");
         }
 
+        List<Integer> teacherIds = new ArrayList<>();
         Integer teacherId = null;
         for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
             groupTeacherMapper.setGroupType(classGroup.getGroupType());
             groupTeacherMapper.setClassGroupId(classGroup.getId());
             groupTeacherMapper.setMusicGroupId(classGroup4MixDtos.get(0).getMusicGroupId());
-            userIds.add(groupTeacherMapper.getUserId());
+            teacherIds.add(groupTeacherMapper.getUserId());
             if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
                 teacherId = groupTeacherMapper.getUserId();
             }
@@ -1789,7 +1794,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
 
         //创建IM群组
-        addImGroup(classGroup, userIds);
+        addImGroup(classGroup, userIds, teacherIds);
 
 
         Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
@@ -2124,21 +2129,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
 
+            List<Integer> teacherIds = new ArrayList<>();
             for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
                 groupTeacherMapper.setGroupType(classGroup.getGroupType());
                 groupTeacherMapper.setClassGroupId(classGroup.getId());
                 groupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
-                userIds.add(groupTeacherMapper.getUserId());
+                teacherIds.add(groupTeacherMapper.getUserId());
             }
             //3、将老师加入关联关系
             classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
-            Set<Integer> collect = classGroupTeacherMapperList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-            for (Integer integer : collect) {
-                //班级老师通讯录
-                imUserFriendService.classGroupChangeTeacher(classGroup.getId(),integer);
-            }
             //创建IM群组
-            addImGroup(classGroup, userIds);
+            addImGroup(classGroup, userIds, teacherIds);
         }
         //排课
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
@@ -2201,24 +2202,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
-        if (byClassGroup != null && byClassGroup.size() > 0) {
-            ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
-            if (groupTeacherMapper != null) {
-                imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
-            }
-        }
-
         List<ClassGroupTeacherMapper> newTeacherMapperList = classGroup4MixDtos.get(0).getClassGroupTeacherMapperList();
-        if (newTeacherMapperList.size() > 0) {
-            //获取之前的班级老师
-            Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
-            groupTeacher.forEach(e -> {
-            	imGroupMemberService.quit(classGroupId.longValue(), e);
-            });
-            newTeacherMapperList.forEach(e -> {
-                imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), null, false);
-                imUserFriendService.classGroupChangeTeacher(classGroupId,e.getUserId());
-            });
+        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+        if(musicGroup.getStatus() == PROGRESS){
+            if (byClassGroup != null && byClassGroup.size() > 0) {
+                ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
+                if (groupTeacherMapper != null) {
+                    imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
+                }
+            }
+            if (newTeacherMapperList.size() > 0) {
+                //获取之前的班级老师
+                Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
+                groupTeacher.forEach(e -> {
+                    imGroupMemberService.quit(classGroupId.longValue(), e);
+                });
+                newTeacherMapperList.forEach(e -> {
+                    imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), "指导老师", false);
+                });
+            }
         }
         if (Objects.nonNull(classGroup4MixDtos.get(0).getCourseAddType()) && classGroup4MixDtos.get(0).getCourseAddType().equals("onlyUpdateTeacher")) {
             List<Integer> classGroupIds = new ArrayList<>();
@@ -2242,8 +2244,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         classGroupService.updateTotalClassTimes(classGroup.getId(), courseTimes);
 
-        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-
         Integer schoolId = teachMode.equals(TeachModeEnum.ONLINE) ? null : musicGroup.getSchoolId();
 
         List<Subject> subjectList = subjectService.findBySubjectByIdList(classGroup.getSubjectIdList());
@@ -2272,11 +2272,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 .map(ClassGroupTeacherMapper::getUserId)
                 .collect(Collectors.toList());
 
-        //所有教师列表
-        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
-        Map<Integer, Teacher> teacherMap = teachers.stream()
-                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
-
         Set<String> newTeacher = newClassGroupTeacherMapperList.stream().map(
                 classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId()
         ).collect(Collectors.toSet());
@@ -2313,7 +2308,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
             long totalCourseDuration = 0;
-//            classGroup4MixDto.setCourseTimes(totalMinutes/(int)courseDuration);
 
             if (classGroup4MixDto.getCourseTimes() <= 0) {
                 throw new BizException("{}课程类型剩余课程时长不足", classGroup4MixDto.getCourseType().getMsg());
@@ -2399,12 +2393,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
 
-        //排课处理
-//        if (classGroup.getType().equals(ClassGroupTypeEnum.SNAP)) {
-//            courseScheduleService.checkSnapCourseShchedules(courseScheduleList);
-//        } else {
         courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
-//        }
 
         //老师结算表
         if (courseScheduleTeacherSalaryList.size() > 0) {
@@ -2417,7 +2406,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //学生结算表
             courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIds);
         }
-
+        if(musicGroup.getStatus() == PROGRESS){
+            imUserFriendService.refreshClassImUserFriend(classGroupId);
+        }
         return classGroup;
     }
 
@@ -2488,11 +2479,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         Integer teacherId = null;
+        List<Integer> teacherIds = new ArrayList<>();
         for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
             groupTeacherMapper.setGroupType(classGroup.getGroupType());
             groupTeacherMapper.setClassGroupId(classGroup.getId());
             groupTeacherMapper.setMusicGroupId(classGroup4MixDtos.get(0).getMusicGroupId());
-            userIds.add(groupTeacherMapper.getUserId());
+            teacherIds.add(groupTeacherMapper.getUserId());
             if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
                 teacherId = groupTeacherMapper.getUserId();
             }
@@ -2509,7 +2501,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
 
         //创建IM群组
-        addImGroup(classGroup, userIds);
+        addImGroup(classGroup, userIds, teacherIds);
 
         Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
 
@@ -2961,27 +2953,27 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds) {
+    public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds, List<Integer> teacherIdList) {
         MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-        List<Integer> userIdList = new ArrayList<>();
-        userIdList.add(musicGroup.getEducationalTeacherId());
-        userIdList.add(musicGroup.getTeamTeacherId());
-        userIdList.add(musicGroup.getOperatorUserId());
-        userIdList.add(musicGroup.getDirectorUserId());
-        if (userIds != null) {
-            userIdList.addAll(userIds);
-        }
 
         Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
-        for (Integer userId : userIdList) {
+        userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
+        userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
+        userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
+        for (Integer userId : userIds) {
             if (userId == null) continue;
             
             userRoleMap.put(userId, "");
         }
         
-        imGroupService.create(classGroup.getId().longValue(), musicGroup.getTeamTeacherId(), classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
+        if(teacherIdList != null && teacherIdList.size() > 0){
+        	for(Integer teacherId : teacherIdList){
+        		userRoleMap.put(teacherId, "指导老师");
+        	}
+        }
+        
+        imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
         imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
-        imUserFriendService.classGroupAddStudent(classGroup.getId(),userIds);
         return true;
     }
 
@@ -3339,9 +3331,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 settingsDetail.setCourseTotalNum(subNum.intValue());
                 settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
                 settingsDetail.setUnitPrice(unitPrice);
-//                settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
-//                settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
-//                settingsDetail.setCourseOriginalPrice(settingsDetail.getCourseCurrentPrice());
                 courseMap.put(courseType, settingsDetail);
             }
             resultMap.put(classGroupId, courseMap);
@@ -3354,7 +3343,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
+    public HttpResponseResult mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         List<Integer> classGroupIds = mergeClassSplitClassAffirmDto.getClassGroupIds();
         if (classGroupIds == null || classGroupIds.size() == 0) {
             throw new BizException("参数校验失败");
@@ -3438,6 +3427,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
         //如果需要审核,校验参数配置
         checkMergeClassSplitClassAffirmParam(mergeClassSplitClassAffirmDto);
+        HttpResponseResult httpResponseResult = new HttpResponseResult();
+        httpResponseResult.setStatus(true);
+        httpResponseResult.setCode(200);
         //如果缴费项目不需要审核,那么生成班级以及课表
         if (status == null || status != AUDITING) {
             //每种课程类型单独进行排课
@@ -3471,14 +3463,16 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 //删除教师课酬
                 courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
             }
-            return "学员班级调整完成";
+            imUserFriendService.refreshGroupImUserFriend(musicGroup.getId(),MUSIC);
+            httpResponseResult.setMsg("学员班级调整完成");
         } else {
             //冻结班级
             classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
             //冻结所选班级的课程
             courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
-            return "学员班级调整申请已提交,缴费项目审核中";
+            httpResponseResult.setMsg("学员班级调整申请已提交,缴费项目审核中");
         }
+        return httpResponseResult;
     }
 
     public void checkMergeClassSplitClassAffirmParam(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
@@ -3697,7 +3691,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
+    public HttpResponseResult spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         //缴费项目
         MusicGroupPaymentCalenderDto paymentCalenderDto = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos().get(0);
@@ -3779,18 +3773,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<Long> allLockCourseIds = courseScheduleDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds, null);
         musicGroupStudentClassAdjust.setAllLockCourseIds(JSON.toJSONString(allLockCourseIds));
         musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
+        HttpResponseResult httpResponseResult = new HttpResponseResult();
+        httpResponseResult.setCode(200);
+        httpResponseResult.setStatus(true);
         //没有需要审核的缴费项目
         if (paymentCalenderDto.getStatus() != AUDITING) {
             List<Map> classGroupStudents1 = JSON.parseArray(musicGroupStudentClassAdjust.getClassGroupStudents(),Map.class);
             spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents1,allLockCourseIds,paymentCalenderDto.getBatchNo(),masterTotalPrice);
-            return "操作成功:学员班级调整完成";
+            httpResponseResult.setMsg("操作成功:学员班级调整完成");
         }else {
 //                冻结班级
             classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
 //                冻结所选班级的课程
             courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
-            return "操作成功:学员班级调整申请已提交,缴费项目审核中";
+            httpResponseResult.setMsg("操作成功:学员班级调整申请已提交,缴费项目审核中");
         }
+        return httpResponseResult;
     }
 
     @Override

+ 18 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -413,10 +413,10 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
             oldStudentIds = classGroupStudents.stream().map(ClassGroupStudentMapper::getUserId).collect(Collectors.toSet());
             oldNormalStudentIds = classGroupStudents.stream().filter(s -> ClassGroupStudentStatusEnum.NORMAL.equals(s.getStatus())).map(ClassGroupStudentMapper::getUserId).collect(Collectors.toSet());
         }
-
+        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
         //线上基础技能班,原始分班人数不能小于3人大于6人
         if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE)) {
-            MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+
             if (studentIds.size() < 3 && musicGroup.getStatus().equals(MusicGroupStatusEnum.PREPARE)) {
                 throw new BizException("线上基础技能班人数不能少于3人");
             }
@@ -526,19 +526,26 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         if (!CollectionUtils.isEmpty(removeStudentIds)) {
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, new ArrayList<>(removeStudentIds));
-            //5、学生退出班级群组
-            imGroupMemberService.quit(classGroup.getId().longValue(), new ArrayList<Integer>(addStudentIds));
+            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
+                //5、学生退出班级群组
+                imGroupMemberService.quit(classGroup.getId().longValue(), new ArrayList<Integer>(addStudentIds));
+            }
         }
 
         if (!CollectionUtils.isEmpty(addStudentIds)) {
             courseScheduleStudentPaymentService.createForMusicGroup(classGroup.getMusicGroupId(), classGroupNotStartCourse, new ArrayList<>(addStudentIds));
-            Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
-            for (Integer addStudentId : addStudentIds) {
-            	userRoleMap.put(addStudentId, "");
+            studentDao.updateStudentServiceTag(null, new ArrayList<>(addStudentIds), YesOrNoEnum.YES.getCode());
+            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
+                Map<Integer,String> userRoleMap = new HashMap<>();
+                for (Integer addStudentId : addStudentIds) {
+                    userRoleMap.put(addStudentId, "");
+                }
+                //5、添加进IM群组
+                imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
             }
-            //5、添加进IM群组
-            imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
-            imUserFriendService.classGroupAddStudent(classGroup.getId(),new ArrayList<>(addStudentIds));
+        }
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
+            imUserFriendService.refreshClassImUserFriend(classGroup.getId());
         }
     }
 
@@ -605,13 +612,12 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //修改班级人数
         classGroupService.updateClassStudentNum(classGroupId.intValue(), classGroup.getStudentNum() + studentIds.size());
 
-        //班级加学员
-        imUserFriendService.classGroupAddStudent(classGroupId.intValue(),studentIds);
         //添加进IM群组
         Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
         for (Integer studentId : studentIds) {
         	userRoleMap.put(studentId, null);
         }
         imGroupMemberService.join(classGroupId.longValue(), userRoleMap);
+        imUserFriendService.refreshClassImUserFriend(classGroupId.intValue());
     }
 }

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

@@ -93,7 +93,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             if (userIdList.size() > 0) {
             	Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
             	for(Integer userId : userIdList){
-            		userRoleMap.put(userId, "");
+            		userRoleMap.put(userId, "指导老师");
             	}
                 imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
             }
@@ -138,7 +138,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             if (userIdList.size() > 0) {
             	Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
             	for(Integer userId : userIdList){
-            		userRoleMap.put(userId, "");
+            		userRoleMap.put(userId, "指导老师");
             	}
                 imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
             }

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

@@ -3229,7 +3229,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					ta.setMusicGroupId(newCourseSchedule.getMusicGroupId());
 					ta.setTeacherId(teacherId);
 					insertTeacherAttendanceList.add(ta);
-					imUserFriendService.courseScheduleChangeTeacher(courseScheduleId, teacherId);
 				}
 				
 			}
@@ -3408,6 +3407,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		courseEventSource.courseStatusChange(new HashSet<>(courseScheduleIds));
 
+		imUserFriendService.refreshCourseImUserFriend(courseScheduleId);
 		// 推送
 		try {
 			Set<Integer> teacherIds = newCourseSchedules.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet());
@@ -4615,7 +4615,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		//清除考勤申述
 		teacherAttendanceDao.clearAttendanceComplaints(courseScheduleIds);
 		//添加通讯录
-		imUserFriendService.classGroupChangeTeacher(oldCourseSchedule.getClassGroupId(),teacherId);
+		imUserFriendService.refreshCourseImUserFriend(courseScheduleId);
 		//保存修改记录
 		saveModifyLog(modifyLogs,courseIds);
 
@@ -4657,8 +4657,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(practiceGroupId, PRACTICE.getCode());
 		//教务老师变更
         if(Objects.nonNull(educationalTeacherId)&&!educationalTeacherId.equals(practiceGroup.getEducationalTeacherId())){
-        	//变更通讯录
-			imUserFriendService.groupChangeEducation(practiceGroupId,educationalTeacherId,PRACTICE);
 			practiceGroup.setEducationalTeacherId(educationalTeacherId);
 		}
 		if(Objects.nonNull(subjectId)&&!subjectId.equals(practiceGroup.getSubjectId())){
@@ -4675,8 +4673,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseScheduleDao.updateCourseNameByGroup(practiceGroupId, PRACTICE,groupName);
 		}
 		if(!teacherId.equals(practiceGroup.getUserId())){
-			//变更通讯录
-			imUserFriendService.classGroupChangeTeacher(classGroup.getId(),teacherId);
 			practiceGroup.setUserId(teacherId);
 			classGroupTeacherMapperService.updateTeacher(practiceGroupId,teacherId, PRACTICE.getCode());
 			classGroupTeacherSalaryDao.updateTeacher(practiceGroupId,teacherId, PRACTICE.getCode());
@@ -4731,7 +4727,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 		practiceGroupDao.update(practiceGroup);
-
+		imUserFriendService.refreshGroupImUserFriend(practiceGroup.getId().toString(), PRACTICE);
     }
 
     @Override
@@ -5039,7 +5035,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			ImGroupMember[] imGroupMembers = {new ImGroupMember(newTeacherId.toString())};
 			for (ClassGroup classGroup:classGroupList) {
 				imGroupMemberService.quit(classGroup.getId().longValue(), oldTeacherId);
-				imGroupMemberService.join(classGroup.getId().longValue(), newTeacherId, null, false);
+				imGroupMemberService.join(classGroup.getId().longValue(), newTeacherId, "指导老师", false);
 			}
 		}
 	}

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

@@ -83,6 +83,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     @Autowired
     private ImGroupMemberService imGroupMemberService;
     @Autowired
+    private ImUserFriendService imUserFriendService;
+    @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
     private SysTenantAccountService sysTenantAccountService;
@@ -254,6 +256,11 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         }
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
         teacherAttendanceDao.batchInsert(teacherAttendances);
+        //创建群聊
+        imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), courseGroup.getName(), courseGroup.getName(), courseGroup.getName(), null, "COMM");
+        Map<Integer,String> userRoleMap = new HashMap(1);
+        userRoleMap.put(courseGroup.getTeacherId(),"指导老师");
+        imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
         return BaseController.succeed();
     }
 
@@ -749,6 +756,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         
         imGroupService.create(classGroup.getId().longValue(), coursesGroup.getTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "COMM");
         imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
+        imUserFriendService.refreshClassImUserFriend(classGroup.getId());
         return BaseController.succeed();
     }
 

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

@@ -581,10 +581,6 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         practiceGroup.setGroupStatus(GroupStatusEnum.NORMAL);
         practiceGroupDao.update(practiceGroup);
 
-        imUserFriendService.groupChangeEducation(practiceGroup.getId().toString(), practiceGroup.getEducationalTeacherId(), GroupType.PRACTICE);
-        imUserFriendService.classGroupChangeTeacher(classGroup.getId(), practiceGroup.getUserId());
-        imUserFriendService.classGroupAddStudent(classGroup.getId(), Arrays.asList(practiceGroup.getStudentId()));
-
         try {
             contractService.transferPracticeCoursesContract(order.getUserId(),classGroup.getTotalClassTimes(),practiceGroup.getCoursesStartDate(),practiceGroup.getCoursesExpireDate(),order.getExpectAmount());
         } catch (Exception e) {
@@ -622,7 +618,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         }
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(),null,YesOrNoEnum.YES.getCode());
-
+        imUserFriendService.refreshGroupImUserFriend(practiceGroup.getId().toString(),GroupType.PRACTICE);
     }
 
     @Override
@@ -1160,12 +1156,8 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             e.printStackTrace();
         }
 
-        imUserFriendService.groupChangeEducation(practiceGroupBuyParams.getId().toString(), practiceGroupBuyParams.getEducationalTeacherId(), GroupType.PRACTICE);
-        imUserFriendService.classGroupChangeTeacher(classGroup.getId(), practiceGroupBuyParams.getUserId());
-        imUserFriendService.classGroupAddStudent(classGroup.getId(), Arrays.asList(practiceGroupBuyParams.getStudentId()));
-
         studentDao.updateStudentServiceTag(practiceGroupBuyParams.getStudentId(),null,YesOrNoEnum.YES.getCode());
-
+        imUserFriendService.refreshGroupImUserFriend(practiceGroupBuyParams.getId().toString(),GroupType.PRACTICE);
         return BaseController.succeed();
     }
 

+ 71 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -1,5 +1,20 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.service.ImUserFriendService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
@@ -10,7 +25,6 @@ import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
@@ -29,15 +43,6 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
 @Service
 public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
 	
@@ -55,6 +60,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	private SysUserCashAccountDao sysUserCashAccountDao;
 	@Autowired
 	private ClassGroupDao classGroupDao;
+	@Autowired
+	private ImUserFriendService imUserFriendService;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -224,7 +231,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	@Transactional(rollbackFor = Exception.class)
 	public void level(List<EmployeeLevelDto> employeeLevelDtos) {
 		Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
-		List<ImGroupModel> imGroupModels = new ArrayList<>();
+		List<ImGroupModel> educationGroupModels = new ArrayList<>();
+		List<ImGroupModel> teamGroupModels = new ArrayList<>();
+		List<ImGroupModel> directorGroupModels = new ArrayList<>();
 		//获取用户需要加入的群组列表
 		Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
 		Set<String> roleNames = collect.keySet();
@@ -241,28 +250,52 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 					switch (roleName){
 						case "education":
 							//教务老师所需加入的群组
-							imGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+							educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 							break;
 						case "teamTeacher":
 							//运营主管所需加入的群组
-							imGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+							teamGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 							break;
 						case "director":
 							//乐队指导所需加入的群组
-							imGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+							directorGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 							break;
 					}
 				}
 			}
 		}
-		if(imGroupModels.size() > 0){
+		if(educationGroupModels.size() > 0){
 			//❤️用户加群
-			for (ImGroupModel imGroupModel : imGroupModels) {
+			for (ImGroupModel imGroupModel : educationGroupModels) {
 				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 				
 				List<ImGroupMember> memberList = imGroupModel.getMemberList();
 				for(ImGroupMember member : memberList){
-					userRoleMap.put(Integer.parseInt(member.getId()), "");
+					userRoleMap.put(Integer.parseInt(member.getId()), "乐团主管");
+				}
+				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
+			}
+		}
+		if(teamGroupModels.size() > 0){
+			//❤️用户加群
+			for (ImGroupModel imGroupModel : teamGroupModels) {
+				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+				
+				List<ImGroupMember> memberList = imGroupModel.getMemberList();
+				for(ImGroupMember member : memberList){
+					userRoleMap.put(Integer.parseInt(member.getId()), "运营主管");
+				}
+				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
+			}
+		}
+		if(directorGroupModels.size() > 0){
+			//❤️用户加群
+			for (ImGroupModel imGroupModel : directorGroupModels) {
+				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+				
+				List<ImGroupMember> memberList = imGroupModel.getMemberList();
+				for(ImGroupMember member : memberList){
+					userRoleMap.put(Integer.parseInt(member.getId()), "乐队指导");
 				}
 				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
 			}
@@ -282,6 +315,27 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employeeDao.updateUserDemissionDate(levelUserId);
 		//冻结用户
 		employeeDao.updateUserLock(levelUserId,1);
+		//获取用户担任教务老师的所有乐团列表
+		List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
+		if(musicGroupIds.size() > 0){
+			for (String musicGroupId : musicGroupIds) {
+				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+			}
+		}
+		//获取用户担任教务老师的所有网管课列表
+		List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
+		if(practiceGroupIds.size() > 0){
+			for (String musicGroupId : practiceGroupIds) {
+				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+			}
+		}
+		//获取用户担任教务老师的所有VIP课列表
+		List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
+		if(vipGroupIds.size() > 0){
+			for (String musicGroupId : vipGroupIds) {
+				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+			}
+		}
 	}
 
 	@Override

+ 7 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -100,7 +100,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
 		}
 		//检查用户是否已存在
-		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().map(Objects::toString)
+		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().filter(Objects::nonNull).map(Objects::toString)
 		.collect(Collectors.joining(","))).stream().map(e -> e.getUserId()).collect(Collectors.toList());
 
 		Date date = new Date();
@@ -108,10 +108,10 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		List<GroupMember> groupMemberList = new ArrayList<GroupMember>();
 
 		String groupId = imGroup.getId().toString();
-		Map<Integer, String> nameIdMap= MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userRoleMap.keySet())));
+		Map<Integer, String> nameIdMap= MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userRoleMap.keySet())));
 		for (Entry<Integer, String> entry : userRoleMap.entrySet()) {
 			
-			if(existUserIdList.contains(entry.getKey())){
+			if(existUserIdList.contains(entry.getKey())||Objects.isNull(entry.getKey())){
 				continue;
 			}
 
@@ -160,11 +160,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean quit(Long imGroupId, List<Integer> userIdList) {
 
 		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
 		if (imGroup == null) {
-			throw new BizException("退出群组失败:群组[{}]不存在", imGroupId);
+			return true;
 		}
 
 		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
@@ -176,7 +177,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 		imGroupMemberDao.batchDelete(imGroupMemberList);
 
-		imGroup.setMemberNum(imGroup.getMemberNum() - 1);
+		imGroup.setMemberNum(imGroup.getMemberNum() - userIdList.size());
 		imGroup.setUpdateTime(new Date());
 		imGroupDao.update(imGroup);
 
@@ -212,4 +213,4 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return true;
 	}
 
-}
+}

+ 141 - 284
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
@@ -41,15 +42,13 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 	@Autowired
 	private TeacherDao teacherDao;
 	@Autowired
-	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
-	@Autowired
-	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-	@Autowired
 	private CourseScheduleDao courseScheduleDao;
 	@Autowired
 	private StudentRegistrationDao studentRegistrationDao;
 	@Autowired
 	private ClassGroupDao classGroupDao;
+	@Autowired
+	private RedisTemplate<String,String> redisTemplate;
 
 	@Override
 	public BaseDAO<Long, ImUserFriend> getDAO() {
@@ -104,11 +103,12 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
 	@Override
 	public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
-		List<ImUserFriendDto> imUserFriendDtos = imUserFriendDao.queryFriendListByUserId(userId, search);
-		if(imUserFriendDtos.size() == 0){
-			return teacherService.queryGroupStudents1(userId,search);
+		String syncImUserFriendKey = "syncImUserFriend:" + userId;
+		if(redisTemplate.hasKey(syncImUserFriendKey)){
+			return imUserFriendDao.queryFriendListByUserId(userId, search);
+		}else {
+			return teacherService.queryGroupStudents1(userId,null);
 		}
-		return imUserFriendDtos;
 	}
 
 	@Override
@@ -134,320 +134,177 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void classGroupAddStudent(Integer classGroupId, List<Integer> studentIds) {
-		Set<Integer> teacherIds = new HashSet<>();
-		Set<Integer> educations = new HashSet<>();
+	public void refreshCourseImUserFriend(Long courseId) {
+		CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
+		//获取班级关联的老师列表
+		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
+		//获取班级关联的学员列表
+		Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
+		ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
+		GroupType groupType = classGroup.getGroupType();
+		List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
+		if(imUserFriends.size() > 0){
+			batchInsert(imUserFriends);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void refreshClassImUserFriend(Integer classGroupId) {
+		//获取班级关联的老师列表
+		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId,null,null);
+		//获取班级关联的学员列表
+		Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroupId,null,null);
 		ClassGroup classGroup = classGroupDao.get(classGroupId);
+		GroupType groupType = classGroup.getGroupType();
+		List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
+		if(imUserFriends.size() > 0){
+			batchInsert(imUserFriends);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
+		List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType.getCode());
 		List<ImUserFriend> imUserFriends = new ArrayList<>();
-		//获取班级关联的老师
-		List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
-		teacherIds.addAll(classGroupTeacherMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		//学员关联的课程上的老师
-		teacherIds.addAll(courseScheduleTeacherSalaryDao.queryTeacherByTeaching(classGroupId,null));
-		teacherIds.addAll(studentIds);
+		classGroups.forEach(e->{
+			//获取班级关联的老师列表
+			Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(e.getId(),null,null);
+			//获取班级关联的学员列表
+			Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(e.getId(),null,null);
+			imUserFriends.addAll(saveImUserFriends(studentIds,teacherIds,groupType,musicGroupId));
+		});
+		if(imUserFriends.size() > 0){
+			batchInsert(imUserFriends);
+		}
+	}
 
+	public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
+		List<ImUserFriend> imUserFriends = new ArrayList<>();
+		Set<Integer> educationIds = new HashSet<>();
 		MusicGroup musicGroup = new MusicGroup();
+		//获取当前学员声部
 		Map<Integer,String> studentSubjectName = new HashMap<>();
-
-		GroupType groupType = classGroup.getGroupType();
+		Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
+		if(teacherIds.size() > 0){
+			teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
+		}
 		if(groupType == MUSIC){
 			//学员关联乐团管理人员通讯录
-			musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-			teacherIds.add(musicGroup.getDirectorUserId());
-			teacherIds.add(musicGroup.getEducationalTeacherId());
-			teacherIds.add(musicGroup.getTeamTeacherId());
-			educations.add(musicGroup.getDirectorUserId());
-			educations.add(musicGroup.getEducationalTeacherId());
-			educations.add(musicGroup.getTeamTeacherId());
-			//获取当前学员声部
-			studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
+			musicGroup = musicGroupDao.get(musicGroupId);
+			educationIds.add(musicGroup.getDirectorUserId());
+			educationIds.add(musicGroup.getEducationalTeacherId());
+			educationIds.add(musicGroup.getTeamTeacherId());
+			if(studentIds.size() > 0){
+				studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
+			}
 		}else if(groupType == VIP){
-			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-			teacherIds.add(vipGroup.getEducationalTeacherId());
-			educations.add(vipGroup.getEducationalTeacherId());
+			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(musicGroupId));
+			educationIds.add(vipGroup.getEducationalTeacherId());
 		}else if(groupType == PRACTICE){
-			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-			teacherIds.add(practiceGroup.getEducationalTeacherId());
-			educations.add(practiceGroup.getEducationalTeacherId());
+			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(musicGroupId));
+			educationIds.add(practiceGroup.getEducationalTeacherId());
 		}
-		educations.removeAll(Collections.singleton(null));
+		studentIds.removeAll(Collections.singleton(null));
 		teacherIds.removeAll(Collections.singleton(null));
-		//获取通讯录昵称
-		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(teacherIds)));
-		//获取老师声部
-		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
+		educationIds.removeAll(Collections.singleton(null));
+		Map<Integer, String> usernameMap = new HashMap<>();
+		if(studentIds.size() > 0){
+			usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(studentIds)));
+		}
+		Map<Integer, String> teacherRealNameMap = new HashMap<>();
+		if(teacherIds.size() > 0){
+			teacherRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(teacherIds)));
+		}
+		Map<Integer, String> educationRealNameMap = new HashMap<>();
+		if(educationIds.size() > 0){
+			educationRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(educationIds)));
+		}
+		//老师关联教务、学员
 		for (Integer teacherId : teacherIds) {
+			//老师关联学员
 			for (Integer studentId : studentIds) {
 				if(teacherId == studentId){
 					continue;
 				}
 				//学员、教务关联的老师
 				ImUserFriend imUserFriend = new ImUserFriend();
-				imUserFriend.setUserId(studentId);
-				imUserFriend.setFriendId(teacherId);
-				imUserFriend.setFriendNickname(nameIdMap.get(teacherId));
+				imUserFriend.setUserId(teacherId);
+				imUserFriend.setFriendId(studentId);
+				imUserFriend.setFriendNickname(usernameMap.get(studentId));
 				imUserFriend.setMemo(musicGroup.getName());
-				imUserFriend.setTags(teacherSubjectNameMap.get(teacherId));
+				imUserFriend.setTags(studentSubjectName.get(studentId));
+				imUserFriends.add(imUserFriend);
+			}
+			//老师关联教务
+			for (Integer educationId : educationIds) {
+				if(teacherId == educationId){
+					continue;
+				}
+				ImUserFriend imUserFriend = new ImUserFriend();
+				imUserFriend.setUserId(teacherId);
+				imUserFriend.setFriendId(educationId);
+				imUserFriend.setFriendNickname(educationRealNameMap.get(educationId));
 				imUserFriends.add(imUserFriend);
-				//老师关联的学生、教务
-				ImUserFriend imUserFriend1 = new ImUserFriend();
-				imUserFriend1.setUserId(teacherId);
-				imUserFriend1.setFriendId(studentId);
-				imUserFriend1.setFriendNickname(nameIdMap.get(studentId));
-				imUserFriend1.setMemo(musicGroup.getName());
-				imUserFriend1.setTags(studentSubjectName.get(studentId));
-				imUserFriends.add(imUserFriend1);
 			}
 		}
-		for (Integer education : educations) {
+		//教务关联的老师、学员
+		for (Integer educationId : educationIds) {
+			//教务关联学员
 			for (Integer studentId : studentIds) {
-				if(education == studentId){
+				if(educationId == studentId){
 					continue;
 				}
-				//学员关联教务
 				ImUserFriend imUserFriend = new ImUserFriend();
-				imUserFriend.setUserId(studentId);
-				imUserFriend.setFriendId(education);
-				imUserFriend.setFriendNickname(nameIdMap.get(education));
+				imUserFriend.setUserId(educationId);
+				imUserFriend.setFriendId(studentId);
+				imUserFriend.setFriendNickname(usernameMap.get(studentId));
 				imUserFriend.setMemo(musicGroup.getName());
-				imUserFriend.setTags(teacherSubjectNameMap.get(education));
+				imUserFriend.setTags(studentSubjectName.get(studentId));
 				imUserFriends.add(imUserFriend);
-				//教务关联学员
-				ImUserFriend imUserFriend1 = new ImUserFriend();
-				imUserFriend1.setUserId(education);
-				imUserFriend1.setFriendId(studentId);
-				imUserFriend1.setFriendNickname(nameIdMap.get(studentId));
-				imUserFriend1.setMemo(musicGroup.getName());
-				imUserFriend1.setTags(studentSubjectName.get(studentId));
-				imUserFriends.add(imUserFriend1);
 			}
-		}
-		if(imUserFriends.size() > 0){
-			batchInsert(imUserFriends);
-		}
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void classGroupChangeTeacher(Integer classGroupId, Integer teacherId) {
-		Set<Integer> studentIds = new HashSet<>();
-		Set<Integer> educations = new HashSet<>();
-
-		ClassGroup classGroup = classGroupDao.get(classGroupId);
-		List<ImUserFriend> imUserFriends = new ArrayList<>();
-		//获取班级关联的学员
-		List<ClassGroupStudentMapper> studentMappers = classGroupStudentMapperDao.findAllByClassGroup(classGroupId.longValue());
-		studentIds.addAll(studentMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-
-		MusicGroup musicGroup = new MusicGroup();
-		Map<Integer,String> studentSubjectName = new HashMap<>();
-		studentIds.add(teacherId);
-		//获取老师声部
-		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
-
-		GroupType groupType = classGroup.getGroupType();
-		if(groupType == MUSIC){
-			//获取当前学员声部
-			studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
-			//关联乐团管理人员通讯录
-			musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-			studentIds.add(musicGroup.getDirectorUserId());
-			studentIds.add(musicGroup.getEducationalTeacherId());
-			studentIds.add(musicGroup.getTeamTeacherId());
-			educations.add(musicGroup.getDirectorUserId());
-			educations.add(musicGroup.getEducationalTeacherId());
-			educations.add(musicGroup.getTeamTeacherId());
-		}else if(groupType == VIP){
-			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-			studentIds.add(vipGroup.getEducationalTeacherId());
-			educations.add(vipGroup.getEducationalTeacherId());
-		}else if(groupType == PRACTICE){
-			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-			studentIds.add(practiceGroup.getEducationalTeacherId());
-			educations.add(practiceGroup.getEducationalTeacherId());
-		}
-		educations.removeAll(Collections.singleton(null));
-		studentIds.removeAll(Collections.singleton(null));
-		//获取通讯录昵称
-		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-		for (Integer studentId : studentIds) {
-			if(teacherId == studentId){
-				continue;
-			}
-			//老师关联的学员、教务
-			ImUserFriend imUserFriend = new ImUserFriend();
-			imUserFriend.setUserId(teacherId);
-			imUserFriend.setFriendId(studentId);
-			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-			imUserFriend.setMemo(musicGroup.getName());
-			imUserFriend.setTags(teacherSubjectNameMap.get(studentId));
-			imUserFriends.add(imUserFriend);
-			//学员、教务关联的老师
-			ImUserFriend imUserFriend1 = new ImUserFriend();
-			imUserFriend1.setUserId(studentId);
-			imUserFriend1.setFriendId(teacherId);
-			imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
-			imUserFriend1.setMemo(musicGroup.getName());
-			imUserFriend1.setTags(studentSubjectName.get(teacherId));
-			imUserFriends.add(imUserFriend1);
-
-			for (Integer education : educations) {
-				if(studentId == education){
+			//教务关联老师
+			for (Integer teacher : teacherIds) {
+				if(educationId == teacher){
 					continue;
 				}
-				//教务关联的学员
-				ImUserFriend imUserFriend2 = new ImUserFriend();
-				imUserFriend2.setUserId(education);
-				imUserFriend2.setFriendId(studentId);
-				imUserFriend2.setFriendNickname(nameIdMap.get(studentId));
-				imUserFriend2.setMemo(musicGroup.getName());
-				imUserFriend2.setTags(studentSubjectName.get(studentId));
-				imUserFriends.add(imUserFriend2);
-				//学员关联的教务
-				ImUserFriend imUserFriend3 = new ImUserFriend();
-				imUserFriend3.setUserId(studentId);
-				imUserFriend3.setFriendId(education);
-				imUserFriend3.setFriendNickname(nameIdMap.get(education));
-				imUserFriend3.setMemo(musicGroup.getName());
-				imUserFriend3.setTags(teacherSubjectNameMap.get(education));
-				imUserFriends.add(imUserFriend3);
-			}
-		}
-		if(imUserFriends.size() > 0){
-			batchInsert(imUserFriends);
-		}
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void groupChangeEducation(String groupId, Integer educationId, GroupType groupType) {
-		Set<Integer> studentIds = new HashSet<>();
-		List<ImUserFriend> imUserFriends = new ArrayList<>();
-		//获取班级关联的学员
-		List<ClassGroupStudentInfoDto> studentMappers = classGroupStudentMapperDao.findByGroupOrClassGroup(groupId, groupType, null);
-		studentIds.addAll(studentMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		//获取班级关联的老师
-		List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperDao.findAllByMusicGroup(groupId,groupType,null);
-		studentIds.addAll(classGroupTeacherMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		//获取课程关联的老师
-		List<CourseScheduleTeacherSalary> teacherSalaries = courseScheduleTeacherSalaryDao.findByGroup(groupId, groupType.getCode());
-		studentIds.addAll(teacherSalaries.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.add(educationId);
-
-		//获取通讯录昵称
-		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-		//获取老师声部
-		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
-		for (Integer studentId : studentIds) {
-			if(educationId == studentId){
-				continue;
+				ImUserFriend imUserFriend = new ImUserFriend();
+				imUserFriend.setUserId(educationId);
+				imUserFriend.setFriendId(teacher);
+				imUserFriend.setFriendNickname(teacherRealNameMap.get(teacher));
+				imUserFriend.setMemo(musicGroup.getName());
+				imUserFriend.setTags(teacherSubjectNameMap.get(teacher));
+				imUserFriends.add(imUserFriend);
 			}
-			//教务关联的老师、学员
-			ImUserFriend imUserFriend = new ImUserFriend();
-			imUserFriend.setUserId(educationId);
-			imUserFriend.setFriendId(studentId);
-			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-			imUserFriend.setTags(teacherSubjectNameMap.get(studentId));
-			imUserFriends.add(imUserFriend);
-			//学员老师关联教务
-			ImUserFriend imUserFriend1 = new ImUserFriend();
-			imUserFriend1.setUserId(studentId);
-			imUserFriend1.setFriendId(educationId);
-			imUserFriend1.setFriendNickname(nameIdMap.get(educationId));
-			imUserFriends.add(imUserFriend1);
-		}
-		if(imUserFriends.size() > 0){
-			batchInsert(imUserFriends);
 		}
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void courseScheduleChangeTeacher(Long courseScheduleId, Integer teacherId) {
-		Set<Integer> studentIds = new HashSet<>();
-		Set<Integer> educations = new HashSet<>();
-		List<ImUserFriend> imUserFriends = new ArrayList<>();
-		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
-		//获取课程上关联的学员
-		List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseScheduleId);
-		studentIds.addAll(studentPayments.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.add(teacherId);
-		//学员声部列表
-		Map<Integer,String> studentSubjectName = new HashMap<>();
-		MusicGroup musicGroup = new MusicGroup();
-		GroupType groupType = courseSchedule.getGroupType();
-		if(groupType == MUSIC){
-			musicGroupDao.get(courseSchedule.getMusicGroupId());
-			//获取学员声部列表
-			studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
-			//关联乐团管理人员通讯录
-			musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
-			studentIds.add(musicGroup.getDirectorUserId());
-			studentIds.add(musicGroup.getEducationalTeacherId());
-			studentIds.add(musicGroup.getTeamTeacherId());
-			educations.add(musicGroup.getDirectorUserId());
-			educations.add(musicGroup.getEducationalTeacherId());
-			educations.add(musicGroup.getTeamTeacherId());
-		}else if(groupType == VIP){
-			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
-			educations.add(vipGroup.getEducationalTeacherId());
-			studentIds.add(vipGroup.getEducationalTeacherId());
-		}else if(groupType == PRACTICE){
-			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
-			studentIds.add(practiceGroup.getEducationalTeacherId());
-			educations.add(practiceGroup.getEducationalTeacherId());
-		}
-		educations.removeAll(Collections.singleton(null));
-		studentIds.removeAll(Collections.singleton(null));
-		//获取通讯录昵称
-		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-		//获取老师声部
-		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
+		//学员关联的老师、教务
 		for (Integer studentId : studentIds) {
-			if(teacherId == studentId){
-				continue;
+			//学员关联的老师
+			for (Integer teacher : teacherIds) {
+				if(teacher == studentId){
+					continue;
+				}
+				ImUserFriend imUserFriend = new ImUserFriend();
+				imUserFriend.setUserId(studentId);
+				imUserFriend.setFriendId(teacher);
+				imUserFriend.setFriendNickname(teacherRealNameMap.get(teacher));
+				imUserFriend.setMemo(musicGroup.getName());
+				imUserFriend.setTags(teacherSubjectNameMap.get(teacher));
+				imUserFriends.add(imUserFriend);
 			}
-			//老师关联的学员和教务
-			ImUserFriend imUserFriend = new ImUserFriend();
-			imUserFriend.setUserId(teacherId);
-			imUserFriend.setFriendId(studentId);
-			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-			imUserFriend.setMemo(musicGroup.getName());
-			imUserFriend.setTags(studentSubjectName.get(studentId));
-			imUserFriends.add(imUserFriend);
-			//学员关联的老师、教务关联老师
-			ImUserFriend imUserFriend1 = new ImUserFriend();
-			imUserFriend1.setUserId(studentId);
-			imUserFriend1.setFriendId(teacherId);
-			imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
-			imUserFriend1.setMemo(musicGroup.getName());
-			imUserFriend1.setTags(teacherSubjectNameMap.get(teacherId));
-			imUserFriends.add(imUserFriend1);
-			for (Integer education : educations) {
-				if(studentId == education){
+			//学员关联的教务
+			for (Integer education : educationIds) {
+				if(education == studentId){
 					continue;
 				}
-				//学员关联教务
-				ImUserFriend imUserFriend2 = new ImUserFriend();
-				imUserFriend2.setUserId(studentId);
-				imUserFriend2.setFriendId(education);
-				imUserFriend2.setFriendNickname(nameIdMap.get(education));
-				imUserFriend2.setMemo(musicGroup.getName());
-				imUserFriend2.setTags(teacherSubjectNameMap.get(education));
-				imUserFriends.add(imUserFriend2);
-				//教务关联学员
-				ImUserFriend imUserFriend3 = new ImUserFriend();
-				imUserFriend3.setUserId(education);
-				imUserFriend3.setFriendId(studentId);
-				imUserFriend3.setFriendNickname(nameIdMap.get(studentId));
-				imUserFriend3.setMemo(musicGroup.getName());
-				imUserFriend3.setTags(studentSubjectName.get(studentId));
-				imUserFriends.add(imUserFriend3);
+				ImUserFriend imUserFriend = new ImUserFriend();
+				imUserFriend.setUserId(studentId);
+				imUserFriend.setFriendId(education);
+				imUserFriend.setFriendNickname(educationRealNameMap.get(education));
+				imUserFriends.add(imUserFriend);
 			}
 		}
-		if(imUserFriends.size() > 0){
-			batchInsert(imUserFriends);
-		}
+		return imUserFriends;
 	}
-
 }

+ 21 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.*;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -150,6 +151,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	@Autowired
 	private ImGroupMemberService imGroupMemberService;
 	@Autowired
+	private ImUserFriendService imUserFriendService;
+	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 	@Autowired
 	private MusicGroupStudentClassAdjustDao musicGroupStudentClassAdjustDao;
@@ -479,6 +482,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			Organization organization = organizationDao.get(musicGroup.getOrganId());
 			sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()),
 					MessageTypeEnum.BACKSTAGE_PAYMENT_CALENDER_AUDIT, "", organization.getName(), musicGroup.getName());
+		}else {
+			imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
 		}
 		return batchNo;
 	}
@@ -800,8 +805,13 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					MessageTypeEnum.BACKSTAGE_PAYMENT_CALENDER_AUDIT, "", organization.getName(), musicGroup.getName());
 		}else {
 			if(paymentType == ADD_STUDENT){
-				//如果是合班缴费
-				autoClassGroupAdjust(batchNo);
+				MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
+				if(musicGroupStudentClassAdjust != null){
+					//如果是合班缴费
+					autoClassGroupAdjust(musicGroupStudentClassAdjust);
+				}else {
+					imUserFriendService.refreshGroupImUserFriend(musicGroupId,GroupType.MUSIC);
+				}
 			}else if(paymentType == SPAN_GROUP_CLASS_ADJUST){
 				//删除和解冻班级,课程信息
 				MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
@@ -985,9 +995,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		calenderAuditDetailDto.setAuditDto(auditDto);
 		//获取收费标准
 		calenderAuditDetailDto.setMusicGroupPaymentCalenderCourseSettings(musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettingsByBatchNo(batchNo));
-		//获取学员列表
-//		calenderAuditDetailDto.setBasicUserDtos(musicGroupPaymentCalenderDetailDao.querySimpleUserDto(batchNo,auditDto.getMusicGroupId()));
-//		calenderAuditDetailDto.setStudentNum(calenderAuditDetailDto.getSimpleUserDto().size());
 		//获取缴费周期
 		List<MusicGroupPaymentCalender> groupPaymentCalenders = musicGroupPaymentCalenderDao.findByBatchNo(batchNo);
 		calenderAuditDetailDto.setMusicGroupPaymentCalenders(groupPaymentCalenders);
@@ -999,11 +1006,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	//审核通过后自动排课
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void autoClassGroupAdjust(String batchNo){
-		MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
-		if(musicGroupStudentClassAdjust == null){
-			return;
-		}
+	public void autoClassGroupAdjust(MusicGroupStudentClassAdjust musicGroupStudentClassAdjust){
 		List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByBatchNo(musicGroupStudentClassAdjust.getBatchNo());
 		for (MusicGroupPaymentCalender musicGroupPaymentCalender : musicGroupPaymentCalenders) {
 			if(musicGroupPaymentCalender.getStatus() == AUDITING || musicGroupPaymentCalender.getStatus() == REJECT){
@@ -1061,6 +1064,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			//删除教师课酬
 			courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
 		}
+		imUserFriendService.refreshGroupImUserFriend(musicGroupPaymentCalenders.get(0).getMusicGroupId(),GroupType.MUSIC);
 	}
 
 	@Override
@@ -1115,8 +1119,13 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(calender.getStudentIds()), classGroupIdStr, batchNo,
 						musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettingsByBatchNo(batchNo));
 			}
-			//如果是合班缴费
-			autoClassGroupAdjust(batchNo);
+			MusicGroupStudentClassAdjust musicGroupStudentClassAdjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
+			if(musicGroupStudentClassAdjust != null){
+				//如果是合班缴费
+				autoClassGroupAdjust(musicGroupStudentClassAdjust);
+			}else {
+				imUserFriendService.refreshGroupImUserFriend(calender.getMusicGroupId(),GroupType.MUSIC);
+			}
 		}else if(calender.getPaymentType() == SPAN_GROUP_CLASS_ADJUST){
 			//删除和解冻班级,课程信息
 			MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);

+ 51 - 109
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -15,10 +15,11 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -31,42 +32,6 @@ import com.alibaba.fastjson.TypeReference;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dao.ChargeTypeDao;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderStudentDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
-import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.StudentPreRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentVisitDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
 import com.ym.mec.biz.dal.dto.CourseFormDto;
@@ -126,25 +91,6 @@ import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.biz.service.ImGroupMemberService;
-import com.ym.mec.biz.service.ImGroupService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.MusicGroupService;
-import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImGroupMember;
@@ -193,6 +139,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
     @Autowired
+    private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
+
+    @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @Autowired
@@ -277,6 +226,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private ImGroupMemberService imGroupMemberService;
     @Autowired
+    private ImUserFriendService imUserFriendService;
+    @Autowired
     private ImGroupService imGroupService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
@@ -524,8 +475,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		List<StudentPreRegistration> studentPreRegistrationList = studentPreRegistrationDao.queryByMusicGroupId(musicGroupId);
 		Map<Integer,String> receiverList = studentPreRegistrationList.stream().collect(Collectors.toMap(StudentPreRegistration :: getUserId, StudentPreRegistration :: getPhone));
 		
-		sysMessageService.batchSendImGroupMessage(MessageTypeEnum.SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE, userId + "", null, new String[]{musicGroupId}, null, meetingDate, address);
-		sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE, receiverList, null, 1, null, null, meetingDate, address);
+		String meetingDateStr = sdf_ymdhms.format(meetingDate);
+		sysMessageService.batchSendImGroupMessage(MessageTypeEnum.SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE, userId + "", null, new String[]{musicGroupId}, null, meetingDateStr, address);
+		sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE, receiverList, null, 1, null, null, meetingDateStr, address);
 		return true;
 	}
 
@@ -1147,7 +1099,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupDao.update(musicGroup);
         }
         //记录日志信息
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团计划声部、乐器", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "基础信息提交审核(编辑中 -> 审核中)", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
         //删除原有的乐团声部规划
         musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId);
         //删除原有的声部商品组合
@@ -1218,17 +1170,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 throw new BizException("课酬未确认");
             }
         }
-//        updateTeamTeacher(musicGroup, musicGroup);
-        //生成学员费用表
-        /*List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
-        if (musicGroupStudentFees != null && musicGroupStudentFees.size() > 0) {
-            if (musicGroup.getFeeType() != null && musicGroup.getFeeType() != FeeType.OFFLINE) {
-                for (MusicGroupStudentFee sf : musicGroupStudentFees) {
-                    sf.setRemainNetworkClassTimes(sf.getRemainNetworkClassTimes() + 1);
-                }
-            }
-            musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees, null, "PAID_COMPLETED");
-        }*/
         musicGroupStudentFeeDao.batchUpdateCalenders(musicGroupId);
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "确认开团(筹备中 -> 进行中)", sysUser.getId(), ""));
@@ -1238,6 +1179,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroup.setGroupMemberNum(studentRegistrations == null ? 0 : studentRegistrations.size());
         musicGroup.setBillStartDate(new Date());
         musicGroupDao.update(musicGroup);
+        //获取乐团班级列表
+        List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, "MUSIC");
+        for (ClassGroup classGroup : classGroups) {
+            //获取班级关联的老师列表
+            Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroup.getId(),null,null);
+            //获取班级关联的学员列表
+            Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroup.getId(),null,null);
+            //创建IM群组
+            classGroupService.addImGroup(classGroup, new ArrayList<>(studentIds), new ArrayList<>(teacherIds));
+        }
+        imUserFriendService.refreshGroupImUserFriend(musicGroupId,GroupType.MUSIC);
         //给老师发送乐团成立通知
         Map<Integer, String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(musicGroupDao.queryTeacherIdMap(musicGroupId))), HashMap.class);
         if (map != null && map.size() > 0) {
@@ -1322,7 +1274,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupDao.update(musicGroup);
         
         // 创建群
-        imGroupService.create(Long.parseLong(musicGroupId), null, "乐团预报名", null, musicGroup.getName(), null, null, GroupType.MUSIC.getCode());
+        imGroupService.create(Long.parseLong(musicGroupId), null, "乐团预报名", null, musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode());
         
         Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
         
@@ -1510,7 +1462,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //删除考勤
         teacherAttendanceDao.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC);
 
-        // 查询已缴费信息
+        /*// 查询已缴费信息
         studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, SUCCESS);
 
         // 退费
@@ -1518,7 +1470,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             // 增加交易流水
             sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount().add(order.getBalancePaymentAmount()), SysUserCashAccountDetailService.MUSIC_GROUP
                     + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, SUCCESS, "取消乐团", null);
-        }
+        }*/
         //获取当前乐团所有已报名学员
         if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
             List<StudentRegistration> registrations = studentRegistrationDao.findClassGroupStu(musicGroupId, null);
@@ -1874,6 +1826,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //删除续费周期
             musicGroupStudentFeeDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
             // 退团
+            BigDecimal surplusCourseFee = studentRegistration.getSurplusCourseFee();
+            StudentMusicGroupStatusEnum currentStudentMusicGroupStatus = studentRegistration.getMusicGroupStatus();
             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.QUIT);
             studentRegistration.setSurplusCourseFee(BigDecimal.ZERO);
             studentRegistration.setUpdateTime(date);
@@ -1920,19 +1874,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //删除用户购买的课程记录
             musicGroupPaymentStudentCourseDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 
-            //操作人
-            SysUser operator = sysUserFeignService.queryUserInfo();
-
-            BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC, userId);
-            BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
-            if (Objects.isNull(price)) {
-                price = new BigDecimal(0);
-            }
-            subtractAmount = subtractAmount.subtract(price);
-            if (BigDecimal.ZERO.compareTo(subtractAmount) < 0) {
-                studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
-            }
-
             BigDecimal amount = new BigDecimal(0);
 
             // 判断乐器是否是租赁
@@ -1943,9 +1884,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
             }
             
+            if(currentStudentMusicGroupStatus != StudentMusicGroupStatusEnum.NORMAL){
+            	return true;
+            }
+            
             if (isRefundCourseFee) {
                 // 退课程费用
-                amount = amount.add(studentRegistration.getSurplusCourseFee());
+                amount = amount.add(surplusCourseFee);
             }
 
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
@@ -2014,12 +1959,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("退团失败,乐团状态[已取消]或[已暂停]");
         }
 
-        // 判断乐器是否是租赁
-        StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-        if (studentRegistration == null) {
-            throw new BizException("用户注册信息不存在");
-		}
-
 		// 有进行中的课程不能退团
 		List<CourseSchedule> courseScheduleList = courseScheduleDao.findMusicGroupCourseSchedulesWithStudent(musicGroupId, GroupType.MUSIC.getCode(),
 				"UNDERWAY", userId);
@@ -2029,6 +1968,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), Arrays.asList(userId), GroupType.MUSIC);
 
+        // 判断乐器是否是租赁
+        StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+        if (studentRegistration == null) {
+            throw new BizException("用户注册信息不存在");
+		}
+
         Date date = new Date();
 
         MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
@@ -2055,6 +2000,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //删除续费周期
         musicGroupStudentFeeDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 
+        BigDecimal surplusCourseFee = studentRegistration.getSurplusCourseFee();
+        StudentMusicGroupStatusEnum currentStudentMusicGroupStatus = studentRegistration.getMusicGroupStatus();
         // 退团
         studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.QUIT);
         studentRegistration.setSurplusCourseFee(BigDecimal.ZERO);
@@ -2102,20 +2049,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //删除用户购买的课程记录
         musicGroupPaymentStudentCourseDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
         
-
-        //操作人
-        SysUser operator = sysUserFeignService.queryUserInfo();
-
-        BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC, userId);
-        BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
-        if (Objects.isNull(price)) {
-            price = new BigDecimal(0);
-        }
-        subtractAmount = subtractAmount.subtract(price);
-        if (BigDecimal.ZERO.compareTo(subtractAmount) < 0) {
-            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
-        }
-
         BigDecimal amount = new BigDecimal(0);
 
         // 判断乐器是否是租赁
@@ -2126,9 +2059,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
         }
         
+        if(currentStudentMusicGroupStatus != StudentMusicGroupStatusEnum.NORMAL){
+        	return true;
+        }
+        
         if (isRefundCourseFee) {
             // 退课程费用
-            amount = amount.add(studentRegistration.getSurplusCourseFee());
+            amount = amount.add(surplusCourseFee);
         }
 
         StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
@@ -2626,7 +2563,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //如果已生成课表,那么修改未上课时教学点
             courseScheduleDao.updateCourseScheduleSchool("MUSIC", musicGroupId, musicGroup.getSchoolId());
         }
-        updateTeamTeacher(group, musicGroup);
+        if(group.getStatus() == MusicGroupStatusEnum.PROGRESS){
+            updateTeamTeacher(group, musicGroup);
+        }
 
         Date date = new Date();
         //缴费方式不同
@@ -2652,6 +2591,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (subFeeSettingDto.getMusicGroupPaymentEntities() != null && subFeeSettingDto.getMusicGroupPaymentEntities().size() > 0) {
             musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(), musicGroupId);
         }
+        if(group.getStatus() == MusicGroupStatusEnum.PROGRESS){
+            imUserFriendService.refreshGroupImUserFriend(musicGroupId,GroupType.MUSIC);
+        }
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团基本信息数据", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
     }

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

@@ -291,7 +291,7 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
 
         Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
         userRoleMap.put(onlineMusicGroupCourseInfo.getStudentId(), null);
-        userRoleMap.put(onlineMusicGroupCourseInfo.getTeacherId(), null);
+        userRoleMap.put(onlineMusicGroupCourseInfo.getTeacherId(), "指导老师");
         
         // 创建群组
         imGroupService.create(classGroup.getId().longValue(), musicGroup.getEducationalTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "MUSIC");

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

@@ -2077,10 +2077,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 
-        imUserFriendService.groupChangeEducation(practiceGroup.getId().toString(), practiceGroup.getEducationalTeacherId(), GroupType.PRACTICE);
-        imUserFriendService.classGroupChangeTeacher(classGroup.getId(), practiceGroup.getUserId());
-        imUserFriendService.classGroupAddStudent(classGroup.getId(), Arrays.asList(practiceGroup.getStudentId()));
-
         //推送
         List<CourseSchedule> courseSchedules1 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(practiceGroup.getUserId(), allCourseDates.get(0), DateUtil.addMinutes(allCourseDates.get(0), practiceCourseMinutes));
         List<CourseSchedule> courseSchedules2 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(practiceGroup.getUserId(), allCourseDates.get(1), DateUtil.addMinutes(allCourseDates.get(1), practiceCourseMinutes));
@@ -2131,6 +2127,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(), null, YesOrNoEnum.YES.getCode());
 
+        imUserFriendService.refreshGroupImUserFriend(practiceGroup.getId().toString(), GroupType.PRACTICE);
         result.put("teacherName", teacher.getRealName());
         result.put("enableApply", applyTimes < 1 ? 1 : 0);
         result.put("status", "SUCCESS");
@@ -3272,10 +3269,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         practiceGroup.setGroupStatus(GroupStatusEnum.NORMAL);
         practiceGroupDao.update(practiceGroup);
 
-        imUserFriendService.groupChangeEducation(practiceGroup.getId().toString(), practiceGroup.getEducationalTeacherId(), GroupType.PRACTICE);
-        imUserFriendService.classGroupChangeTeacher(classGroup.getId(), practiceGroup.getUserId());
-        imUserFriendService.classGroupAddStudent(classGroup.getId(), Arrays.asList(practiceGroup.getStudentId()));
-
         try {
             contractService.transferPracticeCoursesContract(order.getUserId(), classGroup.getTotalClassTimes(), practiceGroup.getCoursesStartDate(), practiceGroup.getCoursesExpireDate(), order.getExpectAmount());
         } catch (Exception e) {
@@ -3313,7 +3306,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(), null, YesOrNoEnum.YES.getCode());
-
+        imUserFriendService.refreshGroupImUserFriend(practiceGroup.getId().toString(),GroupType.PRACTICE);
     }
 
     @Override

+ 7 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -198,7 +198,9 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
         if (auditStatus == AuditStatusEnum.PASS) {
             StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
             studentPaymentOrder.setActualAmount(studentPaymentRouteOrder.getRouteAmount());
-            studentPaymentOrder.setMusicGroupId(studentPaymentRouteOrder.getSchoolId() + "");
+            if(studentPaymentRouteOrder.getSchoolId() != null) {
+                studentPaymentOrder.setMusicGroupId(studentPaymentRouteOrder.getSchoolId() + "");
+            }
             studentPaymentOrder.setType(OrderTypeEnum.OUTORDER);
             studentPaymentOrder.setMerNos(studentPaymentRouteOrder.getMerNo());
             studentPaymentOrder.setOrderNo(studentPaymentRouteOrder.getOrderNo());
@@ -537,10 +539,10 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
             }
         }
         if (studentPaymentRouteOrders.size() > 0) {
-            Map<String, List<StudentPaymentRouteOrder>> stringListMap = studentPaymentRouteOrders.stream().collect(Collectors.groupingBy(StudentPaymentRouteOrder::getTransNo));
-            if (stringListMap.size() != studentPaymentRouteOrders.size()) {
-                throw new BizException("导入失败:请勿录入重复的交易流水号");
-            }
+//            Map<String, List<StudentPaymentRouteOrder>> stringListMap = studentPaymentRouteOrders.stream().collect(Collectors.groupingBy(StudentPaymentRouteOrder::getTransNo));
+//            if (stringListMap.size() != studentPaymentRouteOrders.size()) {
+//                throw new BizException("导入失败:请勿录入重复的交易流水号");
+//            }
             studentPaymentRouteOrderDao.batchAdd(studentPaymentRouteOrders);
         } else {
             throw new BizException(sb.length() > 0 ? sb.toString() : "导入失败:没有可以录入的数据");

+ 38 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -760,9 +760,40 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
             }*/
             musicGroupStudentFeeDao.insert(musicGroupStudentFee);
-//            musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
-//                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-//                    nextPaymentDate, studentAddDto.getTemporaryCourseFee(), paymentStatus));
+
+            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
+
+            if (waitPayOrder != null) {
+                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
+                studentPaymentOrderService.update(waitPayOrder);
+            }
+            //生成订单
+            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+            studentPaymentOrder.setUserId(userId);
+            studentPaymentOrder.setGroupType(GroupType.MUSIC);
+            studentPaymentOrder.setType(OrderTypeEnum.APPLY);
+            studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
+            studentPaymentOrder.setMusicGroupId(musicGroupId);
+            studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
+            studentPaymentOrder.setOrganId(musicGroup.getOrganId());
+            studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
+
+            //生成订单明细
+            List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
+            if (studentPaymentOrderDetails == null) {
+                studentPaymentOrderDetails = new ArrayList<>();
+            }
+            //汇总金额
+
+            BigDecimal reduce = studentPaymentOrderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+            if (reduce.compareTo(BigDecimal.ZERO) == 0) {
+                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+                studentPaymentOrder.setActualAmount(reduce);
+                studentPaymentOrder.setPayTime(date);
+            }
+            studentPaymentOrder.setExpectAmount(reduce);
+            studentPaymentOrderService.insert(studentPaymentOrder);
+            
             //当前学员是否以前存在过当前乐团
             if (phoneAndMusicGroupId != null) {
                 studentRegistration.setId(phoneAndMusicGroupId.getId());
@@ -818,7 +849,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             StudentRegistration registration = studentRegistrationDao.getByPhoneAndMusicGroupId(newMusicGroupId, studentRegistration.getParentsPhone());
             if (registration != null) {
                 //修改剩余课程余额
+                Date date = new Date();
                 registration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+                registration.setCreateTime(date);
+                registration.setUpdateTime(date);
                 registration.setSurplusCourseFee(registration.getSurplusCourseFee().add(amount));
                 studentRegistrationDao.update(registration);
             }else {
@@ -1564,7 +1598,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         List<StudentRegistration> registrations = studentRegistrationDao.findStudentListByUserIdList(musicGroupId, userIds);
         for (StudentRegistration registration : registrations) {
             if(registration.getPaymentStatus().equals(PaymentStatusEnum.OPEN)||registration.getPaymentStatus().equals(PaymentStatusEnum.YES)){
-                throw new BizException("开启缴费/已缴费的学员不能删除");
+                throw new BizException(registration.getName()+"("+registration.getPaymentStatus().getDesc()+"),不能删除");
             }
         }
         if (registrations.size() <= 0) {

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

@@ -27,6 +27,7 @@ import com.ym.mec.util.idcard.IdcardValidator;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -73,6 +74,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	private StudentDao studentDao;
 	@Autowired
 	private ImUserFriendDao imUserFriendDao;
+	@Autowired
+	private RedisTemplate<String,String> redisTemplate;
 
 
 	@Override
@@ -328,11 +331,24 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		if(studentIds.size() > 0){
 			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
 		}
+
+		String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
 		if(basicUserDtos.size() > 0){
-			//批量新增
-			imUserFriendDao.batchInsert(basicUserDtos,teacherId);
+			for (BasicUserDto basicUserDto : basicUserDtos) {
+				if(basicUserDto.getUserId().equals(teacherId)){
+					continue;
+				}
+				// 检查是否已经是好友
+				ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
+				if (userFriend != null) {
+					continue;
+				}
+				imUserFriendDao.insertByBasicUser(basicUserDto,teacherId);
+			}
+			redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
 			return imUserFriendDao.queryFriendListByUserId(teacherId, search);
 		}
+		redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
 		return new ArrayList<>();
 	}
 

+ 35 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java

@@ -10,6 +10,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.thirdparty.adapay.ConfigInit;
 import com.ym.mec.thirdparty.adapay.Payment;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -20,16 +23,9 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.TenantEntryActivitiesDao;
-import com.ym.mec.biz.dal.dao.TenantPaymentOrderDao;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.entity.SysTenantAccountDetail.TransType;
-import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TenantEntryActivities;
 import com.ym.mec.biz.dal.entity.TenantEntryActivities.SuitableUser;
-import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
 import com.ym.mec.biz.dal.entity.TenantPaymentOrder.TenantPaymentType;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
@@ -77,6 +73,8 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
 
     @Autowired
     private YqPayFeignService yqPayFeignService;
+    @Autowired
+    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
 
     @Override
     public BaseDAO<Long, TenantPaymentOrder> getDAO() {
@@ -214,6 +212,8 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
             // 更新账户表信息
             sysTenantAccountService.update(userId, tenantEntryActivities.getPurchaseMinutes() + tenantEntryActivities.getGiveMinutes(),
                     tenantPaymentOrder.getOrderNo(), TransType.RECHARGE, "", tenantEntryActivities.getDiscountPrice(), "");
+
+            this.confirmOrder(tenantPaymentOrder);
         } else {
 
         }
@@ -221,6 +221,34 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
         return true;
     }
 
+    private Boolean confirmOrder(TenantPaymentOrder order) {
+        List<StudentPaymentRouteOrder> routeOrders = studentPaymentRouteOrderDao.getRouteOrders(order.getOrderNo());
+        for (StudentPaymentRouteOrder routeOrder : routeOrders) {
+            Map<String, Object> divMember = new HashMap<>();
+            divMember.put("member_id", routeOrder.getMerNo());//分佣账户
+            divMember.put("amount", routeOrder.getRouteAmount().setScale(2, BigDecimal.ROUND_HALF_UP));//分佣金额
+            divMember.put("fee_flag", "Y");
+            if (routeOrder.getMerNo().equals(ConfigInit.merNo)) {
+                divMember.put("member_id", 0);
+            }
+            List<Map<String, Object>> divMembers = new ArrayList<>();
+            divMembers.add(divMember);
+
+            Map<String, Object> confirm = new HashMap<>();
+            confirm.put("payment_id", order.getTransNo());
+            confirm.put("order_no", idGeneratorService.generatorId("payment"));
+            confirm.put("confirm_amt", routeOrder.getRouteAmount());
+            confirm.put("div_members", divMembers);
+            try {
+                Payment.createConfirm(confirm);
+            } catch (Exception e) {
+                continue;
+            }
+        }
+        return true;
+    }
+
+
     @Override
     public void queryOrderStatusFromRemote() {
         try {

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

@@ -1407,9 +1407,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 		if(Objects.nonNull(vipGroupApplyBaseInfoDto.getEducationalTeacherId())){
-            userRoleMap.put(vipGroupApplyBaseInfoDto.getEducationalTeacherId(),null);
+            userRoleMap.put(vipGroupApplyBaseInfoDto.getEducationalTeacherId(),"乐团主管");
         }
-		userRoleMap.put(vipGroupApplyBaseInfoDto.getUserId(),null);
+		userRoleMap.put(vipGroupApplyBaseInfoDto.getUserId(),"指导老师");
 		//生成学生单课缴费信息
 		for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,classGroupStudent.getUserId());
@@ -1429,12 +1429,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		try {
 			imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroupApplyBaseInfoDto.getName(), null, null, GroupType.VIP.getCode());
 			imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
-			List<Integer> studentIds = classGroupStudents.stream().map(ClassGroupStudentMapper::getUserId).collect(Collectors.toList());
-
-			imUserFriendService.groupChangeEducation(vipGroupApplyBaseInfoDto.getId().toString(), vipGroupApplyBaseInfoDto.getEducationalTeacherId(), GroupType.PRACTICE);
-			imUserFriendService.classGroupChangeTeacher(classGroup.getId(), vipGroupApplyBaseInfoDto.getUserId());
-			imUserFriendService.classGroupAddStudent(classGroup.getId(), studentIds);
-
+			imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
 			//发送推送短信
 			Map<Integer,String> map = new HashMap<>(1);
 			map.put(vipGroupApplyBaseInfoDto.getUserId(),sysUser.getPhone());
@@ -2012,7 +2007,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			
 			imGroupMemberService.quit(classGroup.getId().longValue(), oldTeacherId);
 
-			imGroupMemberService.join(classGroup.getId().longValue(), vipGroup.getUserId(), null, false);
+			imGroupMemberService.join(classGroup.getId().longValue(), vipGroup.getUserId(), "指导老师", false);
 		}
 
 		ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.query(classGroup.getId(),
@@ -2036,7 +2031,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		if(Objects.nonNull(studentRecoverInfo.getTeacherId())){
 			vipGroup.setUserId(studentRecoverInfo.getTeacherId());
-			imUserFriendService.classGroupChangeTeacher(classGroup.getId(), studentRecoverInfo.getTeacherId());
 		}
 
 		Map<String, Object> courseInfo = JSON.parseObject(studentPauseInfo.getCoursesJson(), Map.class);
@@ -2143,7 +2137,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         classGroup.setTotalClassTimes(courseScheduleDao.countClassGroupCourses(classGroup.getId()));
         classGroupDao.update(classGroup);
 		courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroup.getId().intValue(),oldTeacherId);
-		imUserFriendService.classGroupAddStudent(classGroup.getId(), Arrays.asList(studentRecoverInfo.getUserId()));
+		imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
 	}
 
     @Override
@@ -2665,8 +2659,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			oldVipGroupInfo.setEducationalTeacherId(vipGroupApplyBaseInfo.getEducationalTeacherId());
 			isChange=true;
 			
-			imGroupMemberService.join(classGroup.getId().longValue(), oldVipGroupInfo.getEducationalTeacherId(), null, false);
-			imUserFriendService.groupChangeEducation(oldVipGroupInfo.getId().toString(), oldVipGroupInfo.getEducationalTeacherId(), GroupType.VIP);
+			imGroupMemberService.join(classGroup.getId().longValue(), oldVipGroupInfo.getEducationalTeacherId(), "乐团主管", false);
 		}
 		if(Objects.nonNull(vipGroupApplyBaseInfo.getOrganId())&&!vipGroupApplyBaseInfo.getOrganId().equals(oldVipGroupInfo.getOrganId())){
 			isChange=true;
@@ -2677,6 +2670,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			oldVipGroupInfo.setUpdateTime(now);
 			vipGroupDao.update(oldVipGroupInfo);
 		}
+		imUserFriendService.refreshGroupImUserFriend(oldVipGroupInfo.getId().toString(),GroupType.VIP);
 	}
 
 	@Override
@@ -2871,7 +2865,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						salaryMap.get("onlineTeacherSalary"),
 						salaryMap.get("offlineTeacherSalary"));
 			}
-            userRoleMap.put(vipGroup.getUserId(), null);
+            userRoleMap.put(vipGroup.getUserId(), "指导老师");
+            
+            if(vipGroup.getEducationalTeacherId() != null){
+                userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
+            }
 		}
 
 		List<CourseSchedule> surplusCourses = courseScheduleDao.findByClassGroupAndStatus(classGroup.getId(), CourseStatusEnum.NOT_START.getCode());
@@ -2923,7 +2921,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			try {
 				imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
 				imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
-				imUserFriendService.classGroupAddStudent(classGroup.getId(), studentIds);
+				imUserFriendService.refreshClassImUserFriend(classGroup.getId());
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
@@ -3107,9 +3105,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
 			imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 
-			imUserFriendService.groupChangeEducation(vipGroup.getId().toString(), vipGroup.getEducationalTeacherId(), GroupType.PRACTICE);
-			imUserFriendService.classGroupChangeTeacher(classGroup.getId(), vipGroup.getUserId());
-			imUserFriendService.classGroupAddStudent(classGroup.getId(), studentIds);
+			imUserFriendService.refreshGroupImUserFriend(vipGroup.getId().toString(),GroupType.VIP);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

+ 22 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -588,4 +588,26 @@
             #{item}
         </foreach>
     </select>
+    <select id="queryStudentIdsByClassGroupId" resultType="java.lang.Integer">
+        SELECT DISTINCT user_id_ FROM class_group_student_mapper
+        <include refid="queryStudentIdsByClassGroupIdSql"/>
+        AND status_ != 'QUIT'
+        UNION ALL
+        SELECT DISTINCT user_id_ FROM course_schedule_student_payment csts
+        <include refid="queryStudentIdsByClassGroupIdSql"/>
+    </select>
+
+    <sql id="queryStudentIdsByClassGroupIdSql">
+        <where>
+            <if test="classGroupId != null">
+                AND class_group_id_ = #{classGroupId}
+            </if>
+            <if test="groupType != null">
+                AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="musicGroupId != null">
+                AND music_group_id_ = #{musicGroupId}
+            </if>
+        </where>
+    </sql>
 </mapper>

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml

@@ -228,4 +228,24 @@
         class_group_teacher_mapper ct
         WHERE u.id_ = ct.user_id_ AND ct.class_group_id_ = #{classGroupId} AND ct.teacher_role_ = #{teacherRole} LIMIT 1
     </select>
+    <select id="queryTeacherIdsByClassGroupId" resultType="java.lang.Integer">
+        SELECT DISTINCT user_id_ FROM class_group_teacher_mapper
+        <include refid="queryTeacherIdsByClassGroupIdSql"/>
+        UNION ALL
+        SELECT DISTINCT user_id_ FROM course_schedule_teacher_salary
+        <include refid="queryTeacherIdsByClassGroupIdSql"/>
+    </select>
+    <sql id="queryTeacherIdsByClassGroupIdSql">
+        <where>
+            <if test="classGroupId != null">
+                AND class_group_id_ = #{classGroupId}
+            </if>
+            <if test="groupType != null">
+                AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="musicGroupId != null">
+                AND music_group_id_ = #{musicGroupId}
+            </if>
+        </where>
+    </sql>
 </mapper>

+ 16 - 0
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -361,4 +361,20 @@
             AND INTE_ARRAY(e.organ_id_list_,#{organIds})
         </if>
     </select>
+
+    <select id="queryMusicGroupIdByUserId" resultType="java.lang.String">
+        SELECT DISTINCT id_ FROM music_group
+        WHERE (director_user_id_ = #{levelUserId} OR educational_teacher_id_ = #{levelUserId} OR team_teacher_id_ = #{levelUserId})
+        AND status_ IN ('PROGRESS','PAUSE')
+    </select>
+
+    <select id="queryPracticeGroupIdByUserId" resultType="java.lang.String">
+        SELECT DISTINCT id_ FROM practice_group
+        WHERE educational_teacher_id_ = #{levelUserId} AND group_status_ = 'NORMAL'
+    </select>
+
+    <select id="queryVipGroupIdByUserId" resultType="java.lang.String">
+        SELECT DISTINCT id_ FROM vip_group
+        WHERE educational_teacher_id_ = #{levelUserId} AND group_status_ IN (2,6)
+    </select>
 </mapper>

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

@@ -40,12 +40,9 @@
 		VALUES(#{id},#{userId},#{friendId},#{friendNickname},#{memo},#{tags},NOW(),NOW())
 	</insert>
 
-	<insert id="batchInsert">
+	<insert id="insertByBasicUser">
 		INSERT INTO im_user_friend (user_id_,friend_id_,friend_nickname_,tags_,memo_,create_time_,update_time_)
-		VALUES
-		<foreach collection="teachers" item="item" separator=",">
-			(#{teacherId},#{item.userId},#{item.name},#{item.subjectName},#{item.musicGroupName},NOW(),NOW())
-		</foreach>
+		VALUES (#{teacherId},#{basicUserDto.userId},#{basicUserDto.name},#{basicUserDto.subjectName},#{basicUserDto.musicGroupName},NOW(),NOW())
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -57,9 +54,6 @@
 		<if test="friendId != null">
 		friend_id_ = #{friendId},
 		</if>
-		<if test="id != null">
-		id_ = #{id},
-		</if>
 		<if test="friendNickname != null">
 		friend_nickname_ = #{friendNickname},
 		</if>
@@ -92,7 +86,7 @@
 	</select>
 	
 	<select id="query" resultMap="ImUserFriend" parameterType="map">
-		SELECT * FROM im_user_friend where user_id_ = #{userId} and friend_id_ = #{friendId}
+		SELECT * FROM im_user_friend where user_id_ = #{userId} and friend_id_ = #{friendId} LIMIT 1
 	</select>
 	
 	<select id="queryFriendListByUserId" resultMap="ImUserFriendDto" parameterType="map">

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

@@ -45,7 +45,7 @@
     
     <resultMap type="com.ym.mec.biz.dal.dto.StudentMusicGroupDto" id="StudentMusicGroupDto" extends="StudentRegistration">
     	<result column="music_group_quit_status_" property="musicGroupQuit.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="music_group_status_" property="musicGroup.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="group_status_" property="musicGroup.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="music_group_name_" property="musicGroup.name"/>
     </resultMap>
 
@@ -718,7 +718,7 @@
     </select>
     
     <select id="queryStudentMusicGroupInfo" resultMap="StudentMusicGroupDto">
-    	select sr.*,s.name_ subject_name_,mg.status_ music_group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_ 
+    	select sr.*,s.name_ subject_name_,mg.status_ group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_ 
     	from student_registration sr left join subject s on s.id_ = sr.actual_subject_id_
     	left join music_group mg on sr.music_group_id_ = mg.id_
     	left join (select mgq.* from music_group_quit mgq 

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

@@ -373,6 +373,13 @@
         </foreach>
     </select>
 
+    <select id="queryUserNameByIdList" resultType="java.util.Map">
+        select id_ `key`,IF(username_ IS NUll,real_name_,username_) `value` FROM sys_user s WHERE id_ IN
+        <foreach collection="userIds" item="userId" separator="," open="(" close=")">
+            #{userId}
+        </foreach>
+    </select>
+
     <select id="querySubjectNameByIdList" resultType="java.util.Map">
         select t.id_ `key`,GROUP_CONCAT(s.name_) `value`
         FROM teacher t

+ 1 - 1
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -12,6 +12,6 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     public void configure(HttpSecurity http) throws Exception {
         http.authorizeRequests().antMatchers("/v2/api-docs","/user/register",
                 "/group/join","/group/create","/room/leave","/room/statusSync",
-                "/room/statusImMsg","/group/batchDismiss","/private/send","/group/send","/room/statusImMsg").permitAll().anyRequest().authenticated().and().csrf().disable();
+                "/room/statusImMsg","/group/batchDismiss","/private/send","/group/send","/group/dismiss","/room/statusImMsg").permitAll().anyRequest().authenticated().and().csrf().disable();
     }
 }

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

@@ -394,8 +394,7 @@ public class ClassGroupController extends BaseController {
     @PostMapping("/spanGroupMergeClassSplitClassAffirm")
     @PreAuthorize("@pcs.hasPermissions('classGroup/spanGroupMergeClassSplitClassAffirm')")
     public HttpResponseResult spanGroupMergeClassSplitClassAffirm(@RequestBody MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws Exception {
-        classGroupService.spanGroupMergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto);
-        return succeed();
+        return classGroupService.spanGroupMergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto);
     }
 
     @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-获取所选班级最大可排课时长")
@@ -409,14 +408,6 @@ public class ClassGroupController extends BaseController {
     @PostMapping("/mergeClassSplitClassAffirm")
     @PreAuthorize("@pcs.hasPermissions('classGroup/mergeClassSplitClassAffirm')")
     public HttpResponseResult mergeClassSplitClassAffirm(@RequestBody MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws Exception {
-        return succeed(classGroupService.mergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto));
+        return classGroupService.mergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto);
     }
-
-//    @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-合并结果确认-获取新班级可排课时长")
-//    @PostMapping("/findClassCourseMinute")
-//    @PreAuthorize("@pcs.hasPermissions('classGroup/findClassCourseMinute')")
-//    public HttpResponseResult findClassCourseMinuteMap(@RequestBody List<Integer> classGroupIds){
-//        return succeed(classGroupService.findClassCourseMinuteMap(classGroupIds));
-//    }
-
 }

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -76,13 +76,6 @@ public class MusicGroupController extends BaseController {
 		return succeed(musicGroupService.findMusicGroupSubjectInfo(musicGroupId));
 	}
 
-//	@ApiOperation(value = "用户费用表,数据补全")
-//	@PostMapping("/musicGroupStudentFeePatch")
-//	public Object musicGroupStudentFeePatch(@RequestBody List<String> musicGroupIds){
-//		musicGroupService.musicGroupStudentFeePatch(musicGroupIds);
-//		return succeed();
-//	}
-
 	@ApiOperation(value = "修改乐团声部信息")
 	@PostMapping("/updateSubjectInfo")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/updateSubjectInfo')")