zouxuan 4 年之前
父節點
當前提交
d4668326a1

+ 3 - 1
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>> querySubjectNameByIdList(@Param("userIds") List<Integer> userIds);
+
     /**
      * 根据用户编号列表获取手机号
      *
@@ -344,7 +346,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @param studentId
      * @return
      */
-    Set<Integer> findMusicTeacherIds(Integer studentId);
+    Set<Integer> findMusicTeacherIds(@Param("studentId") Integer studentId);
 
     /**
      * 获取和学员相关的VIP老师列表

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

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
@@ -533,7 +534,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mergeClassSplitClassAffirmDto
      * @return
      */
-    void spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
+    String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
 
     /**
      * 跨团合班缴费项目审核通过后
@@ -544,4 +545,12 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map<String,
             String>> classGroupStudents,List<Long> allLockCourseIds,String batchNo,BigDecimal masterTotalPrice);
+
+    /**
+     * 班级新增学员后相关通讯录的修改
+     * @param classGroupId
+     * @param studentId
+     * @param groupType
+     */
+    void classGroupAddStudent(Integer classGroupId,Integer studentId,GroupType groupType);
 }

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

@@ -32,6 +32,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 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;
@@ -135,6 +136,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ImGroupService imGroupService;
     @Autowired
+    private ImUserFriendService imUserFriendService;
+    @Autowired
     private CourseScheduleService courseScheduleService;
     @Autowired
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
@@ -3699,7 +3702,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
+    public String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         //缴费项目
         MusicGroupPaymentCalenderDto paymentCalenderDto = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos().get(0);
@@ -3785,11 +3788,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (paymentCalenderDto.getStatus() != AUDITING) {
             List<Map<String,String>> classGroupStudents1 = (List<Map<String,String>>)JSON.parse(musicGroupStudentClassAdjust.getClassGroupStudents());
             spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents1,allLockCourseIds,paymentCalenderDto.getBatchNo(),masterTotalPrice);
+            return "操作成功:学员班级调整完成";
         }else {
 //                冻结班级
             classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
 //                冻结所选班级的课程
             courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
+            return "操作成功:学员班级调整申请已提交,缴费项目审核中";
         }
     }
 
@@ -3804,7 +3809,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //将学员加进班级未开始的课程,以及班级关联、加群
         classGroupStudentMapperService.updateClassGroupStudents1(masterClassGroupId.longValue(),studentIds,allLockCourseIds,batchNo,masterTotalPrice);
         //删除学员课程
-        courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
+        if(courseIds.size() > 0){
+            courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
+        }
         //删除班级关联的学员
         List<Integer> classGroupIds = new ArrayList<>();
         if (classGroupStudents != null && classGroupStudents.size() > 0) {
@@ -3832,4 +3839,88 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
         }
     }
+
+    @Override
+    public void classGroupAddStudent(Integer classGroupId, Integer studentId,GroupType groupType) {
+        //获取相关课程,班级老师列表
+        Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(studentId);
+        //获取学员所在乐团列表
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(studentId);
+        if (musicGroupIds != null && musicGroupIds.size() > 0) {
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+            musicGroups.forEach(e -> {
+                teacherIds.add(e.getDirectorUserId());
+                teacherIds.add(e.getEducationalTeacherId());
+                teacherIds.add(e.getTeamTeacherId());
+            });
+        }
+        //获取相关vip课老师列表
+        teacherIds.addAll(teacherDao.findVipTeacherIds(studentId));
+        //获取陪练课老师列表
+        teacherIds.addAll(teacherDao.findPracticeTeacherIds(studentId));
+        //获取对外课程老师列表
+        teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(studentId));
+        //获取陪练课课程教务老师
+        teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(studentId));
+        //获取VIP课程教务老师
+        teacherIds.addAll(teacherDao.findVipEducationalTeacherId(studentId));
+        //获取对外课程务老师
+        teacherIds.addAll(teacherDao.findCommEducationalTeacherId(studentId));
+        //获取关联的指导老师
+        Student student = studentDao.get(studentId);
+        if (student != null && student.getTeacherId() != null) {
+            teacherIds.add(student.getTeacherId());
+        }
+        if (teacherIds.size() > 0) {
+//            return teacherDao.queryTeacherBaseInfo(teacherIds, search);
+        }
+        ClassGroup classGroup = classGroupDao.get(classGroupId);
+        List<ImUserFriend> imUserFriends = new ArrayList<>();
+        List<ImUserFriend> teacherUserFriends = new ArrayList<>();
+        //获取班级关联的老师
+        List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
+        //学员好友编号列表
+        Set<Integer> studentFriendIds = new HashSet<>();
+        switch (groupType){
+        case MUSIC:
+            ////学员关联乐团管理人员通讯录
+            MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+            teacherIds.add(musicGroup.getDirectorUserId());
+            teacherIds.add(musicGroup.getEducationalTeacherId());
+            teacherIds.add(musicGroup.getTeamTeacherId());
+            //学员关联的班级上的老师
+            teacherIds.addAll(classGroupTeacherMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
+            //获取通讯录名称
+            Map<Integer, String> nameIdMap=MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(teacherIds)));
+            //获取老师声部
+            Map<Integer, String> subjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
+
+            for (Integer teacherId : teacherIds) {
+                ImUserFriend imUserFriend = new ImUserFriend();
+                imUserFriend.setUserId(studentId);
+                imUserFriend.setFriendId(teacherId);
+                imUserFriend.setFriendNickname(nameIdMap.get(teacherId));
+                imUserFriend.setMemo(musicGroup.getName());
+                imUserFriend.setTags(subjectNameMap.get(teacherId));
+                imUserFriends.add(imUserFriend);
+
+                ImUserFriend imUserFriend1 = new ImUserFriend();
+                imUserFriend1.setUserId(studentId);
+                imUserFriend1.setFriendId(teacherId);
+                imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
+                imUserFriend1.setMemo(musicGroup.getName());
+                imUserFriend1.setTags(subjectNameMap.get(teacherId));
+                imUserFriends.add(imUserFriend1);
+
+//            imUserFriendService.batchInsert();
+            }
+            //乐团管理人员关联学员
+            break;
+        case VIP:
+            break;
+        case COMM:
+            break;
+        default:
+        }
+    }
 }

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

@@ -793,6 +793,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if(oldMusicGroupId == newMusicGroupId){
                 continue;
             }
+            courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(oldMusicGroupId),null, GroupType.MUSIC);
             //记录课程余额消费日志
             if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d && masterTotalPrice.doubleValue() > 0d){
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();

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

@@ -117,7 +117,8 @@
 	</select>
 	
 	<select id="queryMemberById" resultMap="ImGroupMemberDto">
-		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_ FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
+		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_
+		FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
 		where igm.im_group_id_ = #{imGroupId}
 	</select>
 	

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

@@ -364,15 +364,26 @@
         GROUP BY su.id_,s.id_,sr.id_
     </select>
     <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
-        select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
+        select id_ `key`,IF(real_name_ IS NUll,username_,real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
     </select>
     <select id="queryNameByIdList" resultType="java.util.Map">
-        select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE id_ IN
+        select id_ `key`,IF(real_name_ IS NUll,username_,real_name_) `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
+        LEFT JOIN subject s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE t.id_ IN
+        <foreach collection="userIds" item="userId" separator="," open="(" close=")">
+            #{userId}
+        </foreach>
+        GROUP BY t.id_
+    </select>
+
     <select id="queryPhoneByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,phone_ `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds}) AND s.phone_ IS NOT NULL
     </select>