1
zj
2025-08-23 a441a1665bc8dd78b70cc842ad9777ff0ec6daee
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/NeteaseTeamServiceImpl.java
@@ -4,7 +4,9 @@
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.netease.nim.server.sdk.core.YunxinApiHttpClient;
import com.netease.nim.server.sdk.core.YunxinApiResponse;
import com.netease.nim.server.sdk.core.exception.YunxinSdkException;
@@ -17,8 +19,10 @@
import com.ruoyi.im.config.CreateTeamRequest;
import com.ruoyi.im.config.AssignmentRequest;
import com.ruoyi.im.service.NeteaseTeamService;
import com.ruoyi.system.domain.GroupWelcomeConfig;
import com.ruoyi.system.domain.NeteaseTeam;
import com.ruoyi.system.mapper.NeteaseTeamMapper;
import com.ruoyi.system.service.GroupWelcomeConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +34,7 @@
@Service
public class NeteaseTeamServiceImpl extends ServiceImpl<NeteaseTeamMapper, NeteaseTeam> implements NeteaseTeamService {
    @Resource
    private final YunxinApiHttpClient yunxinClient;
    // 使用构造函数注入(推荐)
@@ -38,7 +43,8 @@
        this.yunxinClient = yunxinClient;
    }
    @Autowired
    GroupWelcomeConfigService groupWelcomeConfigService;
    @Resource
    private NeteaseTeamMapper neteaseTeamMapper;
@@ -113,7 +119,7 @@
            String jsonBody = JSON.toJSONString(paramMap);
            NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getGroupId());
            if(ObjectUtil.isNotEmpty(neteaseTeam)){
            if(ObjectUtil.isEmpty(neteaseTeam)){
                return AjaxResult.error("群不存在!");
            }
@@ -257,18 +263,23 @@
        try {
            NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getGroupId());
            if(ObjectUtil.isNotEmpty(neteaseTeam)){
            if(ObjectUtil.isEmpty(neteaseTeam)){
                return AjaxResult.error("群不存在!");
            }
            GroupWelcomeConfig groupWelcomeConfig = groupWelcomeConfigService.getOne(new LambdaQueryWrapper<>(GroupWelcomeConfig.class)
                    .eq(GroupWelcomeConfig::getConfigurationName, "IM-BASICS").last(" limit 1"));
            AddTeamMembersRequest build = AddTeamMembersRequest.builder()
                    .inviteAccountIds(request.getInviteAccountIds())
                    .operatorId(request.getOperatorId())
                    .operatorId(groupWelcomeConfig.getUserAccid())
                    .msg(request.getMsg())
                    .teamId(Long.getLong(neteaseTeam.getTid()))
                    .teamId(Long.valueOf(neteaseTeam.getTid()))
                    .teamType(neteaseTeam.getTeamType())
                    .build();
            String jsonBody = JSONUtils.toJSONString(build);
// 方法1:使用 Jackson ObjectMapper
            ObjectMapper objectMapper = new ObjectMapper();
            String jsonBody = objectMapper.writeValueAsString(build);
            YunxinApiResponse response = yunxinClient.executeV2Api(
                    HttpMethod.POST,
@@ -306,16 +317,18 @@
        try {
            NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getGroupId());
            if(ObjectUtil.isNotEmpty(neteaseTeam)){
            if(ObjectUtil.isEmpty(neteaseTeam)){
                return AjaxResult.error("群不存在!");
            }
            AssignmentRequest build = AssignmentRequest.builder()
                    .teamId(Long.getLong(neteaseTeam.getTid()))
                    .teamId(Long.valueOf(neteaseTeam.getTid()))
                    .team_type(neteaseTeam.getTeamType())
                    .leave(2)
                    .new_owner_account_id(request.getNew_owner_account_id())
                    .leave(request.getLeave())
                    .build();
            String requestBody = JSONUtils.toJSONString(build);
            ObjectMapper objectMapper = new ObjectMapper();
            String requestBody = objectMapper.writeValueAsString(build);
            String path = TeamV2UrlContext.TRANSFER_OWNER.replace("{team_id}",neteaseTeam.getTid().toString());
@@ -351,10 +364,10 @@
    }
    @Override
    public AjaxResult dismiss(Long id) {
    public AjaxResult dismiss(Integer id) {
        try {
            NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(id);
            if(ObjectUtil.isNotEmpty(neteaseTeam)){
            if(ObjectUtil.isEmpty(neteaseTeam)){
                return AjaxResult.error("群不存在!");
            }
            Map<String, String> queryParams = new HashMap<>();
@@ -379,6 +392,8 @@
                log.error("网易云信解散群失败,响应:");
                return AjaxResult.error("解散群失败");
            }
            neteaseTeam.setStatus(1);
            neteaseTeamMapper.updateById(neteaseTeam);
            return AjaxResult.success();
        } catch (YunxinSdkException e) {
            // 云信调用异常时回滚事务