liujc před 2 roky
rodič
revize
399f8539f6

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.common.service.BaseService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -116,6 +117,14 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
     void addSchoolStaffGroup(Long schoolId, Integer userId,String name,String avatar, ESchoolStaffType leader) throws Exception;
 
     /**
+     * 群主移交
+     * @param userId 用户id
+     * @param imGroupId     群组id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    Boolean  groupChangeOwner(Integer userId, String imGroupId) throws Exception;
+
+    /**
      * 加群
      *
      * @param musicGroupIds 群组ID

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -398,18 +398,25 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
      * @param userId 用户id
      * @param imGroupId     群组id
      */
-    private void groupChangeOwner(Integer userId, String imGroupId) throws Exception {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean groupChangeOwner(Integer userId, String imGroupId) throws Exception {
 
         String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
 
         ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
 
         ImGroupMember imGroupMember = imGroupMemberDao.getAdmin(imGroupId);
-        imPluginService.changeGroupOwner(imGroupId, userId.toString(),imGroupMember.getUserId().toString());
-        imGroupMember.setIsAdmin(false);
-        imGroupMemberDao.update(imGroupMember);
+        Integer adminId = userId;
+        if (Objects.nonNull(imGroupMember)) {
+            adminId = imGroupMember.getUserId();
+            imGroupMember.setIsAdmin(false);
+            imGroupMemberDao.update(imGroupMember);
+        }
+        imPluginService.changeGroupOwner(imGroupId, userId.toString(),adminId.toString());
 
         imGroupMemberDao.updateAdmin(imGroupId, userId);
+        return true;
     }
 
     /**

+ 6 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImSendGroupMessageServiceImpl.java

@@ -50,10 +50,12 @@ public class ImSendGroupMessageServiceImpl extends BaseServiceImpl<Long, ImSendG
 	@Transactional(rollbackFor = Exception.class)
 	public void sendGroupMessage(ImSendGroupMessage messageDto) throws Exception {
 		SysUser user = Optional.ofNullable(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("用户不存在"));
-		String[] split = messageDto.getTargetIds().split(",");
-		if(split.length > 10){
-			throw new BizException("单次目标用户(群组)不可超过10");
-		}
+        if (StringUtils.isNotBlank(messageDto.getTargetIds())) {
+            String[] split = messageDto.getTargetIds().split(",");
+            if (split.length > 10) {
+                throw new BizException("单次目标用户(群组)不可超过10");
+            }
+        }
 		messageDto.setSenderId(user.getId().toString());
 		messageDto.setOperator(user.getRealName());
 		if(Objects.isNull(messageDto.getSendTime())){

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

@@ -204,7 +204,7 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
                 SchoolStaff schoolStaff = schoolStaffs.get(0);
                 // 群组ID集合
                 List<String> imGroupIds = new ArrayList<>();
-                imGroupIds.add(musicGroupId);
+//                imGroupIds.add(musicGroupId);
                 if (CollectionUtils.isNotEmpty(classGroups)) {
                     imGroupIds.addAll(classGroups.stream().map(o -> o.getId().toString()).collect(Collectors.toList()));
                 }

+ 25 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -33,6 +33,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.text.MessageFormat;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -226,30 +229,34 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
             throw new BizException("加入群组失败");
         }
 
-        // 乐团领队添加到所有乐团群
-        List<MusicGroup> musicGroups = cooperationOrganService.musicGroupPage(schoolStaff.getSchoolId().intValue());
+         CompletableFuture.runAsync( () -> {
 
-        // 创建学校im好友
-        imUserFriendService.refreshSchoolStaffFriend(schoolStaff.getSchoolId().intValue());
-        // 创建乐团im好友
-        for (MusicGroup musicGroup : musicGroups) {
-            imUserFriendService.refreshGroupImUserFriend(musicGroup.getId(),null);
-        }
+             // 创建学校im好友
+             imUserFriendService.refreshSchoolStaffFriend(schoolStaff.getSchoolId().intValue());
+             if (schoolStaff.getUserType().equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
 
-        // id 集合
-        List<String> musicGroupIds = musicGroups.stream().map(o -> o.getId()).collect(Collectors.toList());
+                 // 乐团领队添加到所有乐团群
+                 List<MusicGroup> musicGroups = cooperationOrganService.musicGroupPage(schoolStaff.getSchoolId().intValue());
+                 // 创建班级im好友
+                 for (MusicGroup musicGroup : musicGroups) {
+                     imUserFriendService.refreshGroupImUserFriend(musicGroup.getId(),null);
+                 }
 
-        // 班级群
-        List<ClassGroup> classGroups = classGroupService.getClassGroupByMusicIds(musicGroupIds);
+                 // id 集合
+                 List<String> musicGroupIds = musicGroups.stream().map(MusicGroup::getId).collect(Collectors.toList());
 
-        // ID集合
-        List<String> classGroupIds = classGroups.stream().map(o -> o.getId().toString()).collect(Collectors.toList());
-        List<String> imGroupIds = new ArrayList<>();
-        imGroupIds.addAll(classGroupIds);
-        imGroupIds.addAll(musicGroupIds);
+                 // 班级群
+                 List<ClassGroup> classGroups = classGroupService.getClassGroupByMusicIds(musicGroupIds);
 
-        imGroupService.addImGroup(imGroupIds,user,schoolStaff.getUserType());
+                 // ID集合
+                 List<String> classGroupIds = classGroups.stream().map(o -> o.getId().toString()).collect(Collectors.toList());
+                 List<String> imGroupIds = new ArrayList<>();
+                 imGroupIds.addAll(classGroupIds);
+        //        imGroupIds.addAll(musicGroupIds);
 
+                 imGroupService.addImGroup(imGroupIds,user,schoolStaff.getUserType());
+             }
+         });
 
         // 删除缓存锁
         redissonClient.getBucket(submitLockKey).delete();

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -161,6 +161,15 @@ public class ImGroupController extends BaseController {
 		return succeed(imGroupMemberService.quit(imGroupId,userIds));
 	}
 
+    @ApiOperation(" 移交群组")
+    @PostMapping(value = "/groupChangeOwner")
+    @AuditLogAnnotation(operateName = "移交群组",interfaceURL = "imGroup/groupChangeOwner")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "integer")})
+    public Object groupChangeOwner(String imGroupId, Integer userId) throws Exception {
+        return succeed(imGroupService.groupChangeOwner(userId,imGroupId));
+    }
+
 	@ApiOperation("解散群")
 	@PostMapping(value = "/dismissGroup")
 	@AuditLogAnnotation(operateName = "解散群",interfaceURL = "imGroup/dismissGroup")

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

@@ -459,7 +459,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "学校端-学员详情")
     @PostMapping("/userDetail")
     public HttpResponseResult<StudentWrapper.StudentDetail> userDetail(@RequestBody StudentWrapper.StudentQuery queryInfo,@RequestHeader Integer coopId) {
-        if (queryInfo.getStudentId() == null || queryInfo.getMusicGroupId() == null) {
+        if (queryInfo.getStudentId() == null) {
             return failed("参数错误");
         }