Commit 20580f56 by Future

创建聊天室

parent 7e5af2de
......@@ -40,7 +40,7 @@ import java.util.Map;
@Slf4j
@Component
@ActionMapping
@Api(value = "聊天室消息处理", tags = {"聊天室消息处理"})
@Api(value = "ws-聊天室消息处理", tags = {"ws-聊天室消息处理"})
public class ChatRoomAction {
@Autowired
......
......@@ -33,6 +33,9 @@ public class ImConversationCreate extends BaseEntity {
@ApiModelProperty("可选 邀请加入会话的客户端,如创建单聊,则填入对方的clientId")
private List<String> clientIds;
/**
* @see com.wecloud.im.sdk.enums.ChatTypeEnum
*/
@ApiModelProperty("会话属性,1:单聊,2:普通群,3:万人群, 4:聊天室")
@NotNull(message = "会话类型不能为空")
private Integer chatType;
......
......@@ -126,15 +126,19 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional(rollbackFor = Exception.class)
public ImConversationCreateVo createImConversation(ImConversationCreate imConversationCreate) {
if (BaseEnum.valueOf(ChatTypeEnum.class, imConversationCreate.getChatType()) == null) {
log.info("会话类型不存在");
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION);
}
ImClient createClient = contextService.getImClientIfNotNullOrThrow();
if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversationCreate.getChatType())) {
// 聊天室
return this.createChatRoom(imConversationCreate, createClient);
}
if (CollectionUtils.isEmpty(imConversationCreate.getClientIds())) {
log.info("未找到群成员信息");
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION);
}
if (BaseEnum.valueOf(ChatTypeEnum.class, imConversationCreate.getChatType()) == null) {
log.info("会话类型不存在");
throw new BusinessException(ApiCode.PARAMETER_EXCEPTION);
}
// 成员不存在,不能创建会话
for (String clientId : imConversationCreate.getClientIds()) {
ImClient imClient = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
......@@ -1288,4 +1292,47 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
return result;
}
private ImConversationCreateVo createChatRoom(ImConversationCreate imConversationCreate, ImClient createClient) {
// 会话id
Long imConversationId = SnowflakeUtil.getId();
// 创建者
Long creator = createClient.getId();
// 创建会话
ImConversation imConversation = new ImConversation();
imConversation.setId(imConversationId);
imConversation.setCreateTime(new Date());
imConversation.setLastMessage(null);
imConversation.setFkAppid(createClient.getFkAppid());
imConversation.setCreator(creator);
imConversation.setMemberCount(imConversationCreate.getClientIds().size() + 1);
imConversation.setChatType(imConversationCreate.getChatType());
imConversation.setName(imConversationCreate.getName());
imConversation.setSystemFlag(false);
// 拓展数据
String attributesStr = JsonUtils.encodeJson(imConversationCreate.getAttributes());
imConversation.setAttributes(attributesStr);
imConversationService.save(imConversation);
// 将创建者自己添加到会话
Long imConversationMembersId = SnowflakeUtil.getId();
ImConversationMembers imConversationMembers = new ImConversationMembers();
imConversationMembers.setId(imConversationMembersId);
imConversationMembers.setCreateTime(new Date());
imConversationMembers.setUpdateTime(new Date());
imConversationMembers.setFkAppid(createClient.getFkAppid());
imConversationMembers.setFkConversationId(imConversationId);
imConversationMembers.setFkClientId(creator);
imConversationMembers.setClientId(createClient.getClientId());
imConversationMembers.setRole(GroupRoleEnum.OWNER.getCode());
imConversationMembersService.save(imConversationMembers);
ImConversationCreateVo imConversationCreateVo = new ImConversationCreateVo();
imConversationCreateVo.setId(imConversationId);
return imConversationCreateVo;
}
}
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