diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java index 61afb2e..844e4dd 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java @@ -16,6 +16,8 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.im.constant.ImConstant; +import org.dromara.im.domain.ImUser; +import org.dromara.im.mapper.ImUserMapper; import org.dromara.im.mq.ImRedisMQTemplate; import org.springframework.stereotype.Service; import org.dromara.im.domain.bo.ImAgentBo; @@ -44,6 +46,8 @@ public class ImAgentServiceImpl implements IImAgentService { private final ImAgentMapper baseMapper; + private final ImUserMapper userMapper; + /** * 查询代理关联 * @@ -286,8 +290,22 @@ public class ImAgentServiceImpl implements IImAgentService { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(ImAgent::getId, agent.getId()); - wrapper.set(ImAgent::getDefaultKefuId, customerId); - baseMapper.update(new ImAgent(), wrapper); + + if (customerId == null) { + wrapper.setSql("default_kefu_id = NULL"); + } else { + //校验客服是否是该代理下的 + String token = this.getTokenByUserId(); + LambdaQueryWrapper exist = new LambdaQueryWrapper<>(); + exist.eq(ImUser::getUniqueToken, token); + exist.eq(ImUser::getId, customerId); + ImUser existUser = userMapper.selectOne(exist); + if(ObjectUtil.isEmpty(existUser)){ + throw new RuntimeException("异常数据"); + } + wrapper.set(ImAgent::getDefaultKefuId, customerId); + } + baseMapper.update(wrapper); }