Commit ba03e9d5 by 罗长华

会话成员表增加加入会话方式和加入会话msg字段

parent 4aefa1a1
......@@ -14,6 +14,7 @@ import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.im.sdk.enums.JoinConversationTypeEnum;
/**
* 会话成员表
......@@ -89,4 +90,9 @@ public class ImConversationMembers extends BaseEntity {
@TableField("is_top")
private Boolean top;
@ApiModelProperty("加入会话方式编码")
private JoinConversationTypeEnum joinTypeCode;
@ApiModelProperty("加入会话方式信息")
private String joinTypeMsg;
}
......@@ -9,6 +9,8 @@ import lombok.experimental.Accessors;
import java.util.List;
import com.wecloud.im.sdk.enums.JoinConversationTypeEnum;
/**
* @author wei
* @since 2021年11月30日16:57:03
......@@ -26,4 +28,10 @@ public class ImClientToConversation extends BaseEntity {
@ApiModelProperty("要操作的clientId")
private List<String> clientIds;
@ApiModelProperty("加入方式 ")
private JoinConversationTypeEnum joinConversationType;
@ApiModelProperty("邀请人clientId")
private String inviterClientId;
}
package com.wecloud.im.sdk.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
/**
* 加入会话方式枚举
* @Author luozh
* @Date 2022年05月09日 14:58
* @Version 1.0
*/
public enum JoinConversationTypeEnum {
// 会话创建者
OWNER("OWNER", "会话创建者"),
// 被邀请
BE_INVITED("BE_INVITED", "被邀请"),
;
@EnumValue
private final String code;
private final String desc;
JoinConversationTypeEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return this.code;
}
public String getDesc() {
return this.desc;
}
}
......@@ -25,6 +25,8 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
......@@ -67,6 +69,7 @@ import com.wecloud.im.param.add.ServerImConversationCreate;
import com.wecloud.im.sdk.enums.ChatTypeEnum;
import com.wecloud.im.sdk.enums.GroupChatSettingTypeEnum;
import com.wecloud.im.sdk.enums.GroupRoleEnum;
import com.wecloud.im.sdk.enums.JoinConversationTypeEnum;
import com.wecloud.im.sdk.enums.MutedEnum;
import com.wecloud.im.service.ContextService;
import com.wecloud.im.service.ImClientService;
......@@ -86,6 +89,7 @@ import com.wecloud.im.ws.utils.RedisUtils;
import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil;
import static cn.hutool.core.date.DatePattern.CHINESE_DATE_PATTERN;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_ADD_FRIEND;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_ADD_FRIEND_CANCEL;
import static com.wecloud.im.ws.enums.MsgTypeEnum.CONVERSATION_FORBID_SEND_LINK;
......@@ -233,17 +237,34 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversation.setAttributes(attributesStr);
imConversationService.save(imConversation);
Date now = new Date();
// 将创建者自己添加到会话
Long imConversationMembersId = SnowflakeUtil.getId();
ImConversationMembers imConversationMembers = new ImConversationMembers();
imConversationMembers.setId(imConversationMembersId);
imConversationMembers.setCreateTime(new Date());
imConversationMembers.setUpdateTime(new Date());
imConversationMembers.setCreateTime(now);
imConversationMembers.setUpdateTime(now);
imConversationMembers.setFkAppid(createClient.getFkAppid());
imConversationMembers.setFkConversationId(imConversationId);
imConversationMembers.setFkClientId(creator);
imConversationMembers.setClientId(createClient.getClientId());
imConversationMembers.setRole(GroupRoleEnum.OWNER.getCode());
// 会话拥有者加入会话方式固定
imConversationMembers.setJoinTypeCode(JoinConversationTypeEnum.OWNER);
String joinTypeMsg = "";
if (ChatTypeEnum.SINGLE.getCode().equals(imConversationCreate.getChatType())) {
joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>创建了该会话";
} else if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(imConversationCreate.getChatType()) || ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversationCreate.getChatType())) {
joinTypeMsg = joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>创建了该群聊";
;
} else if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversationCreate.getChatType())) {
joinTypeMsg = joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>创建了该聊天室";
;
}
imConversationMembers.setJoinTypeMsg(joinTypeMsg);
imConversationMembersService.save(imConversationMembers);
// 将他人添加到会话
......@@ -260,6 +281,22 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMembers2.setFkClientId(client2.getId());
imConversationMembers2.setClientId(client2.getClientId());
imConversationMembers2.setRole(GroupRoleEnum.NORMAL.getCode());
// 加入会话方式固定为 邀请
imConversationMembers.setJoinTypeCode(JoinConversationTypeEnum.BE_INVITED);
String memberJoinTypeMsg = "";
if (ChatTypeEnum.SINGLE.getCode().equals(imConversationCreate.getChatType())) {
memberJoinTypeMsg = "由 <@>" + createClient.getClientId()
+ "<@>邀请加入该会话";
} else if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(imConversationCreate.getChatType()) || ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversationCreate.getChatType())) {
memberJoinTypeMsg = joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>邀请进聊";
;
} else if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversationCreate.getChatType())) {
memberJoinTypeMsg = joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>邀请进入聊天室";
;
}
imConversationMembersService.save(imConversationMembers2);
if (imConversationCreate.getClientIds().size() > 1) {
// 给被拉入群的成员下发事件消息 -- 单聊则不下发
......@@ -367,16 +404,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationService.save(imConversation);
// 将创建者自己添加到会话
Date now = new Date();
Long imConversationMembersId = SnowflakeUtil.getId();
ImConversationMembers conversationCreator = new ImConversationMembers();
conversationCreator.setId(imConversationMembersId);
conversationCreator.setCreateTime(new Date());
conversationCreator.setUpdateTime(new Date());
conversationCreator.setCreateTime(now);
conversationCreator.setUpdateTime(now);
conversationCreator.setFkAppid(appId);
conversationCreator.setFkConversationId(imConversationId);
conversationCreator.setFkClientId(creatorImClientId);
conversationCreator.setClientId(creator.getClientId());
conversationCreator.setRole(GroupRoleEnum.OWNER.getCode());
conversationCreator.setJoinTypeCode(JoinConversationTypeEnum.OWNER);
String joinTypeMsg = "";
if (ChatTypeEnum.SINGLE.getCode().equals(imConversationCreate.getChatType())) {
joinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + creatorImClientId
+ "<@>创建了该会话";
}
imConversationMembersService.save(conversationCreator);
// 将他人添加到会话
......@@ -390,6 +434,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMember.setFkClientId(member.getId());
imConversationMember.setClientId(member.getClientId());
imConversationMember.setRole(GroupRoleEnum.NORMAL.getCode());
// 加入会话方式固定为 邀请
imConversationMember.setJoinTypeCode(JoinConversationTypeEnum.BE_INVITED);
String memberJoinTypeMsg = "";
if (ChatTypeEnum.SINGLE.getCode().equals(imConversationCreate.getChatType())) {
memberJoinTypeMsg = "由 <@>" + creatorImClientId
+ "<@>邀请加入该会话";
}
imConversationMembersService.save(imConversationMember);
if (imConversationCreate.getMembers().size() > 1) {
// 给被拉入群的成员下发事件消息 -- 单聊则不下发
......@@ -431,6 +483,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// 根据appId查询application
ImApplication imApplication = contextService.getImApplicationIfNotNullOrThrow(createClient.getFkAppid());
ImConversation imConversation = getById(imClientToConversation.getConversationId());
ImClient imClientSender = imClientService.getCurrentClient();
// 查询该会话所有成员
......@@ -467,7 +521,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
if (members != null) {
continue;
}
Date now = new Date();
Long imConversationMembersId2 = SnowflakeUtil.getId();
ImConversationMembers imConversationMembers2 = new ImConversationMembers();
imConversationMembers2.setUpdateTime(new Date());
......@@ -479,6 +533,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMembers2.setClientId(clientToConversation.getClientId());
imConversationMembers2.setMuted(MutedEnum.NO.getCode());
imConversationMembers2.setRole(GroupRoleEnum.NORMAL.getCode());
// 加入会话方式
// 加入会话方式固定为 邀请
imConversationMembers2.setJoinTypeCode(JoinConversationTypeEnum.BE_INVITED);
String memberJoinTypeMsg = "";
if (ChatTypeEnum.SINGLE.getCode().equals(imConversation.getChatType())) {
memberJoinTypeMsg = "由 <@>" + createClient.getClientId()
+ "<@>邀请加入该会话";
} 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()
+ "<@>邀请进聊";
;
} else if (ChatTypeEnum.CHAT_ROOM.getCode().equals(imConversation.getChatType())) {
memberJoinTypeMsg = DateUtil.format(now, CHINESE_DATE_PATTERN) + " <@>" + createClient.getClientId()
+ "<@>邀请进入聊天室";
;
}
imConversationMembersService.save(imConversationMembers2);
needAddCount++;
......@@ -1265,7 +1336,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
if (StringUtils.isBlank(param.getConversationIds())) {
throw new BusinessException("会话id列表不可为空");
}
List<Long> conversationIds = (List)JSON.parse(param.getConversationIds());
List<Long> conversationIds = (List) JSON.parse(param.getConversationIds());
List<ConversationVo> conversationVoList = Lists.newArrayList();
List<ImConversation> conversations = imConversationMapper.selectList(
new QueryWrapper<ImConversation>().lambda()
......@@ -1489,4 +1560,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
channelSender.sendMsg(responseModel, receiverClientId);
}
private String buildJoinConversationTypeMsg(JoinConversationTypeEnum joinConversationType, String inviterClientId) {
return "";
}
}
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