|
@@ -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);
|