diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AddFriendRequestAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AddFriendRequestAction.java index 7b1fc2c9..cf5cde49 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AddFriendRequestAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AddFriendRequestAction.java @@ -46,7 +46,7 @@ public class AddFriendRequestAction extends AdminAction { byteBuf.writeBytes(result); ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); return new Result(errorCode); - }); + }, !input.isForce()); return false; } return true; diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AdminAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AdminAction.java index 1c06b362..a240c50d 100644 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AdminAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AdminAction.java @@ -92,9 +92,16 @@ abstract public class AdminAction extends Action { response.setContent(new Gson().toJson(result)); response.send(); } - protected void sendApiMessage(String fromUser, String topic, byte[] message, ApiCallback callback) { - ServerAPIHelper.sendRequest(fromUser, null, topic, message, new ServerAPIHelper.Callback() { + sendApiMessage(fromUser, null, topic, message, callback, false); + } + + protected void sendApiMessage(String fromUser, String topic, byte[] message, ApiCallback callback, boolean noAdmin) { + sendApiMessage(fromUser, null, topic, message, callback, noAdmin); + } + + protected void sendApiMessage(String fromUser, String clientId, String topic, byte[] message, ApiCallback callback, boolean noAdmin) { + ServerAPIHelper.sendRequest(fromUser, clientId, topic, message, new ServerAPIHelper.Callback() { @Override public void onSuccess(byte[] result) { if(callback != null) { @@ -119,6 +126,6 @@ abstract public class AdminAction extends Action { ctx.executor().execute(command); }; } - }, true); + }, !noAdmin); } } diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetIMTokenAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetIMTokenAction.java index 778574a3..8accc039 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetIMTokenAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetIMTokenAction.java @@ -38,7 +38,7 @@ public class GetIMTokenAction extends AdminAction { WFCMessage.GetTokenRequest getTokenRequest = WFCMessage.GetTokenRequest.newBuilder().setUserId(userId).setClientId(input.getClientId()).setPlatform(input.getPlatform() == null ? 0 : input.getPlatform()).build(); - sendApiMessage(userId, IMTopic.GetTokenTopic, getTokenRequest.toByteArray(), result -> { + sendApiMessage(userId, input.getClientId(), IMTopic.GetTokenTopic, getTokenRequest.toByteArray(), result -> { ErrorCode errorCode1 = ErrorCode.fromCode(result[0]); if (errorCode1 == ErrorCode.ERROR_CODE_SUCCESS) { //ba errorcode qudiao @@ -52,7 +52,7 @@ public class GetIMTokenAction extends AdminAction { } else { return new Result(errorCode1); } - }); + }, false); return false; } return true; diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/channel/ChannelAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/channel/ChannelAction.java index 5a244840..d926f54f 100644 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/channel/ChannelAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/channel/ChannelAction.java @@ -116,7 +116,10 @@ abstract public class ChannelAction extends Action { } protected void sendApiMessage(String topic, byte[] message, Callback callback) { - ServerAPIHelper.sendRequest(channelInfo.getOwner(), null, topic, message, new ServerAPIHelper.Callback() { + sendApiMessage(channelInfo.getOwner(), topic, message, callback); + } + protected void sendApiMessage(String user, String topic, byte[] message, Callback callback) { + ServerAPIHelper.sendRequest(user, null, topic, message, new ServerAPIHelper.Callback() { @Override public void onSuccess(byte[] response) { callback.onSuccess(response); diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/channel/SubscriberChannelAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/channel/SubscriberChannelAction.java index fa7a5fbd..cb9d565d 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/channel/SubscriberChannelAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/channel/SubscriberChannelAction.java @@ -19,7 +19,6 @@ 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 io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.handler.codec.http.FullHttpRequest; @@ -34,7 +33,7 @@ public class SubscriberChannelAction extends ChannelAction { public boolean action(Request request) { if (request.getNettyRequest() instanceof FullHttpRequest) { InputChannelSubscribe input = getRequestBody(request.getNettyRequest(), InputChannelSubscribe.class); - if (input != null && !StringUtil.isNullOrEmpty(input.getTarget())) { + if (input != null && !StringUtil.isNullOrEmpty(input.getUserId())) { if(input.getSubscribe() > 0 && (channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Active_Subscribe) == 0) { response.setStatus(HttpResponseStatus.OK); RestResult result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_RIGHT); @@ -42,7 +41,7 @@ public class SubscriberChannelAction extends ChannelAction { return true; } WFCMessage.ListenChannel listenChannel = WFCMessage.ListenChannel.newBuilder().setChannelId(channelInfo.getTargetId()).setListen(input.getSubscribe()).build(); - sendApiMessage(IMTopic.ChannelListenTopic, listenChannel.toByteArray(), result -> { + sendApiMessage(input.getUserId(), IMTopic.ChannelListenTopic, listenChannel.toByteArray(), result -> { ByteBuf byteBuf = Unpooled.buffer(); byteBuf.writeBytes(result); ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputChannelSubscribe.java b/common/src/main/java/cn/wildfirechat/pojos/InputChannelSubscribe.java index 7c4178da..342871c3 100644 --- a/common/src/main/java/cn/wildfirechat/pojos/InputChannelSubscribe.java +++ b/common/src/main/java/cn/wildfirechat/pojos/InputChannelSubscribe.java @@ -8,22 +8,16 @@ package cn.wildfirechat.pojos; -import cn.wildfirechat.proto.ProtoConstants; -import cn.wildfirechat.proto.WFCMessage; - -import java.util.ArrayList; -import java.util.List; - public class InputChannelSubscribe { - private String target; + private String userId; private int subscribe; //1,订阅;0,取消订阅 - public String getTarget() { - return target; + public String getUserId() { + return userId; } - public void setTarget(String target) { - this.target = target; + public void setUserId(String userId) { + this.userId = userId; } public int getSubscribe() { diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java b/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java index 8ec84e5c..4ed5e72e 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java @@ -2,11 +2,8 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; -import cn.wildfirechat.proto.ProtoConstants; import cn.wildfirechat.sdk.model.IMResult; -import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import cn.wildfirechat.sdk.utilities.ChannelHttpUtils; -import cn.wildfirechat.sdk.utilities.RobotHttpUtils; import java.util.List; @@ -61,15 +58,15 @@ public class ChannelServiceApi { public IMResult subscribe(String target) throws Exception { String path = APIPath.Channel_Subscribe; InputChannelSubscribe input = new InputChannelSubscribe(); - input.setTarget(target); + input.setUserId(target); input.setSubscribe(1); return httpUtils.httpJsonPost(path, input, Void.class); } - public IMResult unsubscribe(String target) throws Exception { + public IMResult unsubscribe(String userId) throws Exception { String path = APIPath.Channel_Subscribe; InputChannelSubscribe input = new InputChannelSubscribe(); - input.setTarget(target); + input.setUserId(userId); input.setSubscribe(0); return httpUtils.httpJsonPost(path, input, Void.class); } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 2bc1e1ff..8f97b8a5 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -1200,7 +1200,6 @@ public class Main { System.out.println("subscribe failure"); System.exit(-1); } - IMResult resultStringList = channelServiceApi.getSubscriberList(); if (resultStringList != null && resultStringList.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && resultStringList.getResult().getList().contains("userId2") && resultStringList.getResult().getList().contains("userId3")) { System.out.println("get subscriber done");