From 63770c75faf1de3be1043e630dd960aea0814af6 Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Sat, 16 Oct 2021 19:43:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3server=20api=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=A5=BD=E5=8F=8B=E6=98=B5=E7=A7=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loServer/action/admin/AliasPutAction.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java index ba0781c5..bb487350 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java @@ -12,16 +12,22 @@ import cn.wildfirechat.common.APIPath; import cn.wildfirechat.common.ErrorCode; import cn.wildfirechat.pojos.InputGetFriendList; import cn.wildfirechat.pojos.InputUpdateAlias; +import cn.wildfirechat.pojos.OutputCreateChannel; import cn.wildfirechat.pojos.OutputStringList; +import cn.wildfirechat.proto.WFCMessage; import com.google.gson.Gson; +import com.hazelcast.util.StringUtil; import com.xiaoleilu.loServer.RestResult; import com.xiaoleilu.loServer.annotation.HttpMethod; import com.xiaoleilu.loServer.annotation.Route; import com.xiaoleilu.loServer.handler.Request; import com.xiaoleilu.loServer.handler.Response; import com.xiaoleilu.loServer.model.FriendData; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpResponseStatus; +import win.liyufan.im.IMTopic; import java.util.ArrayList; import java.util.List; @@ -39,8 +45,26 @@ public class AliasPutAction extends AdminAction { public boolean action(Request request, Response response) { if (request.getNettyRequest() instanceof FullHttpRequest) { InputUpdateAlias input = getRequestBody(request.getNettyRequest(), InputUpdateAlias.class); - ErrorCode errorCode = messagesStore.setFriendAliasRequest(input.getOperator(), input.getTargetId(), input.getAlias(), new long[1]); - setResponseContent(RestResult.resultOf(errorCode), response); + if(!StringUtil.isNullOrEmpty(input.getOperator()) && !StringUtil.isNullOrEmpty(input.getTargetId())) { + WFCMessage.AddFriendRequest addFriendRequest = WFCMessage.AddFriendRequest.newBuilder().setTargetUid(input.getTargetId()).setReason(input.getAlias()==null?"":input.getAlias()).build(); + sendApiMessage(response, input.getOperator(), IMTopic.SetFriendAliasTopic, addFriendRequest.toByteArray(), result -> { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + byte[] data = new byte[byteBuf.readableBytes()]; + byteBuf.readBytes(data); + String channelId = new String(data); + return new Result(ErrorCode.ERROR_CODE_SUCCESS, new OutputCreateChannel(channelId)); + } else { + return new Result(errorCode); + } + }); + return false; + } else { + ErrorCode errorCode = messagesStore.setFriendAliasRequest(input.getOperator(), input.getTargetId(), input.getAlias(), new long[1]); + setResponseContent(RestResult.resultOf(errorCode), response); + } } return true; }