Prechádzať zdrojové kódy

群主转让、群注销

zouxuan 1 rok pred
rodič
commit
7622434c8e

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -72,6 +72,16 @@ public class ImGroupMember extends BaseEntity {
 	@Getter
 	private java.util.Date updateTime;
 
+	private ImGroup.GroupTypeEnum groupType;
+
+	public ImGroup.GroupTypeEnum getGroupType() {
+		return groupType;
+	}
+
+	public void setGroupType(ImGroup.GroupTypeEnum groupType) {
+		this.groupType = groupType;
+	}
+
 	public void setId(Long id) {
 		this.id = id;
 	}
@@ -109,9 +119,6 @@ public class ImGroupMember extends BaseEntity {
 
 	public void setRoleType(String roleType) {
 		this.roleType = roleType;
-		if(StringUtils.equals(roleType,"乐团主管")){
-			setIsAdmin(true);
-		}
 		if(StringUtils.isEmpty(this.groupRoleType)){
 			this.groupRoleType = StringUtils.isEmpty(roleType)?EImGroupRoleType.Member.getCode():EImGroupRoleType.Admin.getCode();
 		}

+ 4 - 24
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 群编号
@@ -53,14 +57,6 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	boolean quit(String imGroupId, Integer userId);
 
 	/**
-	 * 退出指定群组
-	 * @param imGroupIdList 群组编号列表
-	 * @param userId 用户编号
-	 * @return
-	 */
-	boolean quit(List<String> imGroupIdList, Integer userId);
-
-	/**
 	 * 用户批量退出群组
 	 * @param imGroupId 群组编号
 	 * @param userIdList 学生编号
@@ -80,29 +76,13 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	void batchInsert(List<ImGroupMember> imGroupMemberList);
 
 	/**
-	 * 批量删除
-	 * @param imGroupMemberList
-	 */
-	void batchDelete(List<ImGroupMember> imGroupMemberList);
-
-	/**
 	 * 根据群编号和用户编号批量删除
 	 * @param imGroupMemberList
 	 */
 	void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList);
 
-	/**
-	 * 是否在群里
-	 * @param groupId
-	 * @param userId
-	 * @return
-	 */
-	boolean isExit(String groupId, String userId);
-
 	void delRepeat();
 
-	List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId);
-
 	PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo);
 
 	void batchJoin(String imGroupId, String userId, String roleType);

+ 0 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -563,13 +563,6 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                     for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
 
                         try {
-                            // 获取用户头象
-//                            List<Integer> collect1 = entry.getValue().stream()
-//                                .map(x -> x.getUserId().intValue()).distinct().collect(Collectors.toList());
-//
-//                            Map<Integer, String> avatarMap = teacherDao.getUsersSimpleInfo(collect1).stream()
-//                                .collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getAvatar, (o, n) -> n));
-
                             // 设置用户默认头象
                             for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
 //                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));

+ 126 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -26,12 +26,13 @@ import com.ym.mec.im.entity.GroupMember;
 import com.ym.mec.im.entity.GroupModel;
 import com.ym.mec.util.collection.MapUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
@@ -39,34 +40,33 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
-	@Autowired
+	@Resource
 	private ImGroupMemberDao imGroupMemberDao;
-	@Autowired
+	@Resource
 	private ImGroupDao imGroupDao;
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
-	@Autowired
+	@Resource
 	private TeacherDao teacherDao;
-	@Autowired
+	@Resource
 	private ClassGroupDao classGroupDao;
-	@Autowired
+	@Resource
 	private MusicGroupDao musicGroupDao;
-	@Autowired
+	@Resource
 	private PracticeGroupDao practiceGroupDao;
-	@Autowired
+	@Resource
 	private VipGroupDao vipGroupDao;
-	@Autowired
+	@Resource
 	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-	@Autowired
+	@Resource
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-	@Autowired
+	@Resource
 	private ImFeignService imFeignService;
-	@Autowired
+	@Resource
 	private ImGroupCoreService imGroupCoreService;
-	@Autowired
+	@Resource
 	private ImPluginContext imPluginContext;
-
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
 	@Override
 	public BaseDAO<Long, ImGroupMember> getDAO() {
@@ -119,7 +119,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			}
 			tags = vipGroup.getName();
 		}
-		ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags,
+		imGroupService.create(imGroupId, null, classGroup.getName(), tags,
 				tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
 		if(userId != null){
 			join(imGroupId,userId,roleType,isAdmin);
@@ -148,14 +148,16 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 		ImGroupMember imGroupMember = new ImGroupMember();
 		Date date = new Date();
-
+		imGroupMember.setGroupType(imGroup.getGroupType());
 		imGroupMember.setCreateTime(date);
 		imGroupMember.setImGroupId(imGroupId);
 		imGroupMember.setIsAdmin(isAdmin);
 		imGroupMember.setRoleType(roleType);
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(userId);
-        SysUser user = teacherDao.getUser(userId);
+		//初始化群主数据
+		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
+		SysUser user = teacherDao.getUser(userId);
         imGroupMember.setNickname(sysUserService.getImName(user));
 
 		imGroupMemberDao.insert(imGroupMember);
@@ -195,6 +197,105 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	}
 
 	@Override
+	public void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType){
+		//是否有群主
+		if(!imGroupMember.getIsAdmin()){
+			ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupMember.getImGroupId());
+			if(Objects.nonNull(admin)){
+				return;
+			}
+			switch (groupType) {
+				case NORMAL:
+				case MIX:
+				case HIGH:
+				case SNAP:
+				case HIGH_ONLINE:
+				case MUSIC_NETWORK:
+				case PARENT_MEETING:
+					if("乐团主管".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case VIP:
+				case DEMO:
+				case PRACTICE:
+				case COMM:
+				case REPERTOIRE_PLAY:
+				case LIVE:
+					if("指导老师".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case TRAINING:
+					if("分部经理".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case SCHOOL:
+					if("乐团领队".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+			}
+		}
+	}
+
+	@Override
+	public void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType){
+		if (CollectionUtils.isEmpty(imGroupMembers)) {
+			return;
+		}
+		//是否有群主
+		long count = imGroupMembers.stream().map(e -> e.getIsAdmin()).count();
+		if(count > 0){
+			return;
+		}
+		ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupMembers.get(0).getImGroupId());
+		if(Objects.nonNull(admin)){
+			return;
+		}
+		for (ImGroupMember imGroupMember : imGroupMembers) {
+			switch (groupType) {
+				case NORMAL:
+				case MIX:
+				case HIGH:
+				case SNAP:
+				case HIGH_ONLINE:
+				case MUSIC_NETWORK:
+				case PARENT_MEETING:
+					if("乐团主管".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case VIP:
+				case DEMO:
+				case PRACTICE:
+				case COMM:
+				case REPERTOIRE_PLAY:
+				case LIVE:
+					if("指导老师".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case TRAINING:
+					if("分部经理".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case SCHOOL:
+					if("乐团领队".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+			}
+		}
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) {
 		if (imGroup == null) {
@@ -219,13 +320,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setRoleType(roleType);
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(user.getId());
-//		if (StringUtils.isBlank(roleType)) {
-//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
-//		} else {
-//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
-//		}
-
-
+		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
         imGroupMember.setNickname(sysUserService.getImName(user));
 		imGroupMemberDao.insert(imGroupMember);
 
@@ -335,6 +430,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 					imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
 				}
 			}
+			this.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
 			imGroupMemberDao.batchInsert(imGroupMemberList);
 			imGroup.setMemberNum(imGroupMemberList.size());
 			imGroup.setUpdateTime(date);
@@ -381,15 +477,6 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean quit(List<String> imGroupIdList, Integer userId) {
-		for (String imGroupId : imGroupIdList) {
-			quit(imGroupId, userId);
-		}
-		return true;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
 	public boolean quit(String imGroupId, List<Integer> userIdList) {
 
 		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
@@ -467,31 +554,18 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMemberDao.batchInsert(imGroupMemberList);
 	}
 
-	@Override
-	public void batchDelete(List<ImGroupMember> imGroupMemberList) {
-		imGroupMemberDao.batchDelete(imGroupMemberList);
-	}
 
 	@Override
 	public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
 		imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
 	}
 
-	@Override
-	public boolean isExit(String groupId, String userId) {
-		return imGroupMemberDao.isExit(groupId,userId);
-	}
 
 	@Override
 	public void delRepeat() {
 		imGroupMemberDao.delRepeat();
 	}
 
-	@Override
-	public List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId) {
-		return imGroupMemberDao.queryMembers(groupId, userIdList, tenantId);
-	}
-
     @Override
     public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
 		PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
@@ -555,6 +629,10 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 					try {
 						ImPluginService pluginService = imPluginContext.getPluginService();
 						switch (member.getGroupRoleType()) {
+							case Owner:
+								// 设置群主
+								pluginService.changeGroupOwner(member.getGroupId(), item,null);
+								break;
 							case Admin:
 								// 设置管理员
 								pluginService.groupAdminCreate(member.getGroupId(), item);