Commit d3e7633d by 罗长华

完成groupChatSettingForSdk接口

parent 7f6f9a9f
......@@ -225,6 +225,17 @@ public class ImConversationController extends BaseController {
}
/**
* 群聊设置
*/
@PostMapping("/groupChatSettingForSdk")
@ApiOperation(value = "群聊设置", notes = "")
public ApiResult<Boolean> groupChatSettingForSdk(@RequestBody @Validated GroupChatSettingParam param) {
log.info("群聊设置入参 {}", JSON.toJSONString(param));
Boolean result = imConversationService.groupChatSettingForSdk(param);
return ApiResult.ok(result);
}
/**
* 群头像设置
*/
@PostMapping("/setGroupPortrait")
......
......@@ -98,6 +98,10 @@ import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_SEND_LINK;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_SEND_LINK_CANCEL;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_SEND_PIC;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_SEND_PIC_CANCEL;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_MUTED;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_MUTED_CANCEL;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_NAME_CHANGE;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_SET_GROUP_PORTRAIT;
/**
* 会话表 服务实现类
......@@ -793,7 +797,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMapper.updateById(muteGroupParam);
deleteCacheImConversationById(param.getConversationId());
// 下发事件通知 开启、取消 群禁言
Integer msgType = MutedEnum.NO.getCode().equals(param.getMutedType()) ? MsgTypeEnum.CONVERSATION_MUTED_CANCEL.getUriCode() : MsgTypeEnum.CONVERSATION_MUTED.getUriCode();
Integer msgType = MutedEnum.NO.getCode().equals(param.getMutedType()) ? CONVERSATION_MUTED_CANCEL.getUriCode() : MsgTypeEnum.CONVERSATION_MUTED.getUriCode();
return true;
}
......@@ -1101,28 +1105,48 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
private Boolean groupChatSetting(ImApplication application, ImClient operatorClient, ImConversation conversation, GroupChatSettingParam param) {
// 根据类型处理
GroupChatSettingTypeEnum typeEnum = param.getType();
Boolean on = param.getOn();
switch (typeEnum) {
case FORBID_ADD_FRIEND:
conversation.setForbidAddFriend(param.getOn());
conversation.setForbidAddFriend(on);
break;
case FORBID_SEND_PIC:
conversation.setForbidSendPic(param.getOn());
conversation.setForbidSendPic(on);
break;
case FORBID_SEND_LINK:
conversation.setForbidSendLink(param.getOn());
conversation.setForbidSendLink(on);
break;
case HEAD_PORTRAIT:
conversation.setHeadPortrait(param.getHeadPortrait());
break;
case NAME:
conversation.setName(param.getHeadPortrait());
break;
case MUTED:
int muted = 1;
if (on) {
muted = 2;
}
conversation.setMuted(muted);
break;
default:
throw new BusinessException("设置类型错误");
}
// 更新会话
imConversationMapper.updateById(conversation);
deleteCacheImConversationById(param.getGroupId());
// 发送群聊配置变化消息
MsgTypeEnum msgType = getMsgType(typeEnum, param.getOn());
sendConversationSettingChangeMsg(application, operatorClient, conversation, msgType);
boolean success = updateById(conversation);
if (success) {
// 删除redis中该会话的缓存
deleteCacheImConversationById(conversation.getId());
// 查询该会话所有成员
List<ImConversationMembers> membersList =
imConversationMembersService.list(new QueryWrapper<ImConversationMembers>().lambda().eq(ImConversationMembers::getFkAppid, application.getId())
.eq(ImConversationMembers::getFkConversationId, conversation.getId()).ne(ImConversationMembers::getFkClientId, operatorClient.getId()));
// 发送群聊配置变化消息
MsgTypeEnum msgType = getMsgType(typeEnum, param.getOn());
sendConversationSettingChangeMsg(application, operatorClient, conversation, msgType);
}
return true;
return success;
}
@Override
......@@ -1247,7 +1271,6 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// ws 退出事件通知给房间内其他人 ----------
// 生成消息id
long messageId = SnowflakeUtil.getId();
ImMessage imMessage = MessageBuilder.buildEventMessage(MsgTypeEnum.LEAVE_CONVERSATION, imApplication, currentClient, imConversation, "");
// 遍历发送给已在群内的成员
List<Long> fkClientIds = chatRoomMembers.keySet().stream().map(key -> Long.valueOf(key.split(RedisUtils.SPLIT)[0])).collect(Collectors.toList());
......@@ -1358,6 +1381,19 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
msgType = CONVERSATION_FORBID_SEND_LINK_CANCEL;
}
break;
case HEAD_PORTRAIT:
msgType = CONVERSATION_SET_GROUP_PORTRAIT;
break;
case NAME:
msgType = CONVERSATION_NAME_CHANGE;
break;
case MUTED:
if (on) {
msgType = CONVERSATION_MUTED;
} else {
msgType = CONVERSATION_MUTED_CANCEL;
}
break;
default:
throw new BusinessException("设置类型错误");
}
......
......@@ -114,7 +114,7 @@ public class ResourcePathConstants {
/**
* 群设置请求
*/
public static final String GROUP_SETTING_REQUEST = "";
public static final String GROUP_SETTING_REQUEST = "/api/conversation/groupChatSettingForSdk";
/**
* 用户关系请求
......
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