Commit e1e0fa63 by 罗长华

sdk增加群禁言方法

parent 26287cf0
...@@ -18,6 +18,7 @@ import com.wecloud.im.param.group.DismissGroupParam; ...@@ -18,6 +18,7 @@ import com.wecloud.im.param.group.DismissGroupParam;
import com.wecloud.im.param.group.JoinGroupParam; import com.wecloud.im.param.group.JoinGroupParam;
import com.wecloud.im.param.group.LeaveGroupParam; import com.wecloud.im.param.group.LeaveGroupParam;
import com.wecloud.im.param.group.ListGroupMembersParam; import com.wecloud.im.param.group.ListGroupMembersParam;
import com.wecloud.im.param.group.MutedMembersParam;
import com.wecloud.im.service.ImGroupService; import com.wecloud.im.service.ImGroupService;
/** /**
...@@ -98,4 +99,17 @@ public class ImGroupController { ...@@ -98,4 +99,17 @@ public class ImGroupController {
log.info("获取群组成员请求 参数: {}", JSON.toJSONString(param)); log.info("获取群组成员请求 参数: {}", JSON.toJSONString(param));
return ApiResult.ok(groupService.listGroupMembers(param.getGroupId())); return ApiResult.ok(groupService.listGroupMembers(param.getGroupId()));
} }
/**
* 禁言群成员
* @Author luozh
* @Date 2022年05月10日 02:16:19
* @Return
* @return
*/
@PostMapping("/mutedMembers")
public ApiResult<Boolean> mutedMembers(@RequestBody MutedMembersParam param) {
log.info("禁言群成员请求 参数: {}", JSON.toJSONString(param));
return ApiResult.ok(groupService.mutedMembers(param));
}
} }
package com.wecloud.im.param.group;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 禁言群成员入参
* @Author luozh
* @Date 2022年05月16日 19:42
* @Version 1.0
*/
@Data
public class MutedMembersParam {
@ApiModelProperty("群id")
private String groupId;
@ApiModelProperty("是否禁言")
private Boolean muted;
@ApiModelProperty("用户id多个用,隔开")
private String userIds;
}
...@@ -2,6 +2,8 @@ package com.wecloud.im.service; ...@@ -2,6 +2,8 @@ package com.wecloud.im.service;
import java.util.List; import java.util.List;
import com.wecloud.im.param.group.MutedMembersParam;
/** /**
* 群服务 * 群服务
* @Author luozh * @Author luozh
...@@ -59,4 +61,13 @@ public interface ImGroupService { ...@@ -59,4 +61,13 @@ public interface ImGroupService {
* @Return * @Return
*/ */
List<String> listGroupMembers(String groupId); List<String> listGroupMembers(String groupId);
/**
* 禁言群成员
* @Author luozh
* @Date 2022年05月16日 07:43:41
* @param param
* @Return
*/
Boolean mutedMembers(MutedMembersParam param);
} }
...@@ -5,6 +5,7 @@ import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils; ...@@ -5,6 +5,7 @@ import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -15,13 +16,16 @@ import org.springframework.stereotype.Service; ...@@ -15,13 +16,16 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
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.ImConversation;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessage; import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
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.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;
...@@ -32,6 +36,7 @@ import com.wecloud.im.service.ImConversationMembersService; ...@@ -32,6 +36,7 @@ import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.service.ImGroupService; 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.ws.enums.MsgTypeEnum; import com.wecloud.im.ws.enums.MsgTypeEnum;
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;
...@@ -251,4 +256,33 @@ public class ImGroupServiceImpl implements ImGroupService { ...@@ -251,4 +256,33 @@ public class ImGroupServiceImpl implements ImGroupService {
return membersList.stream().map(ImConversationMembers::getClientId).collect(Collectors.toList()); return membersList.stream().map(ImConversationMembers::getClientId).collect(Collectors.toList());
} }
@Override
public Boolean mutedMembers(MutedMembersParam param) {
Long appId = SecurityUtils.getCurrentAppId();
ImConversation conversation =
imConversationMapper.selectOne(Wrappers.<ImConversation>lambdaQuery().eq(ImConversation::getFkAppid,
appId).eq(ImConversation::getId, param.getGroupId()));
if (conversation == null) {
throw new BusinessException("群组不存在");
}
ListConversationMembersParam getMutedMemberParam = new ListConversationMembersParam();
getMutedMemberParam.setConversationId(conversation.getId());
getMutedMemberParam.setClientIds(Arrays.asList(param.getUserIds().split(",")));
List<ConversationMemberVo> mutedMembers = conversationMembersService.getImConversationMembersList(getMutedMemberParam);
List<ImConversationMembers> mutedMemberList = Lists.newArrayList();
for (ConversationMemberVo mutedMember : mutedMembers) {
ImConversationMembers saveMutedMember = new ImConversationMembers();
saveMutedMember.setId(mutedMember.getId());
saveMutedMember.setUpdateTime(new Date());
Integer mutedType = 1;
if (param.getMuted()) {
mutedType = 2;
}
saveMutedMember.setMuted(mutedType);
mutedMemberList.add(saveMutedMember);
}
conversationMembersService.updateBatchById(mutedMemberList);
return true;
}
} }
...@@ -136,5 +136,10 @@ public class ResourcePathConstants { ...@@ -136,5 +136,10 @@ public class ResourcePathConstants {
*/ */
public static final String REMARK_FRIEND_REQUEST = "/api/friend/sdk/remark"; public static final String REMARK_FRIEND_REQUEST = "/api/friend/sdk/remark";
/**
* 禁言群成员
*/
public static final String MUTED_GROUP_MEMBER_REQUEST = "/api/group/mutedMembers";
} }
...@@ -268,6 +268,17 @@ public interface WecloudIm { ...@@ -268,6 +268,17 @@ public interface WecloudIm {
Boolean groupSetting(GroupSettingParam param); Boolean groupSetting(GroupSettingParam param);
/** /**
* 禁言群成员
* @Author luozh
* @Date 2022年05月16日 07:27:52
* @param groupId 群组id
* @param muted 禁言/解禁对应true/false
* @param userIds 用户id列表
* @Return
*/
Boolean mutedGroupMember(String groupId, Boolean muted, String userIds);
/**
* 删除好友 * 删除好友
* @Author luozh * @Author luozh
* @Date 2022年05月16日 10:14:07 * @Date 2022年05月16日 10:14:07
......
...@@ -35,6 +35,7 @@ import com.wecloud.im.sdk.model.ListChatRoomMemberRequest; ...@@ -35,6 +35,7 @@ import com.wecloud.im.sdk.model.ListChatRoomMemberRequest;
import com.wecloud.im.sdk.model.ListConversationRequest; import com.wecloud.im.sdk.model.ListConversationRequest;
import com.wecloud.im.sdk.model.ListGroupMembersRequest; import com.wecloud.im.sdk.model.ListGroupMembersRequest;
import com.wecloud.im.sdk.model.ModifyUserRequest; import com.wecloud.im.sdk.model.ModifyUserRequest;
import com.wecloud.im.sdk.model.MutedGroupMemberRequest;
import com.wecloud.im.sdk.model.PageBlacklistRequest; import com.wecloud.im.sdk.model.PageBlacklistRequest;
import com.wecloud.im.sdk.model.PageResult; import com.wecloud.im.sdk.model.PageResult;
import com.wecloud.im.sdk.model.PrivateChatMessage; import com.wecloud.im.sdk.model.PrivateChatMessage;
...@@ -288,6 +289,13 @@ public class WecloudImClient implements WecloudIm { ...@@ -288,6 +289,13 @@ public class WecloudImClient implements WecloudIm {
} }
@Override @Override
public Boolean mutedGroupMember(String groupId, Boolean muted, String userIds) {
MutedGroupMemberRequest mutedGroupMemberRequest =
MutedGroupMemberRequest.builder().groupId(groupId).muted(muted).userIds(userIds).build();
return imGroupOperation.mutedGroupMember(mutedGroupMemberRequest);
}
@Override
public Boolean unfriend(String userId, String friendUserIds) { public Boolean unfriend(String userId, String friendUserIds) {
UnfriendRequest unfriendRequest = UnfriendRequest.builder().userId(userId).friendUserIds(friendUserIds).build(); UnfriendRequest unfriendRequest = UnfriendRequest.builder().userId(userId).friendUserIds(friendUserIds).build();
return imContactsOperation.unfriend(unfriendRequest); return imContactsOperation.unfriend(unfriendRequest);
......
...@@ -17,6 +17,7 @@ import com.wecloud.im.sdk.model.GroupSettingRequest; ...@@ -17,6 +17,7 @@ import com.wecloud.im.sdk.model.GroupSettingRequest;
import com.wecloud.im.sdk.model.JoinGroupRequest; import com.wecloud.im.sdk.model.JoinGroupRequest;
import com.wecloud.im.sdk.model.LeaveGroupRequest; import com.wecloud.im.sdk.model.LeaveGroupRequest;
import com.wecloud.im.sdk.model.ListGroupMembersRequest; import com.wecloud.im.sdk.model.ListGroupMembersRequest;
import com.wecloud.im.sdk.model.MutedGroupMemberRequest;
import static com.wecloud.im.sdk.ResourcePathConstants.CREATE_GROUP_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.CREATE_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.DISMISS_GROUP_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.DISMISS_GROUP_REQUEST;
...@@ -24,6 +25,7 @@ import static com.wecloud.im.sdk.ResourcePathConstants.GROUP_SETTING_REQUEST; ...@@ -24,6 +25,7 @@ import static com.wecloud.im.sdk.ResourcePathConstants.GROUP_SETTING_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.JOIN_GROUP_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.JOIN_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.LEAVE_GROUP_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.LEAVE_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.LIST_GROUP_MEMBERS_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.LIST_GROUP_MEMBERS_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.MUTED_GROUP_MEMBER_REQUEST;
import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotBlank; import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotBlank;
import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotNull; import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotNull;
...@@ -229,4 +231,26 @@ public class WecloudImGroupOperation extends WecloudImOperation { ...@@ -229,4 +231,26 @@ public class WecloudImGroupOperation extends WecloudImOperation {
Object result = doOperation(request); Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Boolean.class); return JSON.parseObject(JSON.toJSONString(result), Boolean.class);
} }
public Boolean mutedGroupMember(MutedGroupMemberRequest mutedGroupMemberRequest) {
String groupId = mutedGroupMemberRequest.getGroupId();
Boolean muted = mutedGroupMemberRequest.getMuted();
String userIds = mutedGroupMemberRequest.getUserIds();
// 必填参数校验
assertParameterNotBlank(groupId, "groupId");
assertParameterNotNull(muted, "muted");
assertParameterNotBlank(userIds, "userIds");
// 校验通过 构建参数
Map<String, String> param = new HashMap<>();
param.put("groupId", groupId);
param.put("muted", muted.toString());
param.put("userIds", userIds);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(MUTED_GROUP_MEMBER_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(mutedGroupMemberRequest).build();
Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Boolean.class);
}
} }
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* @Author luozh
* @Date 2022年05月16日 19:34
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
public class MutedGroupMemberRequest extends WebServiceRequest {
/**
* 群组id
*/
private String groupId;
/**
* 是否禁言
*/
private Boolean muted;
/**
* 用户id
*/
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