32 changed files with 3744 additions and 1985 deletions
@ -0,0 +1,50 @@
|
||||
package net.sopod.soim.das.user.api.service; |
||||
|
||||
import net.sopod.soim.das.user.api.model.entity.ImUser; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* FriendDas |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 15:45 |
||||
*/ |
||||
public interface FriendDas { |
||||
|
||||
/** |
||||
* 新增好友 |
||||
* |
||||
* @param uid 用户id |
||||
* @param fid 好友id |
||||
* @return 影响行数 |
||||
*/ |
||||
int insert(Long uid, Long fid); |
||||
|
||||
/** |
||||
* 好友是否存在 |
||||
* |
||||
* @param uid 用户id |
||||
* @param fid 好友id |
||||
* @return 影响行数 |
||||
*/ |
||||
Boolean isExists(Long uid, Long fid); |
||||
|
||||
/** |
||||
* 删除好友 |
||||
* |
||||
* @param uid 用户id |
||||
* @param fid 好友id |
||||
* @return 影响行数 |
||||
*/ |
||||
int remove(Long uid, Long fid); |
||||
|
||||
/** |
||||
* 查询所有好友 |
||||
* |
||||
* @param uid 主键 |
||||
* @return 好友列表 |
||||
*/ |
||||
List<ImUser> queryAllFriend(Long uid); |
||||
|
||||
} |
||||
@ -0,0 +1,80 @@
|
||||
package net.sopod.soim.das.user.service; |
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import lombok.AllArgsConstructor; |
||||
import net.sopod.soim.common.constant.LogicConsts; |
||||
import net.sopod.soim.common.util.Collects; |
||||
import net.sopod.soim.common.util.ImClock; |
||||
import net.sopod.soim.das.user.api.model.entity.ImFriend; |
||||
import net.sopod.soim.das.user.api.model.entity.ImUser; |
||||
import net.sopod.soim.das.user.api.service.FriendDas; |
||||
import net.sopod.soim.das.user.dao.FriendMapper; |
||||
import net.sopod.soim.das.user.dao.UserMapper; |
||||
import org.apache.dubbo.config.annotation.DubboService; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* FriendDasImpl |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 16:07 |
||||
*/ |
||||
@DubboService |
||||
@AllArgsConstructor |
||||
public class FriendDasImpl implements FriendDas { |
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(FriendDasImpl.class); |
||||
|
||||
private FriendMapper friendMapper; |
||||
|
||||
private UserMapper userMapper; |
||||
|
||||
@Override |
||||
public int insert(Long uid, Long fid) { |
||||
ImFriend imFriend = new ImFriend() |
||||
.setUid(uid) |
||||
.setFid(fid) |
||||
.setStatus(1) |
||||
.setCreateTime(ImClock.date()); |
||||
return friendMapper.insert(imFriend); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean isExists(Long uid, Long fid) { |
||||
LambdaQueryWrapper<ImFriend> friendQuery = new QueryWrapper<ImFriend>().lambda() |
||||
.eq(ImFriend::getUid, uid) |
||||
.eq(ImFriend::getFid, fid) |
||||
.eq(ImFriend::getStatus, 1); |
||||
List<ImFriend> imFriends = friendMapper.selectList(friendQuery); |
||||
if (Collects.isEmpty(imFriends)) { |
||||
return Boolean.FALSE; |
||||
} |
||||
if (imFriends.size() > 1) { |
||||
logger.warn("重复的好友数据: user={}, friend={}", uid, fid); |
||||
} |
||||
return Boolean.TRUE; |
||||
} |
||||
|
||||
@Override |
||||
public int remove(Long uid, Long fid) { |
||||
LambdaQueryWrapper<ImFriend> friendQuery = new QueryWrapper<ImFriend>().lambda() |
||||
.eq(ImFriend::getUid, uid) |
||||
.eq(ImFriend::getFid, fid) |
||||
.eq(ImFriend::getStatus, 1); |
||||
return friendMapper.update(new ImFriend().setStatus(0), friendQuery); |
||||
} |
||||
|
||||
@Override |
||||
public List<ImUser> queryAllFriend(Long uid) { |
||||
List<Long> fids = friendMapper.selectAllFriendId(uid); |
||||
LambdaQueryWrapper<ImUser> userQuery = new QueryWrapper<ImUser>().lambda() |
||||
.in(ImUser::getId, fids) |
||||
.eq(ImUser::getStatus, LogicConsts.STATUS_NORMAL); |
||||
return userMapper.selectList(userQuery); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,50 @@
|
||||
package net.sopod.soim.entry.handlers.user; |
||||
|
||||
import com.google.protobuf.MessageLite; |
||||
import net.sopod.soim.data.msg.user.AccountSearch; |
||||
import net.sopod.soim.data.msg.user.Friend; |
||||
import net.sopod.soim.entry.server.handler.AccountMessageHandler; |
||||
import net.sopod.soim.entry.server.session.Account; |
||||
import net.sopod.soim.logic.api.user.service.FriendService; |
||||
import org.apache.dubbo.config.annotation.DubboReference; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.concurrent.CompletableFuture; |
||||
|
||||
/** |
||||
* ReqAddFriendHandler |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 15:39 |
||||
*/ |
||||
@Service |
||||
public class ReqAddFriendHandler extends AccountMessageHandler<Friend.ReqAddFriend> { |
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ReqAddFriendHandler.class); |
||||
|
||||
@DubboReference |
||||
private FriendService friendService; |
||||
|
||||
@Override |
||||
public MessageLite handle(Account account, Friend.ReqAddFriend req) { |
||||
// 好友id
|
||||
long fid = req.getFid(); |
||||
long uid = account.getUid(); |
||||
logger.info("添加好友: {}, {}", uid, fid); |
||||
CompletableFuture<String> addFuture = friendService.addFriend(uid, fid); |
||||
addFuture.whenComplete((msg, err) -> { |
||||
if (err != null) { |
||||
logger.error("添加好友失败:", err); |
||||
return; |
||||
} |
||||
Friend.ResAddFriend res = Friend.ResAddFriend.newBuilder() |
||||
.setSuccess(msg == null).setMsg(msg).build(); |
||||
account.writeNow(res); |
||||
logger.info("添加好友成功"); |
||||
}); |
||||
return null; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,29 @@
|
||||
package net.sopod.soim.entry.handlers.user; |
||||
|
||||
import com.google.protobuf.MessageLite; |
||||
import net.sopod.soim.data.msg.user.Friend; |
||||
import net.sopod.soim.entry.server.handler.AccountMessageHandler; |
||||
import net.sopod.soim.entry.server.session.Account; |
||||
import net.sopod.soim.logic.api.user.service.FriendService; |
||||
import org.apache.dubbo.config.annotation.DubboReference; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* ReqFriendListHandler |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 17:42 |
||||
*/ |
||||
@Service |
||||
public class ReqFriendListHandler extends AccountMessageHandler<Friend.ReqFriendList> { |
||||
|
||||
@DubboReference |
||||
private FriendService friendService; |
||||
|
||||
@Override |
||||
public MessageLite handle(Account account, Friend.ReqFriendList req) { |
||||
|
||||
return null; |
||||
} |
||||
|
||||
} |
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,839 @@
|
||||
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
// source: proto/user/UserMsg.proto
|
||||
|
||||
package net.sopod.soim.data.msg.user; |
||||
|
||||
public final class UserMsg { |
||||
private UserMsg() {} |
||||
public static void registerAllExtensions( |
||||
com.google.protobuf.ExtensionRegistryLite registry) { |
||||
} |
||||
|
||||
public static void registerAllExtensions( |
||||
com.google.protobuf.ExtensionRegistry registry) { |
||||
registerAllExtensions( |
||||
(com.google.protobuf.ExtensionRegistryLite) registry); |
||||
} |
||||
public interface UserInfoOrBuilder extends |
||||
// @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.UserInfo)
|
||||
com.google.protobuf.MessageOrBuilder { |
||||
|
||||
/** |
||||
* <code>int64 uid = 1;</code> |
||||
* @return The uid. |
||||
*/ |
||||
long getUid(); |
||||
|
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The account. |
||||
*/ |
||||
java.lang.String getAccount(); |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The bytes for account. |
||||
*/ |
||||
com.google.protobuf.ByteString |
||||
getAccountBytes(); |
||||
|
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The nickname. |
||||
*/ |
||||
java.lang.String getNickname(); |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The bytes for nickname. |
||||
*/ |
||||
com.google.protobuf.ByteString |
||||
getNicknameBytes(); |
||||
} |
||||
/** |
||||
* Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo} |
||||
*/ |
||||
public static final class UserInfo extends |
||||
com.google.protobuf.GeneratedMessageV3 implements |
||||
// @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.UserInfo)
|
||||
UserInfoOrBuilder { |
||||
private static final long serialVersionUID = 0L; |
||||
// Use UserInfo.newBuilder() to construct.
|
||||
private UserInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { |
||||
super(builder); |
||||
} |
||||
private UserInfo() { |
||||
account_ = ""; |
||||
nickname_ = ""; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
@SuppressWarnings({"unused"}) |
||||
protected java.lang.Object newInstance( |
||||
UnusedPrivateParameter unused) { |
||||
return new UserInfo(); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public final com.google.protobuf.UnknownFieldSet |
||||
getUnknownFields() { |
||||
return this.unknownFields; |
||||
} |
||||
private UserInfo( |
||||
com.google.protobuf.CodedInputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
this(); |
||||
if (extensionRegistry == null) { |
||||
throw new java.lang.NullPointerException(); |
||||
} |
||||
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
||||
com.google.protobuf.UnknownFieldSet.newBuilder(); |
||||
try { |
||||
boolean done = false; |
||||
while (!done) { |
||||
int tag = input.readTag(); |
||||
switch (tag) { |
||||
case 0: |
||||
done = true; |
||||
break; |
||||
case 8: { |
||||
|
||||
uid_ = input.readInt64(); |
||||
break; |
||||
} |
||||
case 18: { |
||||
java.lang.String s = input.readStringRequireUtf8(); |
||||
|
||||
account_ = s; |
||||
break; |
||||
} |
||||
case 26: { |
||||
java.lang.String s = input.readStringRequireUtf8(); |
||||
|
||||
nickname_ = s; |
||||
break; |
||||
} |
||||
default: { |
||||
if (!parseUnknownField( |
||||
input, unknownFields, extensionRegistry, tag)) { |
||||
done = true; |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) { |
||||
throw e.setUnfinishedMessage(this); |
||||
} catch (java.io.IOException e) { |
||||
throw new com.google.protobuf.InvalidProtocolBufferException( |
||||
e).setUnfinishedMessage(this); |
||||
} finally { |
||||
this.unknownFields = unknownFields.build(); |
||||
makeExtensionsImmutable(); |
||||
} |
||||
} |
||||
public static final com.google.protobuf.Descriptors.Descriptor |
||||
getDescriptor() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable |
||||
internalGetFieldAccessorTable() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable |
||||
.ensureFieldAccessorsInitialized( |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo.class, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder.class); |
||||
} |
||||
|
||||
public static final int UID_FIELD_NUMBER = 1; |
||||
private long uid_; |
||||
/** |
||||
* <code>int64 uid = 1;</code> |
||||
* @return The uid. |
||||
*/ |
||||
@java.lang.Override |
||||
public long getUid() { |
||||
return uid_; |
||||
} |
||||
|
||||
public static final int ACCOUNT_FIELD_NUMBER = 2; |
||||
private volatile java.lang.Object account_; |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The account. |
||||
*/ |
||||
@java.lang.Override |
||||
public java.lang.String getAccount() { |
||||
java.lang.Object ref = account_; |
||||
if (ref instanceof java.lang.String) { |
||||
return (java.lang.String) ref; |
||||
} else { |
||||
com.google.protobuf.ByteString bs = |
||||
(com.google.protobuf.ByteString) ref; |
||||
java.lang.String s = bs.toStringUtf8(); |
||||
account_ = s; |
||||
return s; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The bytes for account. |
||||
*/ |
||||
@java.lang.Override |
||||
public com.google.protobuf.ByteString |
||||
getAccountBytes() { |
||||
java.lang.Object ref = account_; |
||||
if (ref instanceof java.lang.String) { |
||||
com.google.protobuf.ByteString b = |
||||
com.google.protobuf.ByteString.copyFromUtf8( |
||||
(java.lang.String) ref); |
||||
account_ = b; |
||||
return b; |
||||
} else { |
||||
return (com.google.protobuf.ByteString) ref; |
||||
} |
||||
} |
||||
|
||||
public static final int NICKNAME_FIELD_NUMBER = 3; |
||||
private volatile java.lang.Object nickname_; |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The nickname. |
||||
*/ |
||||
@java.lang.Override |
||||
public java.lang.String getNickname() { |
||||
java.lang.Object ref = nickname_; |
||||
if (ref instanceof java.lang.String) { |
||||
return (java.lang.String) ref; |
||||
} else { |
||||
com.google.protobuf.ByteString bs = |
||||
(com.google.protobuf.ByteString) ref; |
||||
java.lang.String s = bs.toStringUtf8(); |
||||
nickname_ = s; |
||||
return s; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The bytes for nickname. |
||||
*/ |
||||
@java.lang.Override |
||||
public com.google.protobuf.ByteString |
||||
getNicknameBytes() { |
||||
java.lang.Object ref = nickname_; |
||||
if (ref instanceof java.lang.String) { |
||||
com.google.protobuf.ByteString b = |
||||
com.google.protobuf.ByteString.copyFromUtf8( |
||||
(java.lang.String) ref); |
||||
nickname_ = b; |
||||
return b; |
||||
} else { |
||||
return (com.google.protobuf.ByteString) ref; |
||||
} |
||||
} |
||||
|
||||
private byte memoizedIsInitialized = -1; |
||||
@java.lang.Override |
||||
public final boolean isInitialized() { |
||||
byte isInitialized = memoizedIsInitialized; |
||||
if (isInitialized == 1) return true; |
||||
if (isInitialized == 0) return false; |
||||
|
||||
memoizedIsInitialized = 1; |
||||
return true; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public void writeTo(com.google.protobuf.CodedOutputStream output) |
||||
throws java.io.IOException { |
||||
if (uid_ != 0L) { |
||||
output.writeInt64(1, uid_); |
||||
} |
||||
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) { |
||||
com.google.protobuf.GeneratedMessageV3.writeString(output, 2, account_); |
||||
} |
||||
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) { |
||||
com.google.protobuf.GeneratedMessageV3.writeString(output, 3, nickname_); |
||||
} |
||||
unknownFields.writeTo(output); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public int getSerializedSize() { |
||||
int size = memoizedSize; |
||||
if (size != -1) return size; |
||||
|
||||
size = 0; |
||||
if (uid_ != 0L) { |
||||
size += com.google.protobuf.CodedOutputStream |
||||
.computeInt64Size(1, uid_); |
||||
} |
||||
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) { |
||||
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, account_); |
||||
} |
||||
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) { |
||||
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, nickname_); |
||||
} |
||||
size += unknownFields.getSerializedSize(); |
||||
memoizedSize = size; |
||||
return size; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public boolean equals(final java.lang.Object obj) { |
||||
if (obj == this) { |
||||
return true; |
||||
} |
||||
if (!(obj instanceof net.sopod.soim.data.msg.user.UserMsg.UserInfo)) { |
||||
return super.equals(obj); |
||||
} |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo other = (net.sopod.soim.data.msg.user.UserMsg.UserInfo) obj; |
||||
|
||||
if (getUid() |
||||
!= other.getUid()) return false; |
||||
if (!getAccount() |
||||
.equals(other.getAccount())) return false; |
||||
if (!getNickname() |
||||
.equals(other.getNickname())) return false; |
||||
if (!unknownFields.equals(other.unknownFields)) return false; |
||||
return true; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public int hashCode() { |
||||
if (memoizedHashCode != 0) { |
||||
return memoizedHashCode; |
||||
} |
||||
int hash = 41; |
||||
hash = (19 * hash) + getDescriptor().hashCode(); |
||||
hash = (37 * hash) + UID_FIELD_NUMBER; |
||||
hash = (53 * hash) + com.google.protobuf.Internal.hashLong( |
||||
getUid()); |
||||
hash = (37 * hash) + ACCOUNT_FIELD_NUMBER; |
||||
hash = (53 * hash) + getAccount().hashCode(); |
||||
hash = (37 * hash) + NICKNAME_FIELD_NUMBER; |
||||
hash = (53 * hash) + getNickname().hashCode(); |
||||
hash = (29 * hash) + unknownFields.hashCode(); |
||||
memoizedHashCode = hash; |
||||
return hash; |
||||
} |
||||
|
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
java.nio.ByteBuffer data) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
java.nio.ByteBuffer data, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data, extensionRegistry); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
com.google.protobuf.ByteString data) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
com.google.protobuf.ByteString data, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data, extensionRegistry); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(byte[] data) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
byte[] data, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return PARSER.parseFrom(data, extensionRegistry); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(java.io.InputStream input) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseWithIOException(PARSER, input); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
java.io.InputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseWithIOException(PARSER, input, extensionRegistry); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseDelimitedFrom(java.io.InputStream input) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseDelimitedWithIOException(PARSER, input); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseDelimitedFrom( |
||||
java.io.InputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseDelimitedWithIOException(PARSER, input, extensionRegistry); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
com.google.protobuf.CodedInputStream input) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseWithIOException(PARSER, input); |
||||
} |
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom( |
||||
com.google.protobuf.CodedInputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws java.io.IOException { |
||||
return com.google.protobuf.GeneratedMessageV3 |
||||
.parseWithIOException(PARSER, input, extensionRegistry); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public Builder newBuilderForType() { return newBuilder(); } |
||||
public static Builder newBuilder() { |
||||
return DEFAULT_INSTANCE.toBuilder(); |
||||
} |
||||
public static Builder newBuilder(net.sopod.soim.data.msg.user.UserMsg.UserInfo prototype) { |
||||
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); |
||||
} |
||||
@java.lang.Override |
||||
public Builder toBuilder() { |
||||
return this == DEFAULT_INSTANCE |
||||
? new Builder() : new Builder().mergeFrom(this); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
protected Builder newBuilderForType( |
||||
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { |
||||
Builder builder = new Builder(parent); |
||||
return builder; |
||||
} |
||||
/** |
||||
* Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo} |
||||
*/ |
||||
public static final class Builder extends |
||||
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements |
||||
// @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.UserInfo)
|
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder { |
||||
public static final com.google.protobuf.Descriptors.Descriptor |
||||
getDescriptor() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable |
||||
internalGetFieldAccessorTable() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable |
||||
.ensureFieldAccessorsInitialized( |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo.class, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder.class); |
||||
} |
||||
|
||||
// Construct using net.sopod.soim.data.msg.user.UserMsg.UserInfo.newBuilder()
|
||||
private Builder() { |
||||
maybeForceBuilderInitialization(); |
||||
} |
||||
|
||||
private Builder( |
||||
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { |
||||
super(parent); |
||||
maybeForceBuilderInitialization(); |
||||
} |
||||
private void maybeForceBuilderInitialization() { |
||||
if (com.google.protobuf.GeneratedMessageV3 |
||||
.alwaysUseFieldBuilders) { |
||||
} |
||||
} |
||||
@java.lang.Override |
||||
public Builder clear() { |
||||
super.clear(); |
||||
uid_ = 0L; |
||||
|
||||
account_ = ""; |
||||
|
||||
nickname_ = ""; |
||||
|
||||
return this; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public com.google.protobuf.Descriptors.Descriptor |
||||
getDescriptorForType() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstanceForType() { |
||||
return net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance(); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public net.sopod.soim.data.msg.user.UserMsg.UserInfo build() { |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo result = buildPartial(); |
||||
if (!result.isInitialized()) { |
||||
throw newUninitializedMessageException(result); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public net.sopod.soim.data.msg.user.UserMsg.UserInfo buildPartial() { |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo result = new net.sopod.soim.data.msg.user.UserMsg.UserInfo(this); |
||||
result.uid_ = uid_; |
||||
result.account_ = account_; |
||||
result.nickname_ = nickname_; |
||||
onBuilt(); |
||||
return result; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public Builder clone() { |
||||
return super.clone(); |
||||
} |
||||
@java.lang.Override |
||||
public Builder setField( |
||||
com.google.protobuf.Descriptors.FieldDescriptor field, |
||||
java.lang.Object value) { |
||||
return super.setField(field, value); |
||||
} |
||||
@java.lang.Override |
||||
public Builder clearField( |
||||
com.google.protobuf.Descriptors.FieldDescriptor field) { |
||||
return super.clearField(field); |
||||
} |
||||
@java.lang.Override |
||||
public Builder clearOneof( |
||||
com.google.protobuf.Descriptors.OneofDescriptor oneof) { |
||||
return super.clearOneof(oneof); |
||||
} |
||||
@java.lang.Override |
||||
public Builder setRepeatedField( |
||||
com.google.protobuf.Descriptors.FieldDescriptor field, |
||||
int index, java.lang.Object value) { |
||||
return super.setRepeatedField(field, index, value); |
||||
} |
||||
@java.lang.Override |
||||
public Builder addRepeatedField( |
||||
com.google.protobuf.Descriptors.FieldDescriptor field, |
||||
java.lang.Object value) { |
||||
return super.addRepeatedField(field, value); |
||||
} |
||||
@java.lang.Override |
||||
public Builder mergeFrom(com.google.protobuf.Message other) { |
||||
if (other instanceof net.sopod.soim.data.msg.user.UserMsg.UserInfo) { |
||||
return mergeFrom((net.sopod.soim.data.msg.user.UserMsg.UserInfo)other); |
||||
} else { |
||||
super.mergeFrom(other); |
||||
return this; |
||||
} |
||||
} |
||||
|
||||
public Builder mergeFrom(net.sopod.soim.data.msg.user.UserMsg.UserInfo other) { |
||||
if (other == net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()) return this; |
||||
if (other.getUid() != 0L) { |
||||
setUid(other.getUid()); |
||||
} |
||||
if (!other.getAccount().isEmpty()) { |
||||
account_ = other.account_; |
||||
onChanged(); |
||||
} |
||||
if (!other.getNickname().isEmpty()) { |
||||
nickname_ = other.nickname_; |
||||
onChanged(); |
||||
} |
||||
this.mergeUnknownFields(other.unknownFields); |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public final boolean isInitialized() { |
||||
return true; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public Builder mergeFrom( |
||||
com.google.protobuf.CodedInputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws java.io.IOException { |
||||
net.sopod.soim.data.msg.user.UserMsg.UserInfo parsedMessage = null; |
||||
try { |
||||
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); |
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) { |
||||
parsedMessage = (net.sopod.soim.data.msg.user.UserMsg.UserInfo) e.getUnfinishedMessage(); |
||||
throw e.unwrapIOException(); |
||||
} finally { |
||||
if (parsedMessage != null) { |
||||
mergeFrom(parsedMessage); |
||||
} |
||||
} |
||||
return this; |
||||
} |
||||
|
||||
private long uid_ ; |
||||
/** |
||||
* <code>int64 uid = 1;</code> |
||||
* @return The uid. |
||||
*/ |
||||
@java.lang.Override |
||||
public long getUid() { |
||||
return uid_; |
||||
} |
||||
/** |
||||
* <code>int64 uid = 1;</code> |
||||
* @param value The uid to set. |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder setUid(long value) { |
||||
|
||||
uid_ = value; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
/** |
||||
* <code>int64 uid = 1;</code> |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder clearUid() { |
||||
|
||||
uid_ = 0L; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
|
||||
private java.lang.Object account_ = ""; |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The account. |
||||
*/ |
||||
public java.lang.String getAccount() { |
||||
java.lang.Object ref = account_; |
||||
if (!(ref instanceof java.lang.String)) { |
||||
com.google.protobuf.ByteString bs = |
||||
(com.google.protobuf.ByteString) ref; |
||||
java.lang.String s = bs.toStringUtf8(); |
||||
account_ = s; |
||||
return s; |
||||
} else { |
||||
return (java.lang.String) ref; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return The bytes for account. |
||||
*/ |
||||
public com.google.protobuf.ByteString |
||||
getAccountBytes() { |
||||
java.lang.Object ref = account_; |
||||
if (ref instanceof String) { |
||||
com.google.protobuf.ByteString b = |
||||
com.google.protobuf.ByteString.copyFromUtf8( |
||||
(java.lang.String) ref); |
||||
account_ = b; |
||||
return b; |
||||
} else { |
||||
return (com.google.protobuf.ByteString) ref; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @param value The account to set. |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder setAccount( |
||||
java.lang.String value) { |
||||
if (value == null) { |
||||
throw new NullPointerException(); |
||||
} |
||||
|
||||
account_ = value; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder clearAccount() { |
||||
|
||||
account_ = getDefaultInstance().getAccount(); |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
/** |
||||
* <code>string account = 2;</code> |
||||
* @param value The bytes for account to set. |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder setAccountBytes( |
||||
com.google.protobuf.ByteString value) { |
||||
if (value == null) { |
||||
throw new NullPointerException(); |
||||
} |
||||
checkByteStringIsUtf8(value); |
||||
|
||||
account_ = value; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
|
||||
private java.lang.Object nickname_ = ""; |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The nickname. |
||||
*/ |
||||
public java.lang.String getNickname() { |
||||
java.lang.Object ref = nickname_; |
||||
if (!(ref instanceof java.lang.String)) { |
||||
com.google.protobuf.ByteString bs = |
||||
(com.google.protobuf.ByteString) ref; |
||||
java.lang.String s = bs.toStringUtf8(); |
||||
nickname_ = s; |
||||
return s; |
||||
} else { |
||||
return (java.lang.String) ref; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return The bytes for nickname. |
||||
*/ |
||||
public com.google.protobuf.ByteString |
||||
getNicknameBytes() { |
||||
java.lang.Object ref = nickname_; |
||||
if (ref instanceof String) { |
||||
com.google.protobuf.ByteString b = |
||||
com.google.protobuf.ByteString.copyFromUtf8( |
||||
(java.lang.String) ref); |
||||
nickname_ = b; |
||||
return b; |
||||
} else { |
||||
return (com.google.protobuf.ByteString) ref; |
||||
} |
||||
} |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @param value The nickname to set. |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder setNickname( |
||||
java.lang.String value) { |
||||
if (value == null) { |
||||
throw new NullPointerException(); |
||||
} |
||||
|
||||
nickname_ = value; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder clearNickname() { |
||||
|
||||
nickname_ = getDefaultInstance().getNickname(); |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
/** |
||||
* <code>string nickname = 3;</code> |
||||
* @param value The bytes for nickname to set. |
||||
* @return This builder for chaining. |
||||
*/ |
||||
public Builder setNicknameBytes( |
||||
com.google.protobuf.ByteString value) { |
||||
if (value == null) { |
||||
throw new NullPointerException(); |
||||
} |
||||
checkByteStringIsUtf8(value); |
||||
|
||||
nickname_ = value; |
||||
onChanged(); |
||||
return this; |
||||
} |
||||
@java.lang.Override |
||||
public final Builder setUnknownFields( |
||||
final com.google.protobuf.UnknownFieldSet unknownFields) { |
||||
return super.setUnknownFields(unknownFields); |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public final Builder mergeUnknownFields( |
||||
final com.google.protobuf.UnknownFieldSet unknownFields) { |
||||
return super.mergeUnknownFields(unknownFields); |
||||
} |
||||
|
||||
|
||||
// @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.UserInfo)
|
||||
} |
||||
|
||||
// @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.UserInfo)
|
||||
private static final net.sopod.soim.data.msg.user.UserMsg.UserInfo DEFAULT_INSTANCE; |
||||
static { |
||||
DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.UserMsg.UserInfo(); |
||||
} |
||||
|
||||
public static net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstance() { |
||||
return DEFAULT_INSTANCE; |
||||
} |
||||
|
||||
private static final com.google.protobuf.Parser<UserInfo> |
||||
PARSER = new com.google.protobuf.AbstractParser<UserInfo>() { |
||||
@java.lang.Override |
||||
public UserInfo parsePartialFrom( |
||||
com.google.protobuf.CodedInputStream input, |
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
||||
throws com.google.protobuf.InvalidProtocolBufferException { |
||||
return new UserInfo(input, extensionRegistry); |
||||
} |
||||
}; |
||||
|
||||
public static com.google.protobuf.Parser<UserInfo> parser() { |
||||
return PARSER; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public com.google.protobuf.Parser<UserInfo> getParserForType() { |
||||
return PARSER; |
||||
} |
||||
|
||||
@java.lang.Override |
||||
public net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstanceForType() { |
||||
return DEFAULT_INSTANCE; |
||||
} |
||||
|
||||
} |
||||
|
||||
private static final com.google.protobuf.Descriptors.Descriptor |
||||
internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor; |
||||
private static final |
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable |
||||
internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable; |
||||
|
||||
public static com.google.protobuf.Descriptors.FileDescriptor |
||||
getDescriptor() { |
||||
return descriptor; |
||||
} |
||||
private static com.google.protobuf.Descriptors.FileDescriptor |
||||
descriptor; |
||||
static { |
||||
java.lang.String[] descriptorData = { |
||||
"\n\030proto/user/UserMsg.proto\022\034net.sopod.so" + |
||||
"im.data.msg.user\":\n\010UserInfo\022\013\n\003uid\030\001 \001(" + |
||||
"\003\022\017\n\007account\030\002 \001(\t\022\020\n\010nickname\030\003 \001(\tB)\n\034" + |
||||
"net.sopod.soim.data.msg.userB\007UserMsgP\000b" + |
||||
"\006proto3" |
||||
}; |
||||
descriptor = com.google.protobuf.Descriptors.FileDescriptor |
||||
.internalBuildGeneratedFileFrom(descriptorData, |
||||
new com.google.protobuf.Descriptors.FileDescriptor[] { |
||||
}); |
||||
internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor = |
||||
getDescriptor().getMessageTypes().get(0); |
||||
internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable = new |
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( |
||||
internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor, |
||||
new java.lang.String[] { "Uid", "Account", "Nickname", }); |
||||
} |
||||
|
||||
// @@protoc_insertion_point(outer_class_scope)
|
||||
} |
||||
@ -1,14 +0,0 @@
|
||||
syntax="proto3"; |
||||
|
||||
option java_multiple_files = false; |
||||
option java_outer_classname = "AddFriend"; |
||||
|
||||
package net.sopod.soim.data.msg.user; |
||||
|
||||
message ReqAddFriend { |
||||
int64 uid = 1; |
||||
} |
||||
|
||||
message ResAddFriend { |
||||
bool success = 1; |
||||
} |
||||
@ -0,0 +1,26 @@
|
||||
syntax="proto3"; |
||||
|
||||
option java_multiple_files = false; |
||||
option java_outer_classname = "Friend"; |
||||
|
||||
package net.sopod.soim.data.msg.user; |
||||
|
||||
import "proto/user/UserMsg.proto"; |
||||
|
||||
message ReqAddFriend { |
||||
int64 fid = 1; |
||||
} |
||||
|
||||
message ResAddFriend { |
||||
bool success = 1; |
||||
string msg = 2; |
||||
} |
||||
|
||||
|
||||
message ReqFriendList { |
||||
|
||||
} |
||||
|
||||
message ResFriendList { |
||||
repeated UserInfo friends = 6; |
||||
} |
||||
@ -0,0 +1,12 @@
|
||||
syntax="proto3"; |
||||
package net.sopod.soim.data.msg.user; |
||||
|
||||
option java_multiple_files = false; |
||||
option java_outer_classname = "UserMsg"; |
||||
option java_package = "net.sopod.soim.data.msg.user"; |
||||
|
||||
message UserInfo { |
||||
int64 uid = 1; |
||||
string account = 2; |
||||
string nickname = 3; |
||||
} |
||||
@ -1,15 +1,17 @@
|
||||
net.sopod.soim.data.msg.hello.HelloPB$Hello=10000 |
||||
net.sopod.soim.data.msg.net.HeartBeat$Ping=10001 |
||||
net.sopod.soim.data.msg.user.UserGroup$UserInfo=10002 |
||||
net.sopod.soim.data.msg.user.UserGroup$ResOnlineUserList=10003 |
||||
net.sopod.soim.data.msg.chat.Chat$TextChat=10004 |
||||
net.sopod.soim.data.msg.task.Tasks$NetUserDelayCloseTask=10005 |
||||
net.sopod.soim.data.msg.auth.Auth$ResTokenAuth=10006 |
||||
net.sopod.soim.data.msg.hello.HelloPB$World=10007 |
||||
net.sopod.soim.data.msg.user.AddFriend$ReqAddFriend=10008 |
||||
net.sopod.soim.data.msg.user.AddFriend$ResAddFriend=10009 |
||||
net.sopod.soim.data.msg.auth.Auth$ReqTokenAuth=10010 |
||||
net.sopod.soim.data.msg.user.AccountSearch$ReqAccountSearch=10011 |
||||
net.sopod.soim.data.msg.user.UserGroup$ReqOnlineUserList=10012 |
||||
net.sopod.soim.data.msg.net.HeartBeat$Pong=10013 |
||||
net.sopod.soim.data.msg.user.AccountSearch$ResAccountSearch=10014 |
||||
net.sopod.soim.data.msg.user.Friend$ResAddFriend=10000 |
||||
net.sopod.soim.data.msg.chat.Chat$TextChat=10001 |
||||
net.sopod.soim.data.msg.user.Friend$ReqFriendList=10002 |
||||
net.sopod.soim.data.msg.user.AccountSearch$ResAccountSearch=10003 |
||||
net.sopod.soim.data.msg.user.UserGroup$ResOnlineUserList=10004 |
||||
net.sopod.soim.data.msg.hello.HelloPB$World=10005 |
||||
net.sopod.soim.data.msg.net.HeartBeat$Pong=10006 |
||||
net.sopod.soim.data.msg.user.AccountSearch$ReqAccountSearch=10007 |
||||
net.sopod.soim.data.msg.net.HeartBeat$Ping=10008 |
||||
net.sopod.soim.data.msg.user.Friend$ReqAddFriend=10009 |
||||
net.sopod.soim.data.msg.task.Tasks$NetUserDelayCloseTask=10010 |
||||
net.sopod.soim.data.msg.auth.Auth$ResTokenAuth=10011 |
||||
net.sopod.soim.data.msg.user.UserMsg$UserInfo=10012 |
||||
net.sopod.soim.data.msg.user.UserGroup$ReqOnlineUserList=10013 |
||||
net.sopod.soim.data.msg.auth.Auth$ReqTokenAuth=10014 |
||||
net.sopod.soim.data.msg.user.Friend$ResFriendList=10015 |
||||
net.sopod.soim.data.msg.hello.HelloPB$Hello=10016 |
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package net.sopod.soim.logic.api.user.service; |
||||
|
||||
import net.sopod.soim.logic.common.model.UserInfo; |
||||
|
||||
import java.util.List; |
||||
import java.util.concurrent.CompletableFuture; |
||||
|
||||
/** |
||||
* FriendService |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 15:42 |
||||
*/ |
||||
public interface FriendService { |
||||
|
||||
/** |
||||
* 添加好友 |
||||
* @return 成功返回 null,失败返回失败原因 |
||||
*/ |
||||
CompletableFuture<String> addFriend(Long uid, Long fid); |
||||
|
||||
/** |
||||
* 获取好友列表 |
||||
*/ |
||||
CompletableFuture<List<UserInfo>> listFriend(Long uid); |
||||
|
||||
} |
||||
@ -0,0 +1,59 @@
|
||||
package net.sopod.soim.logic.user.service; |
||||
|
||||
import net.sopod.soim.das.user.api.model.entity.ImUser; |
||||
import net.sopod.soim.das.user.api.service.FriendDas; |
||||
import net.sopod.soim.das.user.api.service.UserDas; |
||||
import net.sopod.soim.logic.api.user.service.FriendService; |
||||
import net.sopod.soim.logic.common.model.UserInfo; |
||||
import org.apache.dubbo.config.annotation.DubboReference; |
||||
import org.apache.dubbo.config.annotation.DubboService; |
||||
|
||||
import java.util.List; |
||||
import java.util.concurrent.CompletableFuture; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* FriendServiceImpl |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-23 15:44 |
||||
*/ |
||||
@DubboService |
||||
public class FriendServiceImpl implements FriendService { |
||||
|
||||
@DubboReference |
||||
private FriendDas friendDas; |
||||
|
||||
@DubboReference |
||||
private UserDas userDas; |
||||
|
||||
/** |
||||
* TODO 幂等性处理 |
||||
*/ |
||||
@Override |
||||
public CompletableFuture<String> addFriend(Long uid, Long fid) { |
||||
ImUser friend = userDas.getUserById(fid); |
||||
CompletableFuture<String> future = new CompletableFuture<>(); |
||||
if (friend == null) { |
||||
return CompletableFuture.completedFuture("不存在的账号"); |
||||
} |
||||
if (Boolean.TRUE.equals(friendDas.isExists(uid, fid))) { |
||||
return CompletableFuture.completedFuture("该用户已是你的好友"); |
||||
} |
||||
// 添加好友数据
|
||||
friendDas.insert(uid, fid); |
||||
return CompletableFuture.completedFuture(null); |
||||
} |
||||
|
||||
@Override |
||||
public CompletableFuture<List<UserInfo>> listFriend(Long uid) { |
||||
List<ImUser> imUsers = friendDas.queryAllFriend(uid); |
||||
List<UserInfo> userInfos = imUsers.stream().map(imUser -> new UserInfo() |
||||
.setUid(imUser.getId()) |
||||
.setAccount(imUser.getAccount()) |
||||
.setNickname(imUser.getNickname()) |
||||
).collect(Collectors.toList()); |
||||
return CompletableFuture.completedFuture(userInfos); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue