Commit ca10024b by 罗长华

增加群成员互加好友接口

parent 5625a334
package com.wecloud.im.controller; package com.wecloud.im.controller;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -15,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -15,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.im.friend.param.ImFriendApplyParam;
import com.wecloud.im.param.ChatSettingParam; import com.wecloud.im.param.ChatSettingParam;
import com.wecloud.im.param.ImConvMemeClientRemarkNameParam; import com.wecloud.im.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.param.ListConversationMembersParam; import com.wecloud.im.param.ListConversationMembersParam;
...@@ -87,5 +91,31 @@ public class ImConversationMembersController extends BaseController { ...@@ -87,5 +91,31 @@ public class ImConversationMembersController extends BaseController {
return ApiResult.ok(imConversationMembersService.chatSetting(param)); return ApiResult.ok(imConversationMembersService.chatSetting(param));
} }
/**
* 群成员添加haoyou
* @Author luozh
* @Date 2022年04月28日 11:40:44
* @param
* @Return
*/
@ApiOperation(value = "群成员添加好友")
@PostMapping("/addUser")
public ApiResult<Boolean> addUser(@RequestBody ImFriendApplyParam param) {
if (param.getConversationId() == null) {
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION.getCode(), "参数: conversationId 不能为空");
}
if (StringUtils.isBlank(param.getFriendName())) {
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION.getCode(), "参数: friendName 不能为空");
}
if (StringUtils.isBlank(param.getClientId())) {
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION.getCode(), "参数: clientId 不能为空");
}
if (StringUtils.isBlank(param.getFriendClientId())) {
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION.getCode(), "参数: friendClientId 不能为空");
}
return ApiResult.ok(imConversationMembersService.addUser(param));
}
} }
...@@ -3,8 +3,6 @@ package com.wecloud.im.friend.param; ...@@ -3,8 +3,6 @@ package com.wecloud.im.friend.param;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
/** /**
* @Description 申请好友入参 * @Description 申请好友入参
* @Author lixiaozhong * @Author lixiaozhong
...@@ -14,6 +12,9 @@ import java.io.Serializable; ...@@ -14,6 +12,9 @@ import java.io.Serializable;
public class ImFriendApplyParam extends ImFriendBaseParam { public class ImFriendApplyParam extends ImFriendBaseParam {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id,群成员添加好友时传参")
private Long conversationId;
@ApiModelProperty("备注好友名称") @ApiModelProperty("备注好友名称")
private String friendName; private String friendName;
......
...@@ -6,8 +6,11 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -6,8 +6,11 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import java.util.List; import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.friend.param.ImFriendApplyParam;
import com.wecloud.im.param.ApiImConversationMembersPageParam; import com.wecloud.im.param.ApiImConversationMembersPageParam;
import com.wecloud.im.param.ApiImConversationMembersQueryVo; import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.ChatSettingParam; import com.wecloud.im.param.ChatSettingParam;
...@@ -131,4 +134,13 @@ public interface ImConversationMembersService extends BaseService<ImConversation ...@@ -131,4 +134,13 @@ public interface ImConversationMembersService extends BaseService<ImConversation
* @Return * @Return
*/ */
Boolean chatSetting(ChatSettingParam param); Boolean chatSetting(ChatSettingParam param);
/**
* 群成员添加好友
* @Author luozh
* @Date 2022年04月28日 11:48:42
* @param param
* @Return
*/
Boolean addUser(@RequestBody ImFriendApplyParam param);
} }
...@@ -9,6 +9,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -9,6 +9,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils; import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -26,8 +27,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -26,8 +27,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessageOnlineSend; import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.friend.param.ImFriendApplyParam;
import com.wecloud.im.friend.service.ImFriendService;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.mapper.ImConversationMembersMapper; import com.wecloud.im.mapper.ImConversationMembersMapper;
import com.wecloud.im.param.ApiImConversationMembersPageParam; import com.wecloud.im.param.ApiImConversationMembersPageParam;
...@@ -41,11 +45,9 @@ import com.wecloud.im.param.ListConversationMembersParam; ...@@ -41,11 +45,9 @@ import com.wecloud.im.param.ListConversationMembersParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.add.ImConversationMemAttrUpdate; import com.wecloud.im.param.add.ImConversationMemAttrUpdate;
import com.wecloud.im.service.ContextService; import com.wecloud.im.service.ContextService;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService; import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.vo.ConversationMemberVo; import com.wecloud.im.vo.ConversationMemberVo;
import com.wecloud.im.ws.enums.MsgTypeEnum; import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.im.ws.enums.WsResponseCmdEnum; import com.wecloud.im.ws.enums.WsResponseCmdEnum;
...@@ -79,17 +81,14 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -79,17 +81,14 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
private ImClientService imClientService; private ImClientService imClientService;
@Autowired @Autowired
private ImApplicationService imApplicationService;
@Autowired
private ImMessageService imMessageService;
@Autowired
private ImConversationMembersMapper imConversationMembersMapper; private ImConversationMembersMapper imConversationMembersMapper;
@Autowired @Autowired
private ContextService contextService; private ContextService contextService;
@Autowired
private ImFriendService imFriendService;
@Override @Override
public ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication) { public ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication) {
...@@ -290,4 +289,37 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -290,4 +289,37 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
return result; return result;
} }
@Override
public Boolean addUser(ImFriendApplyParam param) {
Long appId = SecurityUtils.getCurrentAppId();
Long conversationId = param.getConversationId();
// 判断会话是否存在
ImConversation conversation = imConversationService.getById(conversationId);
if (conversation == null) {
throw new BusinessException("会话不存在");
}
// 判断会话是否开启禁止群成员互加好友
boolean forbidAddFriend = conversation.getForbidAddFriend();
if (forbidAddFriend) {
throw new BusinessException("群主/管理员开启了禁止群成员互加好友");
}
// 判断是否同一个会话成员
List<String> memberClientIds = new ArrayList<>();
memberClientIds.add(param.getClientId());
memberClientIds.add(param.getFriendClientId());
List<ImConversationMembers> members =
list(Wrappers.<ImConversationMembers>lambdaQuery()
.eq(ImConversationMembers::getFkAppid, appId)
.eq(ImConversationMembers::getFkConversationId, conversationId)
.in(ImConversationMembers::getClientId, memberClientIds));
if (members.size() != 2) {
throw new BusinessException("好友不属于同一个群");
}
// 校验通过,调用imFriendService apply方法
ImClient initiator = imClientService.getCacheImClient(appId, param.getClientId());
ImClient recipient = imClientService.getCacheImClient(appId, param.getFriendClientId());
return imFriendService.applyFriend(initiator, recipient, param.getFriendName(),
param.getRequestRemark());
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment