Ver código fonte

代码合并

zouxuan 1 ano atrás
pai
commit
7218fec8bb

+ 6 - 1
mec-application/src/main/java/com/ym/mec/config/AppBeanNameGenerator.java

@@ -88,6 +88,11 @@ public class AppBeanNameGenerator implements BeanNameGenerator {
         String decapitalizetalize = Introspector.decapitalize(shortClassName);
         log.info("beanClassName:{}, shortClassName={}, decapitalizetalize={}", beanClassName, shortClassName, decapitalizetalize);
 
-        return beanClassName;
+        // 正则匹配路beanClassName包含controller
+        if (beanClassName.matches(".*controller.*") || beanClassName.matches(".*task.*") || shortClassName.endsWith("Controller")) {
+            return beanClassName;
+        }
+        // 返回小写首字母
+        return decapitalizetalize;
     }
 }

+ 5 - 36
mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -5,32 +5,11 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.entity.AppVersionInfo;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.MemberRankSetting;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.SysSuggestion;
-import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
-import com.ym.mec.biz.service.AppVersionInfoService;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ImGroupNoticeService;
-import com.ym.mec.biz.service.MemberRankPrivilegesService;
-import com.ym.mec.biz.service.MemberRankSettingService;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.StudentManageService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SubjectService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysSuggestionService;
-import com.ym.mec.biz.service.SysUserBankCardService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.biz.service.UploadFileService;
-import com.ym.mec.biz.service.ImGroupCoreService;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.UploadReturnBean;
@@ -39,24 +18,14 @@ import com.ym.mec.thirdparty.entity.UploadSign;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.mec.util.upload.UploadUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;

+ 0 - 152
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupCoreService.java

@@ -1,152 +0,0 @@
-package com.ym.mec.biz.service;
-
-import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
-import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
-
-import java.util.List;
-
-/**
- * IM群组服务
- * Created by Eric.Shang on 2022/11/26.
- */
-public interface ImGroupCoreService {
-
-    /**
-     * IM 用户注册
-     * @param userId 用户ID
-     * @param username 用户名
-     * @param avatar 用户头象
-     * @return IM聊天Token
-     */
-    ImGroupWrapper.ImUserInfo register(String userId, String clientType, String username, String avatar) throws Exception;
-
-    /**
-     * IM 用户签名
-     * @param userId 用户ID
-     * @param clientType 用户身份
-     * @return ImGroupWrapper.ImUserInfo
-     */
-    ImGroupWrapper.ImUserInfo getUserSig(String userId, String clientType);
-
-    /**
-     * IM 用户注册
-     * @param userId 用户Id
-     * @return String
-     */
-    String getImUserId(String userId, String clientType);
-
-    /**
-     * 解析IM用户规则
-     * @param imUserId IM用户Id
-     * @return String
-     */
-    String analysisImUserId(String imUserId);
-
-    /**
-     * 添加群组信息
-     *
-     * @param groupMember 用户信息
-     * @param imGroup     ImGroupWrapper.ImGroup
-     * @return Boolean
-     * @throws Exception Exception
-     */
-    String groupCreate(ImGroupMemberWrapper.ImGroupMember groupMember, ImGroupWrapper.ImGroup imGroup) throws Exception;
-
-    /**
-     * 群组解散
-     * @param groupId 群组ID
-     * @throws Exception Exception
-     */
-    void groupDismiss( String groupId) throws Exception;
-
-    /**
-     * 用户主动退出群聊
-     * @param groupMember 用户信息
-     * @param groupId 群组ID
-     * @throws Exception Exception
-     */
-    void groupQuit(GroupMemberWrapper.ImGroupMember groupMember, String groupId) throws Exception;
-
-
-    /**
-     * 批量退群
-     *
-     */
-    void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId) throws Exception;
-
-    /**
-     * 用户主动退出群聊
-     * @param userId 用户信息
-     * @param clientType EClientType
-     * @param imGroupId 群组ID
-     * @throws Exception Exception
-     */
-    void groupQuit(Long userId, String clientType, String imGroupId) throws Exception;
-
-    /**
-     * 添加群组成员
-     * @param groupId 群组ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    void saveImGroupMemberList(String groupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
-
-    /**
-     * 添加群组成员
-     * @param imGroupId 群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
-
-    /**
-     * 群成员加入
-     * @param imGroupId 群主ID
-     * @param groupMembers 群成员
-     * @throws Exception Exception
-     */
-    void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
-
-    /**
-     * 添加进入群组
-     *
-     * @param userId 用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId 群组ID
-     */
-    void groupJoin(Long userId, String clientType, String imGroupId) throws Exception;
-
-    /**
-     * 转让群主
-     *
-     * @param groupId 群组ID
-     * @param newOwner 新群主
-     * @param oldOwner 旧群主
-     */
-    void changeGroupOwner(String groupId, String newOwner, String oldOwner) throws Exception;
-
-    /**
-     * 更新群信息
-     * @param groupId 群ID
-     * @param groupName 群名称
-     * @param faceUrl 群头像
-     * @throws Exception Exception
-     */
-    void modifyGroupInfo(String groupId, String groupName, String faceUrl) throws Exception;
-
-    /**
-     * 群成员加入三方IM状态
-     * @param groupMemberIds 群成员ID
-     * @param groupJoin 加群状态
-     */
-    void updateGroupMemberJoinStatus(List<Long> groupMemberIds, Boolean groupJoin);
-
-    /**
-     * 检查IM用户ID是否符合规则
-     *
-     * @param imUserId IM用户ID
-     * @return
-     */
-    boolean checkImUserId(String imUserId);
-}

+ 0 - 596
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupCoreServiceImpl.java

@@ -1,596 +0,0 @@
-package com.ym.mec.biz.service.impl;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.google.common.collect.Lists;
-import com.microsvc.toolkit.common.tools.ThreadPool;
-import com.microsvc.toolkit.middleware.im.ImPluginContext;
-import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
-import com.ym.mec.biz.dal.enums.EFriendRoleType;
-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.ImGroupPlusService;
-import com.ym.mec.biz.service.ImGroupCoreService;
-import com.ym.mec.common.exception.BizException;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-/**
- * IM群组务
- * Created by Eric.Shang on 2022/11/26.
- */
-@Slf4j
-@Service
-public class ImGroupCoreServiceImpl implements ImGroupCoreService {
-
-    @Autowired
-    private ImPluginContext imPluginContext;
-    @Autowired
-    private ImGroupPlusService imGroupService;
-    @Autowired
-    private ImConfigProperties imConfig;
-    @Autowired
-    private ImGroupMemberPlusService imGroupMemberService;
-
-    /**
-     * IM 用户注册
-     *
-     * @param userId   用户ID
-     * @param username 用户名
-     * @param avatar   用户头象
-     * @return IM聊天Token
-     */
-    @Override
-    public ImGroupWrapper.ImUserInfo register(String userId, String clientType, String username, String avatar) throws Exception {
-
-        ImGroupWrapper.ImUserInfo userInfo = ImGroupWrapper.ImUserInfo.builder()
-            .imUserId(getImUserId(userId, clientType))
-            .imToken("")
-            .build();
-
-        // 聊天Token
-        String imUserId = userInfo.getImUserId();
-        // 生成IM聊天Token
-        try {
-            // 生成签名
-            userInfo.imUserId(imUserId)
-                    .setImToken(imPluginContext.getPluginService().register(imUserId, username, avatar));
-
-        } catch (Exception e) {
-            log.error("register ImToken EX, userId={}, username={}", userId, username, e);
-            // 重新计算用户签名
-            userInfo.setImToken(imPluginContext.getPluginService().getUserSig(imUserId));
-        }
-        return userInfo;
-    }
-
-    /**
-     * IM 用户签名
-     *
-     * @param userId     用户ID
-     * @param clientType 用户身份
-     * @return ImGroupWrapper.ImUserInfo
-     */
-    @Override
-    public ImGroupWrapper.ImUserInfo getUserSig(String userId, String clientType) {
-
-        ImGroupWrapper.ImUserInfo userInfo = ImGroupWrapper.ImUserInfo.builder()
-            .imUserId(getImUserId(userId, clientType))
-            .imToken("")
-            .build();
-
-        // 计算用户IM签名
-        userInfo.setImToken(imPluginContext.getPluginService().getUserSig(userInfo.getImUserId()));
-
-        return userInfo;
-    }
-
-    /**
-     * IM 用户注册
-     *
-     * @param userId 用户Id
-     * @return String
-     */
-    @Override
-    public String getImUserId(String userId, String clientType) {
-        /*if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && !userId.startsWith(imConfig.getAppPrefix())) {
-            imUserId = MessageFormat.format("{0}_{1}_{2}", imConfig.getAppPrefix(), userId, clientType);
-        }*/
-        return userId;
-    }
-
-    /**
-     * 解析IM用户规则
-     *
-     * @param imUserId IM用户Id
-     * @return String
-     */
-    @Override
-    public String analysisImUserId(String imUserId) {
-        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) {
-            return imUserId.replace(imConfig.getAppPrefix() + "_", "").split("_")[0];
-        }
-        return imUserId;
-    }
-
-    /**
-     * 添加群组信息
-     *
-     * @param userInfo 用户信息
-     * @param imGroup  ImGroupWrapper.ImGroup
-     * @return Boolean
-     */
-    @Override
-    @Transactional
-    public String groupCreate(ImGroupMemberWrapper.ImGroupMember userInfo, ImGroupWrapper.ImGroup imGroup) throws Exception {
-
-        long id = Optional.ofNullable(imGroup.getId()).orElse(IdWorker.getId());
-        // 生成群组ID
-        imGroup.id(id)
-                .type(Optional.ofNullable(imGroup.getType()).orElse("CLASS"))
-                .groupId(String.valueOf(id));
-
-        ImGroup group = JSON.parseObject(imGroup.jsonString(), ImGroup.class);
-        group.setId(imGroup.getGroupId());
-        // 保存群组信息
-        imGroupService.saveOrUpdate(group);
-
-        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = null;
-        String imUserId = null;
-        if (userInfo != null) {
-            imUserId = getImUserId(userInfo.getUserId().toString(), userInfo.getClientType());
-            groupMembers = Lists.newArrayList(userInfo);
-
-            groupMembers.add(userInfo.imUserId(imUserId));
-            imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
-
-            // 自动激活学生IM帐号
-            registerUser(groupMembers);
-        }
-
-        // 创建IM群组
-        imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(),imUserId);
-
-        if (userInfo != null) {
-            // 添加群成员到当前群组
-            imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),
-                    getImGroupMembers(groupMembers));
-        }
-        return group.getId();
-    }
-
-    private List<ImGroupMember> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
-        if (CollectionUtils.isEmpty(groupMembers)) {
-            return new ArrayList<>();
-        }
-        return groupMembers.stream().map(o -> {
-            ImGroupMember imGroupMember = new ImGroupMember();
-            imGroupMember.setImGroupId(o.getGroupId());
-            imGroupMember.setUserId(o.getUserId().intValue());
-            imGroupMember.setNickname(o.getNickname());
-            imGroupMember.setIsAdmin(o.getIsAdmin());
-            imGroupMember.setRoleType(o.getRoleType());
-            imGroupMember.setType(EFriendRoleType.getByName(o.getRoleType()).name());
-            imGroupMember.setTenantId(o.getTenantId());
-
-            return imGroupMember;
-        }).collect(Collectors.toList());
-
-    }
-
-    /**
-     * 获取群组成员信息
-     *
-     * @param groupMembers 群组成员信息
-     * @return List<GroupMemberWrapper.ImGroupMember>
-     */
-    private List<GroupMemberWrapper.ImGroupMember> getImGroupMembers(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
-        // 统一转换为群组成员信息
-        for (ImGroupMemberWrapper.ImGroupMember member : groupMembers) {
-            member.setImUserId(getImUserId(member.getUserId().toString(), member.getClientType()));
-        }
-        return JSON.parseArray(JSON.toJSONString(groupMembers), GroupMemberWrapper.ImGroupMember.class);
-    }
-
-    /**
-     * 自动注册用户
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     */
-    private void asyncRegisterUser(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
-        ThreadPool.getExecutor().submit(() -> registerUser(groupMembers));
-    }
-
-    /**
-     * 批量导入用户
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     */
-    private void registerUser(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
-        for (ImGroupMemberWrapper.ImGroupMember member : groupMembers) {
-            // 激活用户帐号为空
-            if (StringUtils.isBlank(member.getNickname())) {
-                continue;
-            }
-
-            try {
-                String imUserId = member.getUserId().toString();
-                if (StringUtils.isBlank(imUserId)) {
-                    imUserId = getImUserId(String.valueOf(member.getUserId()),
-                            member.getClientType());
-                }
-
-                imPluginContext.getPluginService().register(imUserId, member.getNickname(), member.getAvatar());
-            } catch (Exception e) {
-                log.error("registerUser member imToken");
-            }
-        }
-    }
-
-
-
-    /**
-     * 群组解散
-     *
-     * @param groupId  群组ID
-     */
-    @Override
-    public void groupDismiss(String groupId) throws Exception {
-
-        // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-
-        // 获取群成员
-        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
-                .select(ImGroupMember::getUserId, ImGroupMember::getImGroupId, ImGroupMember::getRoleType)
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .list().stream()
-                .map(x -> ImGroupMemberWrapper.ImGroupMember.builder().userId(x.getUserId().longValue()).groupId(x.getImGroupId()).clientType(x.getRoleType()).build())
-                .collect(Collectors.toList());
-
-        // 删除群组
-        imGroupService.remove(Wrappers.<ImGroup>lambdaQuery().eq(ImGroup::getId, groupId));
-
-        // 删除群组成员
-        imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
-
-        // 解散群
-        imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
-
-    }
-
-    /**
-     * 用户主动退出群聊
-     *
-     * @param imGroupMember 用户信息
-     * @param groupId  群组ID
-     * @throws Exception Exception
-     */
-    @Override
-    public void groupQuit(GroupMemberWrapper.ImGroupMember imGroupMember, String groupId) throws Exception {
-
-        // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
-
-        // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .eq(ImGroupMember::getUserId, imGroupMember.getUserId())
-//                .eq(ImGroupMember::getRoleType, imGroupMember.getRoleType())
-        );
-        if (!remove) {
-            // 用户主动退出群聊失败
-            throw new BizException("用户主动退出群聊失败");
-        }
-
-        // 修改群组成员数
-        imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count - 1)
-                .update();
-
-        // 群主退出
-        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
-        groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
-                .userId(imGroupMember.getUserId())
-                .groupId(groupId)
-                .clientType(imGroupMember.getClientType())
-                .imUserId(getImUserId(imGroupMember.getUserId().toString(), imGroupMember.getClientType()))
-                .build());
-
-        imPluginContext.getPluginService().groupQuit(imGroup.getId(), getImGroupMembers(groupMembers));
-    }
-
-    /**
-     * 批量退群
-     *
-     */
-    @Override
-    public void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId) throws Exception {
-
-
-        // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-        if (CollectionUtils.isEmpty(imGroupMembers)){
-            return;
-        }
-
-        // id集合
-        List<Long> userIds = imGroupMembers.stream()
-            .map(GroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
-
-
-        // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .in(ImGroupMember::getUserId, userIds)
-        );
-        if (!remove) {
-            // 用户主动退出群聊失败
-            throw new BizException("用户主动退出群聊失败");
-        }
-
-        // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
-
-        // 修改群组成员数
-        imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count)
-                .update();
-        imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
-
-    }
-
-        /**
-         * 用户主动退出群聊
-         *
-         * @param userId     用户信息
-         * @param clientType EClientType
-         * @param imGroupId  群组ID
-         * @throws Exception Exception
-         */
-    @Override
-    public void groupQuit(Long userId, String clientType, String imGroupId) throws Exception {
-
-        ImGroup imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        GroupMemberWrapper.ImGroupMember groupMember = GroupMemberWrapper.ImGroupMember.builder()
-            .userId(userId)
-            .roleType(clientType)
-            .clientType(clientType)
-            .imUserId(getImUserId(userId.toString(), clientType))
-            .build();
-        // 退出群聊
-        groupQuit(groupMember, imGroup.getId());
-    }
-
-
-    /**
-     * 添加群组成员
-     * @param imGroupId 群组ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    @Override
-    public void saveImGroupMemberList(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
-
-        if (CollectionUtils.isEmpty(groupMembers)) {
-            // 群成员为空,直接忽略
-            return;
-        }
-        // 查询群组主键Id
-        for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
-            item.id(IdWorker.getId()).imUserId(getImUserId(item.getUserId().toString(), item.getClientType())).setGroupId(imGroupId);
-        }
-
-        imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
-        // 判断群ID是否有效
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-        // 更新群组成员数
-        updateGroupMemberNumber(imGroup.getId(), imGroup);
-
-        if (groupMembers.stream().anyMatch(ImGroupMemberWrapper.ImGroupMember::getGroupJoin)) {
-
-            // 过滤出需要添加到群组的成员
-            groupMembers = groupMembers.stream().filter(ImGroupMemberWrapper.ImGroupMember::getGroupJoin).collect(Collectors.toList());
-
-            // 添加群成员到当前群组
-            imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
-
-            // 自动激活用户
-            asyncRegisterUser(groupMembers);
-        }
-    }
-
-    /**
-     * 添加群组成员
-     *
-     * @param imGroupId    群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    @Override
-    public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
-
-        // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        // 添加群组成员信息
-        saveImGroupMemberList(imGroup.getId(), groupMembers);
-    }
-
-    /**
-     * 群成员加入
-     *
-     * @param imGroupId    群主ID
-     * @param groupMembers 群成员
-     * @throws Exception Exception
-     */
-    @Override
-    public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
-
-        // 群组信息
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        // 添加群组成员信息
-        if (CollectionUtils.isEmpty(groupMembers)) {
-            // 群成员为空,直接忽略
-            return;
-        }
-
-        // 添加群成员到当前群组
-        imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
-
-        // 自动激活用户
-        asyncRegisterUser(groupMembers);
-
-    }
-
-    /**
-     * 更新群组成员数
-     * @param groupId 群组ID
-     * @param imGroup ImGroup
-     */
-    private void updateGroupMemberNumber(String groupId, ImGroup imGroup) {
-
-        // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
-
-        // 修改群组成员数
-        imGroupService.lambdaUpdate()
-            .eq(ImGroup::getId, imGroup.getId())
-            .set(ImGroup::getMemberNum, count)
-            .update();
-    }
-
-
-    /**
-     * 添加进入群组
-     *
-     * @param userId     用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId  群组ID
-     */
-    @Override
-    public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
-
-        // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        List<ImGroupMemberWrapper.ImGroupMember> imGroupMembers = new ArrayList<>();
-        ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember
-                .builder()
-                .groupId(imGroup.getId())
-                .userId(userId)
-                .clientType(clientType)
-                .imUserId(getImUserId(userId.toString(),clientType))
-                .isAdmin(false)
-                .roleType(clientType)
-                .build();
-        imGroupMembers.add(groupMember);
-
-        saveImGroupMemberList(imGroupId, imGroupMembers);
-    }
-
-    /**
-     * 转让群主
-     *
-     * @param groupId  群组ID
-     * @param newOwner 新群主
-     * @param oldOwner 旧群主
-     */
-    @Override
-    public void changeGroupOwner(String groupId, String newOwner, String oldOwner) throws Exception {
-
-        // 转主群主
-        imPluginContext.getPluginService().changeGroupOwner(groupId, newOwner, oldOwner);
-    }
-
-    /**
-     * 更新群信息
-     *
-     * @param groupId   群ID
-     * @param groupName 群名称
-     * @param faceUrl   群头像
-     * @throws Exception Exception
-     */
-    @Override
-    public void modifyGroupInfo(String groupId, String groupName, String faceUrl) throws Exception {
-
-        // 更新群信息
-        imPluginContext.getPluginService().modifyGroupInfo(groupId, groupName, faceUrl);
-    }
-
-    /**
-     * 群成员加入三方IM状态
-     *
-     * @param groupMemberIds 群成员ID
-     * @param groupJoin      加群状态
-     */
-    @Override
-    public void updateGroupMemberJoinStatus(List<Long> groupMemberIds, Boolean groupJoin) {
-
-//        if (CollectionUtils.isEmpty(groupMemberIds)) {
-//            return;
-//        }
-//
-//        // 群成员加入三方IM状态
-//        imGroupMemberService.lambdaUpdate()
-//                .set(ImGroupMember::getGroupJoin, groupJoin)
-//                .in(ImGroupMember::getId, groupMemberIds)
-//                .update();
-    }
-
-    @Override
-    public boolean checkImUserId(String imUserId) {
-        try {
-            Integer.parseInt(analysisImUserId(imUserId));
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-}