| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | @Resource |
| | | private final YunxinApiHttpClient yunxinClient; |
| | | |
| | | @Autowired |
| | | ImApiServcieImpl imApiServcie; |
| | | |
| | | |
| | | // 使用构造函数注入(推荐) |
| | | @Autowired |
| | | public NeteaseTeamServiceImpl(YunxinApiHttpClient yunxinClient) { |
| | | this.yunxinClient = yunxinClient; |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | GroupWelcomeConfigService groupWelcomeConfigService; |
| | | |
| | | @Resource |
| | | private NeteaseTeamMapper neteaseTeamMapper; |
| | |
| | | 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 |
| | |
| | | // 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("群不存在!"); |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | |
| | | 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()); |
| | |
| | | @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, |
| | |
| | | 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) { |
| | | // 云信调用异常时回滚事务 |
| | |
| | | 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()); |
| | | |
| | |
| | | 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) { |
| | | // 云信调用异常时回滚事务 |
| | |
| | | } |
| | | |
| | | @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<>(); |
| | |
| | | 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) { |
| | | // 云信调用异常时回滚事务 |