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

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

zouxuan 4 лет назад
Родитель
Сommit
80d2f9c783

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -240,6 +240,14 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param userId
      * @return
      */
+    List<ImGroupModel> queryQuitApplyGroups(@Param("userId") Integer userId);
+
+    /**
+     * 获取员工关联的预报名的群聊
+     *
+     * @param userId
+     * @return
+     */
     List<ImGroupModel> queryApplyGroups(@Param("transferUserId") Integer transferUserId, @Param("userId") Integer userId, @Param("organId") Integer organId);
 
     /**

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

@@ -32,4 +32,6 @@ public interface ImGroupDao extends BaseDAO<Long, ImGroup> {
     int updateNickname(@Param("userId") Integer userId, @Param("nickName") String nickName);
 
 	int updateUserFriendNickname(@Param("userId") Integer userId, @Param("nickName") String nickName);
+
+    void updateMemberNum();
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.apache.ibatis.annotations.Param;
 
@@ -18,4 +20,7 @@ public interface ImGroupMemberDao extends BaseDAO<Long, ImGroupMember> {
 	int batchUpdate(List<ImGroupMember> imGroupMemberList);
 	
 	int batchInsert(List<ImGroupMember> imGroupMemberList);
+
+	void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList);
+
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import com.ym.mec.biz.dal.entity.ImGroupMember;
 import com.ym.mec.common.service.BaseService;
@@ -59,4 +60,18 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	 */
 	boolean updateRoleType(Long imGroupId, Integer userId, String roleType);
 
+	void batchInsert(List<ImGroupMember> imGroupMemberList);
+
+	/**
+	 * 批量删除
+	 * @param imGroupMemberList
+	 */
+	void batchDelete(List<ImGroupMember> imGroupMemberList);
+
+	/**
+	 * 根据群编号和用户编号批量删除
+	 * @param imGroupMemberList
+	 */
+	void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList);
+
 }

+ 62 - 31
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -3,11 +3,14 @@ package com.ym.mec.biz.service.impl;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.service.ImGroupService;
 import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.im.entity.GroupMember;
+import com.ym.mec.im.entity.GroupModel;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -41,7 +44,7 @@ import org.springframework.util.CollectionUtils;
 
 @Service
 public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
-	
+
 	@Autowired
 	private EmployeeDao employeeDao;
 	@Autowired
@@ -258,10 +261,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	public void level(List<EmployeeLevelDto> employeeLevelDtos) {
 		Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
 		List<ImGroupModel> educationGroupModels = new ArrayList<>();
-		List<ImGroupModel> teamGroupModels = new ArrayList<>();
-		List<ImGroupModel> directorGroupModels = new ArrayList<>();
+//		List<ImGroupModel> teamGroupModels = new ArrayList<>();
+//		List<ImGroupModel> directorGroupModels = new ArrayList<>();
 		//获取用户需要加入的预报名群聊
-		List<ImGroupModel> applyGroupModels = new ArrayList<>();
+//		List<ImGroupModel> applyGroupModels = new ArrayList<>();
 		//获取用户担任教务老师的所有乐团列表
 		List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
 		//获取用户担任教务老师的所有网管课列表
@@ -271,6 +274,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		//获取用户需要加入的群组列表
 		Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
 		Set<String> roleNames = collect.keySet();
+		Set<Integer> userIds = new HashSet<>();
 		for (String roleName : roleNames) {
 			List<EmployeeLevelDto> levelDtos = collect.get(roleName);
 			Map<Integer, List<EmployeeLevelDto>> organIdMap = levelDtos.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
@@ -281,8 +285,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 					if(employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()){
 						throw new BizException("交接人校验失败,请重新填写");
 					}
+					userIds.add(employeeLevelDto.getTransferUserId());
 					//获取关联的预报名的群聊
-					applyGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+					educationGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 					switch (roleName){
 						case "education":
 							//替换当前分部合作单位关联的乐团主管
@@ -292,31 +297,44 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 							break;
 						case "teamTeacher":
 							//运营主管所需加入的群组
-							teamGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+							educationGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 							break;
 						case "director":
 							//乐队指导所需加入的群组
-							directorGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
+							educationGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 							break;
 					}
 				}
 			}
 		}
-
-		//预报名群
-		if(applyGroupModels.size() > 0){
+		Date date = new Date();
+//		educationGroupModels.addAll(applyGroupModels);
+//		educationGroupModels.addAll(educationGroupModels);
+//		educationGroupModels.addAll(teamGroupModels);
+		if(educationGroupModels.size() > 0){
+			Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
 			//❤️用户加群
-			for (ImGroupModel imGroupModel : applyGroupModels) {
-				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
-				
-				List<ImGroupMember> memberList = imGroupModel.getMemberList();
-				for(ImGroupMember member : memberList){
-					userRoleMap.put(Integer.parseInt(member.getId()), imGroupModel.getUserRole());
-				}
-				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
+			List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+			List<GroupModel> groupModelList = new ArrayList<>();
+			for (ImGroupModel imGroupModel : educationGroupModels) {
+				com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+				imGroupMember.setCreateTime(date);
+				imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
+				imGroupMember.setIsAdmin(false);
+				imGroupMember.setRoleType(imGroupModel.getUserRole());
+				imGroupMember.setUpdateTime(date);
+				imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
+				imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
+				imGroupMemberList.add(imGroupMember);
+
+				GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
+				GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[] { groupMember }, imGroupModel.getName());
+				groupModelList.add(groupModel);
 			}
+			imGroupMemberService.batchInsert(imGroupMemberList);
+			imFeignService.groupBatchJoin(groupModelList);
 		}
-		if(educationGroupModels.size() > 0){
+		/*if(educationGroupModels.size() > 0){
 			//❤️用户加群
 			for (ImGroupModel imGroupModel : educationGroupModels) {
 				Map<Integer,String> userRoleMap = new HashMap<>();
@@ -332,7 +350,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			//❤️用户加群
 			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()), "运营主管");
@@ -344,31 +362,42 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			//❤️用户加群
 			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);
 			}
-		}
+		}*/
 		//原有员工退群
 		List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
-		if(groupModels.size() > 0){
+		/*if(groupModels.size() > 0){
+
 			List<Long> imGroupIdList = new ArrayList<Long>();
 			for (ImGroupModel imGroupModel : groupModels) {
 				imGroupIdList.add(Long.parseLong(imGroupModel.getId()));
 			}
 			imGroupMemberService.quit(imGroupIdList, levelUserId);
-		}
+		}*/
 		//原有员工退预报名群
-		List<ImGroupModel> imGroupModels = classGroupDao.queryApplyGroups(levelUserId, levelUserId, null);
-		if(imGroupModels.size() > 0){
-			List<Long> imGroupIdList = new ArrayList<Long>();
-			for (ImGroupModel imGroupModel : imGroupModels) {
-				imGroupIdList.add(Long.parseLong(imGroupModel.getId()));
+		groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
+//		groupModels.addAll(imGroupModels);
+		if(groupModels.size() > 0){
+			List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+			List<GroupModel> groupModelList = new ArrayList<>();
+			for (ImGroupModel imGroupModel : groupModels) {
+				com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+				imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
+				imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
+				imGroupMemberList.add(imGroupMember);
+
+				GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
+				GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[] { groupMember }, imGroupModel.getName());
+				groupModelList.add(groupModel);
 			}
-			imGroupMemberService.quit(imGroupIdList, levelUserId);
+			imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
+			imFeignService.groupBatchQuit(groupModelList);
 		}
 		//更换教务老师等数据
 		employeeDao.employeeLevel(employeeLevelDtos);
@@ -391,6 +420,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
 			}
 		}
+		//更新群成员数量
+		imGroupDao.updateMemberNum();
 	}
 
 	@Override

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -4,10 +4,13 @@ import java.util.*;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.common.entity.ImGroupModel;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -298,4 +301,19 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return true;
 	}
 
+	@Override
+	public void batchInsert(List<ImGroupMember> imGroupMemberList) {
+		imGroupMemberDao.batchInsert(imGroupMemberList);
+	}
+
+	@Override
+	public void batchDelete(List<ImGroupMember> imGroupMemberList) {
+		imGroupMemberDao.batchDelete(imGroupMemberList);
+	}
+
+	@Override
+	public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
+		imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
+	}
+
 }

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

@@ -519,20 +519,30 @@
         GROUP BY cg.id_
     </select>
 
+    <select id="queryQuitApplyGroups" resultMap="imGroupModel">
+        SELECT mg.id_,ig.name_,#{userId} user_id_
+        FROM music_group mg
+        LEFT JOIN im_group ig ON ig.id_ = mg.id_
+        LEFT JOIN im_group_member igm ON igm.im_group_id_ = ig.id_
+        WHERE LENGTH(mg.id_) > 10 AND (mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId})
+        AND ig.id_ IS NOT NULL AND mg.del_flag_ = 0 AND igm.user_id_ = #{userId}
+    </select>
     <select id="queryApplyGroups" resultMap="imGroupModel">
         SELECT mg.id_,ig.name_,#{transferUserId} user_id_,
         CASE WHEN mg.educational_teacher_id_ = #{userId} THEN '乐团主管' WHEN mg.team_teacher_id_ = #{userId} THEN '运营主管' ELSE '乐队指导' END user_role_
         FROM music_group mg
         LEFT JOIN im_group ig ON ig.id_ = mg.id_
+        LEFT JOIN im_group_member igm ON igm.im_group_id_ = ig.id_ AND igm.user_id_ = #{transferUserId}
         WHERE LENGTH(mg.id_) > 10 AND (mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId})
-        AND ig.id_ IS NOT NULL
+        AND ig.id_ IS NOT NULL AND igm.id_ IS NULL AND mg.del_flag_ = 0
         <if test="organId != null">
             AND mg.organ_id_ = #{organId}
         </if>
     </select>
 
     <select id="queryEducationGroups" resultMap="imGroupModel">
-        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,#{transferUserId} user_id_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,#{transferUserId} user_id_,
+        '乐团主管' user_role_
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group cg ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
@@ -547,7 +557,7 @@
 
     <select id="queryTeamTeacherGroups" resultMap="imGroupModel">
         SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,
-               #{transferUserId} user_id_
+               #{transferUserId} user_id_,'运营主管' user_role_
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group cg ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
@@ -556,7 +566,7 @@
     </select>
 
     <select id="queryDirectorGroups" resultMap="imGroupModel">
-        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,#{transferUserId} user_id_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,#{transferUserId} user_id_,'乐队指导' user_role_
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group cg ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'

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

@@ -98,6 +98,12 @@
 	<update id="updateUserFriendNickname">
 		UPDATE im_user_friend SET friend_nickname_ = #{nickName} WHERE friend_id_ = #{userId};
 	</update>
+	<update id="updateMemberNum">
+		UPDATE im_group ig
+		LEFT JOIN (SELECT COUNT(id_) num_,im_group_id_ FROM im_group_member GROUP BY im_group_id_) igm ON ig.id_ = igm.im_group_id_
+		SET member_num_ = igm.num_
+		WHERE ig.id_ = igm.im_group_id_
+	</update>
 
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >

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

@@ -112,7 +112,12 @@
             #{item.id}
         </foreach>
 	</delete>
-	
+	<delete id="batchDeleteByGroupIdAndUserId">
+		<foreach collection="list" item="item" separator=";">
+			DELETE FROM im_group_member WHERE im_group_id_ = #{item.imGroupId} AND user_id_ = #{item.userId}
+		</foreach>
+	</delete>
+
 	<select id="queryByImGroupIdAndUserId" resultMap="ImGroupMember" parameterType="map">
 		SELECT * FROM im_group_member where find_in_set(im_group_id_,#{imGroupIdList}) and find_in_set(user_id_,#{userIdList})
 	</select>

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

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