Commit 29ae6d69 by 罗长华

joinGroup增加inviterUserId入参

parent e1e0fa63
...@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -68,10 +69,10 @@ public class ImGroupController { ...@@ -68,10 +69,10 @@ public class ImGroupController {
* @Return * @Return
*/ */
@PostMapping("/joinGroup") @PostMapping("/joinGroup")
public ApiResult<Integer> joinGroup(@RequestBody JoinGroupParam param) { public ApiResult<Integer> joinGroup(@Validated @RequestBody JoinGroupParam param) {
log.info("加入群组请求 参数: {}", JSON.toJSONString(param)); log.info("加入群组请求 参数: {}", JSON.toJSONString(param));
List<String> memberIds = Arrays.asList(param.getUserIds().split(",")); List<String> memberIds = Arrays.asList(param.getUserIds().split(","));
return ApiResult.ok(groupService.joinGroup(param.getGroupId(), memberIds)); return ApiResult.ok(groupService.joinGroup(param.getInviterUserId(), param.getGroupId(), memberIds));
} }
/** /**
......
...@@ -3,6 +3,8 @@ package com.wecloud.im.param.group; ...@@ -3,6 +3,8 @@ package com.wecloud.im.param.group;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.NotBlank;
/** /**
* 加入群 * 加入群
* @Author luozh * @Author luozh
...@@ -14,13 +16,21 @@ import lombok.Setter; ...@@ -14,13 +16,21 @@ import lombok.Setter;
public class JoinGroupParam { public class JoinGroupParam {
/** /**
* 邀请进群的用户id
*/
@NotBlank(message = "inviterUserId 不能为空")
private String inviterUserId;
/**
* 要加入群的用户 ID * 要加入群的用户 ID
*/ */
@NotBlank(message = "userIds 不能为空")
private String userIds; private String userIds;
/** /**
* 要加入的群的群组 ID * 要加入的群的群组 ID
*/ */
@NotBlank(message = "groupId 不能为空")
private String groupId; private String groupId;
} }
...@@ -41,7 +41,7 @@ public interface ImGroupService { ...@@ -41,7 +41,7 @@ public interface ImGroupService {
* @param memberClientIds * @param memberClientIds
* @Return * @Return
*/ */
Integer joinGroup(String groupId, List<String> memberClientIds); Integer joinGroup(String inviterUserId, String groupId, List<String> memberClientIds);
/** /**
* 离开群组 * 离开群组
......
...@@ -504,10 +504,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -504,10 +504,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
memberJoinTypeMsg = "由 <@>" + createClient.getClientId() + "<@>邀请加入该会话"; memberJoinTypeMsg = "由 <@>" + createClient.getClientId() + "<@>邀请加入该会话";
} else if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(imConversation.getChatType()) || ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversation.getChatType())) { } else if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(imConversation.getChatType()) || ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversation.getChatType())) {
memberJoinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId() + "<@>邀请进聊"; memberJoinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId() + "<@>邀请进聊";
;
} else if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversation.getChatType())) { } else if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversation.getChatType())) {
memberJoinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId() + "<@>邀请进入聊天室"; memberJoinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId() + "<@>邀请进入聊天室";
;
} }
imConversationMembersService.save(imConversationMembers2); imConversationMembersService.save(imConversationMembers2);
......
...@@ -26,6 +26,7 @@ import com.wecloud.im.mapper.ImConversationMapper; ...@@ -26,6 +26,7 @@ import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.param.ListConversationMembersParam; import com.wecloud.im.param.ListConversationMembersParam;
import com.wecloud.im.param.add.ServerImConversationCreate; import com.wecloud.im.param.add.ServerImConversationCreate;
import com.wecloud.im.param.group.MutedMembersParam; import com.wecloud.im.param.group.MutedMembersParam;
import com.wecloud.im.post.Couriers;
import com.wecloud.im.post.MessageBuilder; import com.wecloud.im.post.MessageBuilder;
import com.wecloud.im.sdk.enums.ChatTypeEnum; import com.wecloud.im.sdk.enums.ChatTypeEnum;
import com.wecloud.im.sdk.enums.GroupRoleEnum; import com.wecloud.im.sdk.enums.GroupRoleEnum;
...@@ -38,6 +39,7 @@ import com.wecloud.im.service.ImGroupService; ...@@ -38,6 +39,7 @@ import com.wecloud.im.service.ImGroupService;
import com.wecloud.im.service.ImMessageService; 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.imserver.client.model.enums.DeviceTypeEnum; import com.wecloud.imserver.client.model.enums.DeviceTypeEnum;
import com.wecloud.utils.JsonUtils; import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil; import com.wecloud.utils.SnowflakeUtil;
...@@ -53,6 +55,11 @@ import com.wecloud.utils.SnowflakeUtil; ...@@ -53,6 +55,11 @@ import com.wecloud.utils.SnowflakeUtil;
public class ImGroupServiceImpl implements ImGroupService { public class ImGroupServiceImpl implements ImGroupService {
/** /**
* 投递员
*/
private final Couriers couriers;
/**
* 应用服务 * 应用服务
*/ */
private final ImApplicationService applicationService; private final ImApplicationService applicationService;
...@@ -161,8 +168,11 @@ public class ImGroupServiceImpl implements ImGroupService { ...@@ -161,8 +168,11 @@ public class ImGroupServiceImpl implements ImGroupService {
} }
@Override @Override
public Integer joinGroup(String groupId, List<String> memberClientIds) { public Integer joinGroup(String inviterUserId, String groupId, List<String> memberClientIds) {
Long appId = SecurityUtils.getCurrentAppId(); Long appId = SecurityUtils.getCurrentAppId();
ImClient inviter = clientService.getCacheImClient(appId, inviterUserId);
ImApplication imApplication = applicationService.getCacheById(appId); ImApplication imApplication = applicationService.getCacheById(appId);
// 查询会话 // 查询会话
ImConversation conversation = ImConversation conversation =
...@@ -209,6 +219,23 @@ public class ImGroupServiceImpl implements ImGroupService { ...@@ -209,6 +219,23 @@ public class ImGroupServiceImpl implements ImGroupService {
// 将群成员数量增加 // 将群成员数量增加
imConversationMapper.addMemberCount(imApplication.getId(), conversation.getId(), clientList.size()); imConversationMapper.addMemberCount(imApplication.getId(), conversation.getId(), clientList.size());
for (ImClient newMember : clientList) {
// ws邀请事件通知给群内其他人 ----------
// 生成消息id
Map<String, Object> content = new HashMap<>();
//操作的client ID
content.put("operator", inviter.getClientId());
//被操作的client ID
content.put("passivityOperator", newMember.getClientId());
ImMessage imMessage = MessageBuilder.buildEventMessage(MsgTypeEnum.INVITE_CLIENT_JOIN_CONVERSATION,
imApplication, inviter, conversation, JsonUtils.encodeJson(content));
boolean save = imMessageService.save(imMessage);
// 发送给在群内的成员
conversationService.sendMsgToMembers(conversation, existMemberList, inviter, imMessage, content);
// 发送给被邀请人
couriers.deliver(imMessage, content, inviter, newMember, WsResponseCmdEnum.CONVERSATION_EVENT_MSG);
}
return clientList.size(); return clientList.size();
} }
......
...@@ -239,7 +239,7 @@ public interface WecloudIm { ...@@ -239,7 +239,7 @@ public interface WecloudIm {
* @param userIds 要加入群的用户id * @param userIds 要加入群的用户id
* @Return 加入结果 true/false * @Return 加入结果 true/false
*/ */
Integer joinGroup(String groupId, String userIds); Integer joinGroup(String inviterUserId, String groupId, String userIds);
/** /**
* 离开群组 * 离开群组
......
...@@ -254,7 +254,7 @@ public class WecloudImClient implements WecloudIm { ...@@ -254,7 +254,7 @@ public class WecloudImClient implements WecloudIm {
} }
@Override @Override
public Integer joinGroup(String groupId, String userIds) { public Integer joinGroup(String inviterUserId, String groupId, String userIds) {
JoinGroupRequest joinGroupRequest = JoinGroupRequest joinGroupRequest =
JoinGroupRequest.builder().userIds(userIds).groupId(groupId).build(); JoinGroupRequest.builder().userIds(userIds).groupId(groupId).build();
return imGroupOperation.joinGroup(joinGroupRequest); return imGroupOperation.joinGroup(joinGroupRequest);
......
...@@ -99,9 +99,11 @@ public class WecloudImGroupOperation extends WecloudImOperation { ...@@ -99,9 +99,11 @@ public class WecloudImGroupOperation extends WecloudImOperation {
* @Return * @Return
*/ */
public Integer joinGroup(JoinGroupRequest joinGroupRequest) { public Integer joinGroup(JoinGroupRequest joinGroupRequest) {
String inviterUserId = joinGroupRequest.getInviterUserId();
String groupId = joinGroupRequest.getGroupId(); String groupId = joinGroupRequest.getGroupId();
String userIds = joinGroupRequest.getUserIds(); String userIds = joinGroupRequest.getUserIds();
// 必填参数校验 // 必填参数校验
assertParameterNotBlank(inviterUserId, "inviterUserId");
assertParameterNotBlank(groupId, "groupId"); assertParameterNotBlank(groupId, "groupId");
assertParameterNotBlank(userIds, "userIds"); assertParameterNotBlank(userIds, "userIds");
// 校验通过 构建参数 // 校验通过 构建参数
......
...@@ -16,6 +16,11 @@ import lombok.Setter; ...@@ -16,6 +16,11 @@ import lombok.Setter;
public class JoinGroupRequest extends WebServiceRequest { public class JoinGroupRequest extends WebServiceRequest {
/** /**
* 邀请人userId
*/
private String inviterUserId;
/**
* 要加入群的用户 ID * 要加入群的用户 ID
*/ */
private String userIds; private String userIds;
......
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