From 2ec5c14a87bce4cb6ccba7a1bd87708bcce055a9 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 21 Nov 2025 23:45:06 +0800
Subject: [PATCH] 1
---
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/NeteaseTeamServiceImpl.java | 98 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 72 insertions(+), 26 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/NeteaseTeamServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/NeteaseTeamServiceImpl.java
index 2fb1eb6..b79cfbf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/NeteaseTeamServiceImpl.java
+++ b/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;
@@ -12,20 +14,27 @@
import com.netease.nim.server.sdk.im.v2.team.TeamV2UrlContext;
import com.netease.nim.server.sdk.im.v2.team_member.TeamMemberV2UrlContext;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.im.comm.Result;
import com.ruoyi.im.config.AddTeamMembersRequest;
import com.ruoyi.im.config.CreateTeamRequest;
import com.ruoyi.im.config.AssignmentRequest;
import com.ruoyi.im.service.NeteaseTeamService;
+import com.ruoyi.imenum.ErrorCodeEnum;
+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;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
+import javax.validation.constraints.NotBlank;
import java.util.*;
+import java.util.stream.Collectors;
@Service
public class NeteaseTeamServiceImpl extends ServiceImpl<NeteaseTeamMapper, NeteaseTeam> implements NeteaseTeamService {
@@ -33,13 +42,18 @@
@Resource
private final YunxinApiHttpClient yunxinClient;
+ @Autowired
+ ImApiServcieImpl imApiServcie;
+
+
// 使用构造函数注入(推荐)
@Autowired
public NeteaseTeamServiceImpl(YunxinApiHttpClient yunxinClient) {
this.yunxinClient = yunxinClient;
}
-
+ @Autowired
+ GroupWelcomeConfigService groupWelcomeConfigService;
@Resource
private NeteaseTeamMapper neteaseTeamMapper;
@@ -72,8 +86,8 @@
int code = json.getIntValue("code");
if (code != 200) {
- log.error("网易云信创建群组失败,响应:");
- return AjaxResult.error("创建群组失败");
+ log.error("-----------网易云信创建群组失败:"+ ErrorCodeEnum.getByCode(code).getComment()+"----im信息:"+ErrorCodeEnum.getByCode(code).getDesc());
+ return AjaxResult.error("创建群组失败:"+ErrorCodeEnum.getByCode(code).getComment());
}
// 5. 解析响应获取群组ID
@@ -113,8 +127,8 @@
// 2. 将Map转换为JSON字符串
String jsonBody = JSON.toJSONString(paramMap);
- NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getGroupId());
- if(ObjectUtil.isNotEmpty(neteaseTeam)){
+ NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getId());
+ if(ObjectUtil.isEmpty(neteaseTeam)){
return AjaxResult.error("群不存在!");
}
@@ -133,8 +147,8 @@
int code = json.getIntValue("code");
if (code != 200) {
- log.error("网易云信修改群组失败,响应:");
- return AjaxResult.error("修改群组失败");
+ log.error("-----------网易云信修改群组失败:"+ ErrorCodeEnum.getByCode(code).getComment()+"----im信息:"+ErrorCodeEnum.getByCode(code).getDesc());
+ return AjaxResult.error("修改群组失败:"+ErrorCodeEnum.getByCode(code).getComment());
}
// 5. 解析响应获取群组ID
@@ -167,7 +181,7 @@
private int updateNeteaseTeam(CreateTeamRequest request, NeteaseTeam neteaseTeam) {
neteaseTeam.setName(request.getName());
- neteaseTeam.setMemberCount(request.getMembers_limit());
+ neteaseTeam.setMembersLimit(request.getMembers_limit());
neteaseTeam.setAnnouncement(request.getAnnouncement());
neteaseTeam.setIntro(request.getIntro());
neteaseTeam.setJoinMode(request.getJoin_mode());
@@ -256,20 +270,43 @@
@Override
public AjaxResult inviteTeamMembers(AddTeamMembersRequest request) {
try {
-
+ if(null != request.getNumber() && request.getNumber() > 99){
+ return AjaxResult.error("拉人数量单次最多99!");
+ }
NeteaseTeam neteaseTeam = neteaseTeamMapper.selectById(request.getGroupId());
- if(ObjectUtil.isNotEmpty(neteaseTeam)){
+ if(ObjectUtil.isEmpty(neteaseTeam)){
return AjaxResult.error("群不存在!");
+ }
+ String operatorId;
+ if(StringUtils.isNotEmpty(request.getOperatorId())){
+ operatorId = request.getOperatorId();
+ }else{
+ operatorId = neteaseTeam.getOwnerAccountId();
+ }
+
+
+ List<String> inviteAccountIds = new ArrayList<>();
+ if(ObjectUtil.isEmpty(request.getInviteAccountIds()) && ObjectUtil.isNotEmpty(request.getNumber()) && request.getNumber() > 0){
+ Result result = imApiServcie.batchRegister(request.getNumber());
+ if(result.getCode() != 200){
+ return AjaxResult.error("生成账号错误!");
+ }
+ List<String> accountList = (List<String>) result.getData();
+ inviteAccountIds = accountList;
+ }else{
+ inviteAccountIds = request.getInviteAccountIds();
}
AddTeamMembersRequest build = AddTeamMembersRequest.builder()
- .inviteAccountIds(request.getInviteAccountIds())
- .operatorId(request.getOperatorId())
+ .inviteAccountIds(inviteAccountIds)
+ .operatorId(operatorId)
.msg(request.getMsg())
- .teamId(Long.getLong(neteaseTeam.getTid()))
+ .teamId(Long.valueOf(neteaseTeam.getTid()))
.teamType(neteaseTeam.getTeamType())
.build();
- String jsonBody = JSONUtils.toJSONString(build);
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonBody = objectMapper.writeValueAsString(build);
YunxinApiResponse response = yunxinClient.executeV2Api(
HttpMethod.POST,
@@ -285,9 +322,10 @@
int code = json.getIntValue("code");
if (code != 200) {
- log.error("网易云信拉人入群失败,响应:");
- return AjaxResult.error("拉人入群失败");
+ log.error("-----------网易云信拉人入群失败:"+ ErrorCodeEnum.getByCode(code).getComment()+"----im信息:"+ErrorCodeEnum.getByCode(code).getDesc());
+ return AjaxResult.error("拉人入群失败:"+ErrorCodeEnum.getByCode(code).getComment());
}
+
return AjaxResult.success();
} catch (YunxinSdkException e) {
// 云信调用异常时回滚事务
@@ -307,16 +345,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());
@@ -334,9 +374,11 @@
int code = json.getIntValue("code");
if (code != 200) {
- log.error("网易云信转让群主失败,响应:");
- return AjaxResult.error("转让群主失败");
+ log.error("-----------网易云信转让群主失败:"+ ErrorCodeEnum.getByCode(code).getComment()+"----im信息:"+ErrorCodeEnum.getByCode(code).getDesc());
+ return AjaxResult.error("转让群主失败:"+ErrorCodeEnum.getByCode(code).getComment());
}
+ neteaseTeam.setOwnerAccountId(request.getNew_owner_account_id());
+ neteaseTeamMapper.updateById(neteaseTeam);
return AjaxResult.success();
} catch (YunxinSdkException e) {
// 云信调用异常时回滚事务
@@ -352,10 +394,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<>();
@@ -377,9 +419,13 @@
int code = json.getIntValue("code");
if (code != 200) {
- log.error("网易云信解散群失败,响应:");
- return AjaxResult.error("解散群失败");
+ log.error("-----------网易云信解散群失败:"+ ErrorCodeEnum.getByCode(code).getComment()+"----im信息:"+ErrorCodeEnum.getByCode(code).getDesc());
+ return AjaxResult.error("解散群失败:"+ErrorCodeEnum.getByCode(code).getComment());
}
+
+
+ neteaseTeam.setStatus(1);
+ neteaseTeamMapper.updateById(neteaseTeam);
return AjaxResult.success();
} catch (YunxinSdkException e) {
// 云信调用异常时回滚事务
--
Gitblit v1.9.3