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; }