Commit 8c1ad78b by Future

群头像设置接口提供

parent 953bf923
...@@ -12,6 +12,7 @@ import com.wecloud.im.param.ListConversationParam; ...@@ -12,6 +12,7 @@ import com.wecloud.im.param.ListConversationParam;
import com.wecloud.im.param.MutedGroupMemberParam; import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam; import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetGroupPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
...@@ -25,7 +26,6 @@ import com.wecloud.im.vo.ConversationVo; ...@@ -25,7 +26,6 @@ import com.wecloud.im.vo.ConversationVo;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
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;
...@@ -33,8 +33,6 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -33,8 +33,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
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.RequestBody;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -250,6 +248,19 @@ public class ConversationAction { ...@@ -250,6 +248,19 @@ public class ConversationAction {
} }
/** /**
* 群头像设置
*/
@ActionMapping("/setGroupPortrait")
@ApiOperation(value = "群头像设置", notes = "权限:群主和管理员有权限操作")
public WsResponse<Map<String, Boolean>> setGroupPortrait(@Validated SetGroupPortraitParam data) {
log.info("群头像设置入参 {}", JSON.toJSONString(data));
Boolean r = imConversationService.setGroupPortrait(data);
Map<String, Boolean> result = new HashMap<>();
result.put("result", r);
return WsResponse.ok(result);
}
/**
* 用户进入聊天室 * 用户进入聊天室
*/ */
@ActionMapping("/intoChatRoom") @ActionMapping("/intoChatRoom")
......
...@@ -11,6 +11,7 @@ import com.wecloud.im.param.ListConversationParam; ...@@ -11,6 +11,7 @@ import com.wecloud.im.param.ListConversationParam;
import com.wecloud.im.param.MutedGroupMemberParam; import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam; import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetGroupPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
...@@ -221,6 +222,17 @@ public class ImConversationController extends BaseController { ...@@ -221,6 +222,17 @@ public class ImConversationController extends BaseController {
return ApiResult.ok(result); return ApiResult.ok(result);
} }
/**
* 群头像设置
*/
@PostMapping("/setGroupPortrait")
@ApiOperation(value = "群头像设置", notes = "权限:群主和管理员有权限操作")
public ApiResult<Boolean> setGroupPortrait(@RequestBody @Validated SetGroupPortraitParam param) {
log.info("群头像设置入参 {}", JSON.toJSONString(param));
Boolean result = imConversationService.setGroupPortrait(param);
return ApiResult.ok(result);
}
/** /**
* 用户进入聊天室 * 用户进入聊天室
......
...@@ -63,6 +63,9 @@ public class ImConversation extends BaseEntity { ...@@ -63,6 +63,9 @@ public class ImConversation extends BaseEntity {
@ApiModelProperty("可选 对话的名字,可为群组命名。") @ApiModelProperty("可选 对话的名字,可为群组命名。")
private String name; private String name;
@ApiModelProperty("群头像")
private String groupPortrait;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。") @ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes; private String attributes;
......
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @Author Future
* @Date 2022/5/11 19:19
* @Description 设置群头像入参
*/
@Data
public class SetGroupPortraitParam {
@NotNull
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("群头像图片地址")
private String groupPortrait;
}
package com.wecloud.im.service; package com.wecloud.im.service;
import com.wecloud.im.param.SetGroupPortraitParam;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -225,13 +226,20 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -225,13 +226,20 @@ public interface ImConversationService extends BaseService<ImConversation> {
Long getRepetitionConversationAttributes(Long clientId1, Long clientId2, String attributes); Long getRepetitionConversationAttributes(Long clientId1, Long clientId2, String attributes);
/** /**
* 群禁言 * 群聊设置
* @param param * @param param
* @return * @return
*/ */
Boolean groupChatSetting(GroupChatSettingParam param); Boolean groupChatSetting(GroupChatSettingParam param);
/** /**
* 群头像设置
* @param param
* @return
*/
Boolean setGroupPortrait(SetGroupPortraitParam param);
/**
* 用户主动进入聊天室 * 用户主动进入聊天室
* @param param * @param param
* @return * @return
......
...@@ -32,6 +32,7 @@ import com.wecloud.im.param.ListConversationParam; ...@@ -32,6 +32,7 @@ import com.wecloud.im.param.ListConversationParam;
import com.wecloud.im.param.MutedGroupMemberParam; import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam; import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetGroupPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
...@@ -1096,9 +1097,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1096,9 +1097,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
// 保存事件消息 // 保存事件消息
ImMessage imMessage = new ImMessage(); ImMessage imMessage = new ImMessage();
HashMap<String, String> content = Maps.newHashMap(); HashMap<String, Object> contentMap = Maps.newHashMap();
content.put("attributes", imConversation.getAttributes()); contentMap.put("attributes", imConversation.getAttributes());
imMessage.setContent(JsonUtils.encodeJson(content)); imMessage.setContent(JsonUtils.encodeJson(contentMap));
imMessage.setId(SnowflakeUtil.getId()); imMessage.setId(SnowflakeUtil.getId());
imMessage.setMsgType(MsgTypeEnum.CONVERSATION_EXPAND_FIELD_CHANGE.getUriCode()); imMessage.setMsgType(MsgTypeEnum.CONVERSATION_EXPAND_FIELD_CHANGE.getUriCode());
imMessage.setCreateTime(new Date()); imMessage.setCreateTime(new Date());
...@@ -1113,7 +1114,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1113,7 +1114,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
for (String key : chatRoomMembers.keySet()) { for (String key : chatRoomMembers.keySet()) {
Long fkClientId = Long.valueOf(key.split(RedisUtils.SPLIT)[0]); Long fkClientId = Long.valueOf(key.split(RedisUtils.SPLIT)[0]);
sendEventMsgToMember(imConversation.getId(), currentClient.getFkAppid(), currentClient.getClientId(), sendEventMsgToMember(imConversation.getId(), currentClient.getFkAppid(), currentClient.getClientId(),
fkClientId, null, imMessage); fkClientId, contentMap, imMessage);
} }
} }
...@@ -1284,6 +1285,39 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1284,6 +1285,39 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override @Override
public Boolean setGroupPortrait(SetGroupPortraitParam param) {
// 获取当前client
ImClient currentClient = contextService.getImClientIfNotNullOrThrow();
if (!imConversationService.isBelongToRole(currentClient.getClientId(), param.getConversationId(),
Lists.newArrayList(GroupRoleEnum.OWNER.getCode(), GroupRoleEnum.ADMIN.getCode()))) {
// 当前操作人不属于群主或管理人员
throw new BusinessException("操作人既不是群主也不是群管理员,无权限操作");
}
ImConversation imConversation = imConversationService.getById(param.getConversationId());
imConversation.setGroupPortrait(param.getGroupPortrait());
boolean success = imConversationService.updateById(imConversation);
if (success) {
// 删除redis中该会话的缓存
deleteCacheImConversationById(param.getConversationId());
// 查询该会话所有成员
List<ImConversationMembers> membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkAppid, currentClient.getFkAppid())
.eq(ImConversationMembers::getFkConversationId, param.getConversationId())
.ne(ImConversationMembers::getFkClientId, currentClient.getId())
);
ImMessage message = new ImMessage();
message.setWithdraw(Boolean.FALSE);
message.setEvent(Boolean.TRUE);
message.setMsgType(MsgTypeEnum.CONVERSATION_SET_GROUP_PORTRAIT.getUriCode());
sendMsgToMembers(param.getConversationId(), membersList, currentClient.getFkAppid(), currentClient.getClientId(), null, message);
} else {
throw new BusinessException("修改错误");
}
return true;
}
@Override
public Boolean intoChatRoom(IntoChatRoomParam param) { public Boolean intoChatRoom(IntoChatRoomParam param) {
if (param.getPlatform() == null) { if (param.getPlatform() == null) {
throw new BusinessException("平台入参不可为空"); throw new BusinessException("平台入参不可为空");
......
...@@ -89,6 +89,9 @@ public enum MsgTypeEnum { ...@@ -89,6 +89,9 @@ public enum MsgTypeEnum {
// 取消禁止群成员发链接 // 取消禁止群成员发链接
CONVERSATION_FORBID_SEND_LINK_CANCEL(-1029), CONVERSATION_FORBID_SEND_LINK_CANCEL(-1029),
// 修改群头像
CONVERSATION_SET_GROUP_PORTRAIT(-1031),
; ;
private final int uriCode; private final int uriCode;
......
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