Browse Source

Merge branch 'zx_saas_imGroup' of http://git.dayaedu.com/yonge/mec into dev

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
zouxuan 1 year ago
parent
commit
b4fd0ad14a

+ 1 - 1
mec-application/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -74,7 +74,7 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "班级基本信息修改")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('classGroup/update')")
-    public HttpResponseResult update(ClassGroup classGroup) throws Exception {
+    public HttpResponseResult<Integer> update(ClassGroup classGroup) throws Exception {
         classGroup.setUpdateTime(new Date());
         return succeed(classGroupService.updateClassGroup(classGroup));
     }

+ 38 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java

@@ -2,10 +2,23 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
+import io.swagger.annotations.ApiModelProperty;
 
 public class ImGroupMemberDto extends ImGroupMember {
-
 	private SysUser user = new SysUser();
+    private String type;
+    private String imUserId;
+    @ApiModelProperty(value = "群编号;")
+    private String groupId;
+    @ApiModelProperty("群成员头象")
+    private String avatar;
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
 
     public SysUser getUser() {
 		return user;
@@ -14,4 +27,28 @@ public class ImGroupMemberDto extends ImGroupMember {
 	public void setUser(SysUser user) {
 		this.user = user;
 	}
+
+    public String getImUserId() {
+        return String.valueOf(getUserId());
+    }
+
+    public void setImUserId(String imUserId) {
+        this.imUserId = imUserId;
+    }
+
+    public String getGroupId() {
+        return getImGroupId();
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java

@@ -92,7 +92,7 @@ public class ImGroupMemberWrapper {
         private String nickname;
 
         @ApiModelProperty("是否是管理员")
-        private Boolean isAdmin;
+        private Boolean isAdmin = false;
 
         @ApiModelProperty("群角色TEACHER老师、STUDENT学生")
         private String roleType;

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

@@ -596,7 +596,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     void batchUpdateLockByClassGroupIds(List<Integer> classGroupIds,int lockFlag);
 
     //修改班级基本信息
-    int updateClassGroup(ClassGroup classGroup);
+    int updateClassGroup(ClassGroup classGroup) throws Exception;
 
     /**
      * 查询班级列表

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

@@ -27,6 +27,10 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	 */
 	boolean join(String imGroupId, Integer userId, String roleType, boolean isAdmin);
 
+	void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType);
+
+	void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType);
+
 	/**
 	 * 加入群组
 	 * @param imGroupId 群编号

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.ImGroupMemberPlusService;
+import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupPlusService;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.exception.BizException;
@@ -48,6 +49,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     private ImGroupMemberPlusService imGroupMemberPlusService;
     @Resource
     private ImGroupNoticeDao imGroupNoticeDao;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
 
     /**
      * IM 用户注册
@@ -453,7 +456,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
             // 过滤出需要添加到群组的成员
             groupMembers = groupMembers.stream().filter(ImGroupMemberWrapper.ImGroupMember::getGroupJoin).collect(Collectors.toList());
-
             // 添加群成员到当前群组
             imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
             // 设置管理员

+ 10 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -168,7 +169,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CooperationOrganService cooperationOrganService;
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-
+    @Autowired
+    private ImPluginContext imPluginContext;
     @Autowired
     private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
 
@@ -260,7 +262,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             teacherIdList.add(tm.getUserId());
         }
 
-        if (teacherMapperList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(teacherMapperList)) {
             classGroupTeacherMapperService.getDao().classGroupTeachersInsert(teacherMapperList);
         }
 
@@ -285,12 +287,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             userIdList.add(Integer.parseInt(userId));
         }
-        if (classGroupStudentList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(classGroupStudentList)) {
             classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
         }
 
         // 加入IM群组
-        if (userIdList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(userIdList)) {
             addImGroup(classGroup, userIdList, teacherIdList);
         } else {
             MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
@@ -304,7 +306,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if (musicGroup.getTransactionTeacherId() != null) {
                 userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
             }
-            if (teacherIdList != null && teacherIdList.size() > 0) {
+            if (CollectionUtils.isNotEmpty(teacherIdList)) {
                 for (Integer teacherId : teacherIdList) {
                     userRoleMap.put(teacherId, "指导老师");
                 }
@@ -3590,7 +3592,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateClassGroup(ClassGroup classGroup) {
+    public int updateClassGroup(ClassGroup classGroup) throws Exception {
         ClassGroup group = classGroupDao.get(classGroup.getId());
         if (Objects.isNull(group)) {
             throw new BizException("班级信息不存在");
@@ -3604,6 +3606,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (!Objects.isNull(imGroup)) {
             imGroup.setName(groupName);
             imGroupService.update(imGroup);
+            imPluginContext.getPluginService().modifyGroupInfo(imGroup.getId(),imGroup.getName(),imGroup.getImg());
         }
         return 1;
     }
@@ -3948,7 +3951,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             userRoleMap.put(userId, "");
         }
 
-        if (teacherIdList != null && teacherIdList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(teacherIdList)) {
             for (Integer teacherId : teacherIdList) {
                 userRoleMap.put(teacherId, "指导老师");
             }

+ 40 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
@@ -152,13 +153,18 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setCreateTime(date);
 		imGroupMember.setImGroupId(imGroupId);
 		imGroupMember.setIsAdmin(isAdmin);
+		SysUser user = teacherDao.getUser(userId);
 		imGroupMember.setRoleType(roleType);
+		if(StringUtils.isNotEmpty(roleType)){
+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+			imGroupMember.setNickname(user.getRealName());
+		}else {
+			imGroupMember.setNickname(user.getUsername());
+		}
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(userId);
 		//初始化群主数据
 		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
-		SysUser user = teacherDao.getUser(userId);
-        imGroupMember.setNickname(sysUserService.getImName(user));
 
 		imGroupMemberDao.insert(imGroupMember);
 
@@ -197,6 +203,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return true;
 	}
 
+	@Override
 	public void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType){
 		try {
 			List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupMember.getImGroupId());
@@ -253,6 +260,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		}
 	}
 
+	@Override
 	public void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType){
 		if (CollectionUtils.isEmpty(imGroupMembers)) {
 			return;
@@ -333,8 +341,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			return true;
 		}
 		//检查用户是否已存在
-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), user.getId().toString());
-		if(imGroupMemberList != null && imGroupMemberList.size() > 0){
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, user.getId().toString());
+		if(CollectionUtils.isNotEmpty(imGroupMemberList)){
 			return true;
 		}
 
@@ -345,17 +353,22 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setImGroupId(imGroupId);
 		imGroupMember.setIsAdmin(isAdmin);
 		imGroupMember.setRoleType(roleType);
+		if(StringUtils.isNotEmpty(roleType)){
+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+			imGroupMember.setNickname(user.getRealName());
+		}else {
+			imGroupMember.setNickname(user.getUsername());
+		}
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(user.getId());
 		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
-        imGroupMember.setNickname(sysUserService.getImName(user));
 		imGroupMemberDao.insert(imGroupMember);
 
 		imGroup.setMemberNum(1);
 		imGroup.setUpdateTime(date);
 		imGroupDao.update(imGroup);
 
-		String groupId = imGroup.getId().toString();
+		String groupId = imGroup.getId();
 
 		if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
 			// 融云IM用户加群
@@ -443,13 +456,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		}
 
 
-		if (imGroupMemberList.size() > 0) {
+		if (CollectionUtils.isNotEmpty(imGroupMemberList)) {
 			Map<Integer, String> usernameMap = new HashMap<>();
 			Map<Integer, String> realNameMap = new HashMap<>();
-			if(usernameIds.size() > 0){
+			if(CollectionUtils.isNotEmpty(usernameIds)){
 				usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds));
 			}
-			if(realNameIds.size() > 0){
+			if(CollectionUtils.isNotEmpty(realNameIds)){
 				realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds));
 			}
 			for (ImGroupMember imGroupMember : imGroupMemberList) {
@@ -561,17 +574,28 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
 				.collect(Collectors.joining(",")));
 
-		if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
+		if (CollectionUtils.isEmpty(imGroupMemberList)) {
 			throw new BizException("更新失败:找不到用户信息");
 		}
-
 		Date date = new Date();
-		for (ImGroupMember imGroupMember : imGroupMemberList) {
-			imGroupMember.setRoleType(roleType);
-			imGroupMember.setUpdateTime(date);
+		ImGroupMember imGroupMember = imGroupMemberList.get(0);
+		imGroupMember.setGroupRoleType(null);
+		imGroupMember.setRoleType(roleType);
+		imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+		imGroupMember.setUpdateTime(date);
+		ImGroup group = imGroupDao.get(imGroupId);
+		if(!imGroupMember.getIsAdmin()){
+			this.initImGroupMembers(imGroupMemberList,group.getGroupType());
+			if(imGroupMember.getIsAdmin()){
+				try {
+					imPluginContext.getPluginService().changeGroupOwner(imGroupId,imGroupMember.getUserId().toString(),null);
+				} catch (Exception e) {
+					log.error(e.getMessage());
+					throw new BizException("更新失败:设置群主异常");
+				}
+			}
 		}
-		imGroupMemberDao.batchUpdate(imGroupMemberList);
-
+		imGroupMemberDao.update(imGroupMember);
 		return true;
 	}
 

+ 14 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -189,7 +189,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
     private String createImGroup(ImGroup imGroup, Integer userId, String roleType) throws Exception {
         ImGroupWrapper.ImGroup group = ImGroupWrapper.ImGroup.from(JSON.toJSONString(imGroup));
-
         //记录群成员
         com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember groupMember = null;
         if (userId != null) {
@@ -198,12 +197,15 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     .builder()
                     .userId(userId.longValue())
                     .clientType("")
+                    .isAdmin(false)
                     .avatar(sysUserService.getImAvatar(sysUser))
                     .nickname(sysUserService.getImName(sysUser))
                     .roleType(roleType)
                     .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
-                    .isAdmin(true)
                     .build();
+            if(StringUtils.equals(roleType,"乐团领队")){
+                groupMember.setIsAdmin(true);
+            }
         }
         return imGroupCoreService.groupCreate(groupMember, group);
     }
@@ -246,7 +248,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         if(currentUserId != null){
             groupMemberList.get(0).setRoleType("乐团主管");
         }
-
+        imGroupMemberService.initImGroupMembers(groupMemberList,imGroup.getGroupType());
         addImGroupMember(groupId, groupMemberList);
         return groupId;
     }
@@ -261,7 +263,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     .userId(groupMember.getUserId().longValue())
                     .avatar(sysUserService.getImAvatar(user))
                     .nickname(sysUserService.getImName(user))
-                    .isAdmin(StringUtils.isNotEmpty(groupMember.getRoleType()))
+                    .isAdmin(groupMember.getIsAdmin())
                     .groupRoleType(groupMember.getGroupRoleType())
                     .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
                     .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
@@ -670,7 +672,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             groupMember.setImUserIdFormat(false);
         }
 
-
+        imGroupMemberService.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
         addImGroupMember(imGroup.getId(), imGroupMemberList);
         updateImGroupUserNumber(imGroup.getId());
     }
@@ -775,7 +777,12 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 imGroupMember.setUserId(userId.intValue());
                 imGroupMember.setIsAdmin(false);
                 imGroupMember.setRoleType(roleType);
-                imGroupMember.setNickname(sysUserService.getImName(user));
+                if(StringUtils.isNotEmpty(roleType)){
+                    imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+                    imGroupMember.setNickname(user.getRealName());
+                }else {
+                    imGroupMember.setNickname(user.getUsername());
+                }
                 imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
                 imGroupMember.setTenantId(imGroup.getTenantId());
                 imGroupMemberDao.insert(imGroupMember);
@@ -1926,6 +1933,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         ImGroupWrapper.ConfigJson from = ImGroupWrapper.ConfigJson.from(imGroup.getConfigJson());
         from.setMute(groupMute.getMuteAll());
         imGroup.setConfigJson(JSON.toJSONString(from));
+        imGroup.setMemberNum(0);
         imGroupService.update(imGroup);
 
         // 调用IM接口