Commit f850d119 by giaogiao

灵活配置该应用 是否允许重复创建会话

parent 8ff4dadd
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.json.JsonMapper;
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;
...@@ -28,6 +29,8 @@ import io.geekidea.springbootplus.framework.common.api.ApiResult; ...@@ -28,6 +29,8 @@ import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import io.geekidea.springbootplus.framework.shiro.util.SnowflakeUtil; import io.geekidea.springbootplus.framework.shiro.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -91,25 +94,36 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -91,25 +94,36 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
} }
// 判断是否已经存在会话 // shiro线程中获取当前token
// 两个用户如果已经创建过会话,不能重复创建会话 JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// size() == 1 为单聊的时候不允许重复创建 // 根据appKey查询appid
if (imConversationCreate.getClientIds().size() == 1) { ImApplication imApplication = imApplicationService.getOne(
ImClient client2 = imClientService.getOne(new QueryWrapper<ImClient>().lambda() new QueryWrapper<ImApplication>().lambda()
.eq(ImClient::getFkAppid, client.getFkAppid()) .eq(ImApplication::getAppKey, curentJwtToken.getAppKey())
.eq(ImClient::getClientId, imConversationCreate.getClientIds().get(0))); );
// 是否存在重复会话
Integer repetitionConversation = getRepetitionConversation(client.getId(), client2.getId());
if (repetitionConversation != 0) {
log.debug("repetitionConversation != 0");
// 返回已存在的会话id
ImConversation repetitionConversationInfo = imConversationMapper.getRepetitionConversationInfo(client.getId(), client2.getId());
ImConversationCreateVo imConversationCreateVo = new ImConversationCreateVo();
imConversationCreateVo.setId(repetitionConversationInfo.getId());
return ApiResult.ok(imConversationCreateVo); // 该应用 是否允许重复创建会话
if (imApplication.getRepeatSessionStatus() == 0) {
// 判断是否已经存在会话
// 两个用户如果已经创建过会话,不能重复创建会话
// size() == 1 为单聊的时候不允许重复创建
if (imConversationCreate.getClientIds().size() == 1) {
ImClient client2 = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, client.getFkAppid())
.eq(ImClient::getClientId, imConversationCreate.getClientIds().get(0)));
// 是否存在重复会话
Integer repetitionConversation = getRepetitionConversation(client.getId(), client2.getId());
if (repetitionConversation != 0) {
log.debug("repetitionConversation != 0");
// 返回已存在的会话id
ImConversation repetitionConversationInfo = imConversationMapper.getRepetitionConversationInfo(client.getId(), client2.getId());
ImConversationCreateVo imConversationCreateVo = new ImConversationCreateVo();
imConversationCreateVo.setId(repetitionConversationInfo.getId());
return ApiResult.ok(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