diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/AddGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/AddGroupMemberAction.java new file mode 100755 index 00000000..d6e95c16 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/AddGroupMemberAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputAddGroupMember; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Member_Add) +@HttpMethod("POST") +public class AddGroupMemberAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputAddGroupMember inputAddGroupMember = getRequestBody(request.getNettyRequest(), InputAddGroupMember.class); + inputAddGroupMember.setOperator(robot.getUid()); + if (inputAddGroupMember.isValide()) { + RPCCenter.getInstance().sendRequest(inputAddGroupMember.getOperator(), null, IMTopic.AddGroupMemberTopic, inputAddGroupMember.toProtoGroupRequest().toByteArray(), inputAddGroupMember.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/CreateGroupAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/CreateGroupAction.java index f34f7d44..62bcfd42 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/CreateGroupAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/CreateGroupAction.java @@ -46,6 +46,7 @@ public class CreateGroupAction extends RobotAction { if (request.getNettyRequest() instanceof FullHttpRequest) { InputCreateGroup inputCreateGroup = getRequestBody(request.getNettyRequest(), InputCreateGroup.class); inputCreateGroup.setOperator(robot.getUid()); + inputCreateGroup.getGroup().getGroup_info().setOwner(robot.getUid()); if (inputCreateGroup.isValide()) { PojoGroupInfo group_info = inputCreateGroup.getGroup().getGroup_info(); WFCMessage.CreateGroupRequest createGroupRequest = inputCreateGroup.toProtoGroupRequest(); diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/DismissGroupAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/DismissGroupAction.java new file mode 100755 index 00000000..1a8fa826 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/DismissGroupAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputDismissGroup; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Dismiss) +@HttpMethod("POST") +public class DismissGroupAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputDismissGroup inputDismissGroup = getRequestBody(request.getNettyRequest(), InputDismissGroup.class); + inputDismissGroup.setOperator(robot.getUid()); + if (inputDismissGroup.isValide()) { + RPCCenter.getInstance().sendRequest(inputDismissGroup.getOperator(), null, IMTopic.DismissGroupTopic, inputDismissGroup.toProtoGroupRequest().toByteArray(), inputDismissGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupInfoAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupInfoAction.java new file mode 100755 index 00000000..2ee770aa --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupInfoAction.java @@ -0,0 +1,70 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetGroup; +import cn.wildfirechat.pojos.PojoGroupInfo; +import cn.wildfirechat.proto.WFCMessage; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.util.internal.StringUtil; + +@Route(APIPath.Robot_Group_Get_Info) +@HttpMethod("POST") +public class GetGroupInfoAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputGetGroup inputGetGroup = getRequestBody(request.getNettyRequest(), InputGetGroup.class); + if (inputGetGroup != null + && (!StringUtil.isNullOrEmpty(inputGetGroup.getGroupId()))) { + + WFCMessage.GroupInfo groupInfo = messagesStore.getGroupInfo(inputGetGroup.getGroupId()); + + response.setStatus(HttpResponseStatus.OK); + RestResult result; + if (groupInfo == null) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + PojoGroupInfo pojoGroupInfo = new PojoGroupInfo(); + pojoGroupInfo.setExtra(groupInfo.getExtra()); + pojoGroupInfo.setName(groupInfo.getName()); + pojoGroupInfo.setOwner(groupInfo.getOwner()); + pojoGroupInfo.setPortrait(groupInfo.getPortrait()); + pojoGroupInfo.setTarget_id(groupInfo.getTargetId()); + pojoGroupInfo.setType(groupInfo.getType()); + result = RestResult.ok(pojoGroupInfo); + } + + response.setContent(new Gson().toJson(result)); + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMembersAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMembersAction.java new file mode 100755 index 00000000..8f4fbbea --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMembersAction.java @@ -0,0 +1,90 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetGroup; +import cn.wildfirechat.pojos.OutputGroupMemberList; +import cn.wildfirechat.pojos.PojoGroupMember; +import cn.wildfirechat.proto.ProtoConstants; +import cn.wildfirechat.proto.WFCMessage; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.List; + +@Route(APIPath.Robot_Group_Member_List) +@HttpMethod("POST") +public class GetGroupMembersAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputGetGroup inputGetGroup = getRequestBody(request.getNettyRequest(), InputGetGroup.class); + String robotId = robot.getUid(); + if (inputGetGroup != null + && (!StringUtil.isNullOrEmpty(inputGetGroup.getGroupId()))) { + + List members = new ArrayList<>(); + ErrorCode errorCode = messagesStore.getGroupMembers(null, inputGetGroup.getGroupId(), 0, members); + + + response.setStatus(HttpResponseStatus.OK); + RestResult result; + if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) { + result = RestResult.resultOf(errorCode); + } else { + OutputGroupMemberList out = new OutputGroupMemberList(); + out.setMembers(new ArrayList<>()); + boolean isInGroup = false; + for (WFCMessage.GroupMember member : members) { + if (member.getType() == ProtoConstants.GroupMemberType.GroupMemberType_Removed) { + continue; + } + if(member.getMemberId().equals(robotId)) { + isInGroup = true; + } + PojoGroupMember pm = new PojoGroupMember(); + pm.setMember_id(member.getMemberId()); + pm.setAlias(member.getAlias()); + pm.setType(member.getType()); + out.getMembers().add(pm); + } + if(!isInGroup) { + out.getMembers().clear(); + } + result = RestResult.ok(out); + } + + response.setContent(new Gson().toJson(result)); + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/KickoffGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/KickoffGroupMemberAction.java new file mode 100755 index 00000000..ebf127ce --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/KickoffGroupMemberAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputKickoffGroupMember; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Member_Kickoff) +@HttpMethod("POST") +public class KickoffGroupMemberAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputKickoffGroupMember inputKickoffGroupMember = getRequestBody(request.getNettyRequest(), InputKickoffGroupMember.class); + inputKickoffGroupMember.setOperator(robot.getUid()); + if (inputKickoffGroupMember.isValide()) { + RPCCenter.getInstance().sendRequest(inputKickoffGroupMember.getOperator(), null, IMTopic.KickoffGroupMemberTopic, inputKickoffGroupMember.toProtoGroupRequest().toByteArray(), inputKickoffGroupMember.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupInfoAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupInfoAction.java new file mode 100755 index 00000000..be0e4bce --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupInfoAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputModifyGroupInfo; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Modify_Info) +@HttpMethod("POST") +public class ModifyGroupInfoAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputModifyGroupInfo inputAddGroupMember = getRequestBody(request.getNettyRequest(), InputModifyGroupInfo.class); + inputAddGroupMember.setOperator(robot.getUid()); + if (inputAddGroupMember.isValide()) { + RPCCenter.getInstance().sendRequest(inputAddGroupMember.getOperator(), null, IMTopic.ModifyGroupInfoTopic, inputAddGroupMember.toProtoGroupRequest().toByteArray(), inputAddGroupMember.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupMemberAliasAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupMemberAliasAction.java new file mode 100755 index 00000000..b2b60f8c --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/ModifyGroupMemberAliasAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputSetGroupMemberAlias; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Set_Member_Alias) +@HttpMethod("POST") +public class ModifyGroupMemberAliasAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputSetGroupMemberAlias inputSetGroupMemberAlias = getRequestBody(request.getNettyRequest(), InputSetGroupMemberAlias.class); + inputSetGroupMemberAlias.setOperator(robot.getUid()); + if (inputSetGroupMemberAlias.isValide()) { + RPCCenter.getInstance().sendRequest(inputSetGroupMemberAlias.getOperator(), null, IMTopic.ModifyGroupMemberAliasTopic, inputSetGroupMemberAlias.toProtoGroupRequest().toByteArray(), inputSetGroupMemberAlias.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/QuitGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/QuitGroupMemberAction.java new file mode 100755 index 00000000..d4e8dd88 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/QuitGroupMemberAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputQuitGroup; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Member_Quit) +@HttpMethod("POST") +public class QuitGroupMemberAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputQuitGroup inputQuitGroup = getRequestBody(request.getNettyRequest(), InputQuitGroup.class); + inputQuitGroup.setOperator(robot.getUid()); + if (inputQuitGroup.isValide()) { + RPCCenter.getInstance().sendRequest(inputQuitGroup.getOperator(), null, IMTopic.QuitGroupTopic, inputQuitGroup.toProtoGroupRequest().toByteArray(), inputQuitGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/TransferGroupAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/TransferGroupAction.java new file mode 100755 index 00000000..c5cc70b4 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/TransferGroupAction.java @@ -0,0 +1,86 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputTransferGroup; +import com.google.gson.Gson; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.admin.AdminAction; +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.moquette.persistence.RPCCenter; +import io.moquette.persistence.TargetEntry; +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.concurrent.Executor; + +@Route(APIPath.Robot_Group_Transfer) +@HttpMethod("POST") +public class TransferGroupAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputTransferGroup inputDismissGroup = getRequestBody(request.getNettyRequest(), InputTransferGroup.class); + inputDismissGroup.setOperator(robot.getUid()); + if (inputDismissGroup.isValide()) { + RPCCenter.getInstance().sendRequest(inputDismissGroup.getOperator(), null, IMTopic.TransferGroupTopic, inputDismissGroup.toProtoGroupRequest().toByteArray(), inputDismissGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, false, 1); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index 723de0b3..74168638 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -76,4 +76,19 @@ public interface APIPath { String Robot_User_Info = "/robot/user_info"; String Robot_Message_Send = "/robot/message/send"; + String Robot_Verify_Application_User = "/robot/user/verify"; + + String Robot_Group_Member_Add = "/robot/group/member/add"; + String Robot_Group_Allow_Member = "/robot/group/manager/allow"; + String Robot_Create_Group = "/robot/group/create"; + String Robot_Group_Dismiss = "/robot/group/del"; + String Robot_Group_Get_Info = "/robot/group/get_info"; + String Robot_Group_Member_List = "/robot/group/member/list"; + String Robot_Group_Member_Kickoff = "/robot/group/member/del"; + String Robot_Group_Modify_Info = "/robot/group/modify"; + String Robot_Group_Set_Member_Alias = "/robot/group/member/set_alias"; + String Robot_Group_Mute_Member = "/robot/group/manager/mute"; + String Robot_Group_Member_Quit = "/robot/group/member/quit"; + String Robot_Group_Transfer = "/robot/group/transfer"; + String Robot_Group_Set_Manager = "/robot/group/manager/set"; } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index efe0206a..ba71b9bc 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -647,8 +647,8 @@ public class Main { System.exit(-1); } } - static void testChatroom() throws Exception { + static void testChatroom() throws Exception { String chatroomId = "chatroomId1"; String chatroomTitle = "TESTCHATROM"; String chatroomDesc = "this is a test chatroom"; @@ -704,108 +704,112 @@ public class Main { } //下面仅专业版支持 - /* - //设置用户聊天室黑名单。0正常;1禁言;2禁止加入。 - IMResult voidIMResult1 = ChatroomAdmin.setChatroomBlacklist("chatroom1", "oto9o9__", 1); - if (voidIMResult1 != null && voidIMResult1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - System.out.println("add chatroom black success"); - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); - } - - //获取聊天室黑名单 - IMResult blackInfos = ChatroomAdmin.getChatroomBlacklist("chatroom1"); - if (blackInfos != null && blackInfos.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !blackInfos.getResult().infos.isEmpty()) { - boolean success = false; - for (OutputChatroomBlackInfos.OutputChatroomBlackInfo info : blackInfos.getResult().infos) { - if (info.userId.equals("oto9o9__")) { - success = true; - break; - } - } - if (success) { + if(commercialServer) { + //设置用户聊天室黑名单。0正常;1禁言;2禁止加入。 + IMResult voidIMResult1 = ChatroomAdmin.setChatroomBlacklist("chatroom1", "oto9o9__", 1); + if (voidIMResult1 != null && voidIMResult1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("add chatroom black success"); } else { System.out.println("add chatroom black failure"); System.exit(-1); } - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); - } - //取消用户聊天室黑名单。0正常;1禁言;2禁止加入。 - voidIMResult1 = ChatroomAdmin.setChatroomBlacklist("chatroom1", "oto9o9__", 0); - if (voidIMResult1 != null && voidIMResult1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - System.out.println("remove chatroom black success"); - } else { - System.out.println("remove chatroom black failure"); - System.exit(-1); - } - - //获取聊天室黑名单 - blackInfos = ChatroomAdmin.getChatroomBlacklist("chatroom1"); - if (blackInfos != null && blackInfos.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - boolean success = true; - for (OutputChatroomBlackInfos.OutputChatroomBlackInfo info : blackInfos.getResult().infos) { - if (info.userId.equals("oto9o9__")) { - success = false; - break; + //获取聊天室黑名单 + IMResult blackInfos = ChatroomAdmin.getChatroomBlacklist("chatroom1"); + if (blackInfos != null && blackInfos.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !blackInfos.getResult().infos.isEmpty()) { + boolean success = false; + for (OutputChatroomBlackInfos.OutputChatroomBlackInfo info : blackInfos.getResult().infos) { + if (info.userId.equals("oto9o9__")) { + success = true; + break; + } } + if (success) { + System.out.println("add chatroom black success"); + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); + } + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); } - if (success) { + + //取消用户聊天室黑名单。0正常;1禁言;2禁止加入。 + voidIMResult1 = ChatroomAdmin.setChatroomBlacklist("chatroom1", "oto9o9__", 0); + if (voidIMResult1 != null && voidIMResult1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("remove chatroom black success"); } else { System.out.println("remove chatroom black failure"); System.exit(-1); } - } else { - System.out.println("remove chatroom black failure"); - System.exit(-1); - } - //设置聊天室管理员 - IMResult voidIMResult2 = ChatroomAdmin.setChatroomManager("chatroom1", "UserId1", 1); - if (voidIMResult2 != null && voidIMResult2.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - System.out.println("add chatroom manager success"); - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); - } + //获取聊天室黑名单 + blackInfos = ChatroomAdmin.getChatroomBlacklist("chatroom1"); + if (blackInfos != null && blackInfos.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + boolean success = true; + for (OutputChatroomBlackInfos.OutputChatroomBlackInfo info : blackInfos.getResult().infos) { + if (info.userId.equals("oto9o9__")) { + success = false; + break; + } + } + if (success) { + System.out.println("remove chatroom black success"); + } else { + System.out.println("remove chatroom black failure"); + System.exit(-1); + } + } else { + System.out.println("remove chatroom black failure"); + System.exit(-1); + } - //获取聊天室管理员 - IMResult managers = ChatroomAdmin.getChatroomManagerList("chatroom1"); - if (managers != null && managers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !managers.getResult().getList().isEmpty() && managers.getResult().getList().contains("UserId1")) { + //设置聊天室管理员 + IMResult voidIMResult2 = ChatroomAdmin.setChatroomManager("chatroom1", "UserId1", 1); + if (voidIMResult2 != null && voidIMResult2.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("add chatroom manager success"); + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); + } + + //获取聊天室管理员 + IMResult managers = ChatroomAdmin.getChatroomManagerList("chatroom1"); + if (managers != null && managers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !managers.getResult().getList().isEmpty() && managers.getResult().getList().contains("UserId1")) { System.out.println("add chatroom black success"); - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); + } + + //取消聊天室管理员 + IMResult voidIMResult3 = ChatroomAdmin.setChatroomManager("chatroom1", "UserId1", 0); + if (voidIMResult3 != null && voidIMResult3.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("add chatroom manager success"); + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); + } + + //获取聊天室管理员 + IMResult managers2 = ChatroomAdmin.getChatroomManagerList("chatroom1"); + if (managers2 != null && managers2.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !managers2.getResult().getList().contains("UserId1")) { + System.out.println("add chatroom black success"); + } else { + System.out.println("add chatroom black failure"); + System.exit(-1); + } } - - //取消聊天室管理员 - IMResult voidIMResult3 = ChatroomAdmin.setChatroomManager("chatroom1", "UserId1", 0); - if (voidIMResult3 != null && voidIMResult3.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - System.out.println("add chatroom manager success"); - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); - } - - //获取聊天室管理员 - IMResult managers2 = ChatroomAdmin.getChatroomManagerList("chatroom1"); - if (managers2 != null && managers2.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !managers2.getResult().getList().contains("UserId1")) { - System.out.println("add chatroom black success"); - } else { - System.out.println("add chatroom black failure"); - System.exit(-1); - }*/ - } static void testRobot() throws Exception { - //初始化机器人API - RobotHttpUtils.init("http://localhost", "robot1", "123456"); + //初始化机器人API,注意端口是80,不是18080 + String robotId = "robot1"; + RobotHttpUtils.init("http://localhost", robotId, "123456"); + + String userId1 = "IrIhIhss"; + String userId2 = "IrIhIhss"; //*********************************************** //**** 机器人API //*********************************************** @@ -831,6 +835,181 @@ public class Main { System.out.println("robot get user info by userId failure"); System.exit(-1); } + + String groupId = "robot_group" + System.currentTimeMillis(); + PojoGroupInfo groupInfo = new PojoGroupInfo(); + groupInfo.setTarget_id(groupId); + groupInfo.setName("test_group"); + groupInfo.setExtra("hello extra"); + groupInfo.setPortrait("http://portrait"); + List members = new ArrayList<>(); + + PojoGroupMember member1 = new PojoGroupMember(); + member1.setMember_id("user1"); + members.add(member1); + + PojoGroupMember member2 = new PojoGroupMember(); + member2.setMember_id("user2"); + members.add(member2); + + PojoGroupMember member3 = new PojoGroupMember(); + member3.setMember_id("user3"); + members.add(member3); + + IMResult resultCreateGroup = RobotService.createGroup(groupInfo, members, null, null); + if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("create group success"); + } else { + System.out.println("create group failure"); + System.exit(-1); + } + + IMResult resultGetGroupInfo = RobotService.getGroupInfo(groupInfo.getTarget_id()); + if (resultGetGroupInfo != null && resultGetGroupInfo.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if (groupInfo.getExtra().equals(resultGetGroupInfo.getResult().getExtra()) + && groupInfo.getName().equals(resultGetGroupInfo.getResult().getName()) + && robotId.equals(resultGetGroupInfo.getResult().getOwner())) { + System.out.println("get group success"); + } else { + System.out.println("group info is not expected"); + System.exit(-1); + } + } else { + System.out.println("create group failure"); + System.exit(-1); + } + + IMResult voidIMResult = RobotService.modifyGroupInfo(groupInfo.getTarget_id(), ProtoConstants.ModifyGroupInfoType.Modify_Group_Name,"HelloWorld", null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("modify group success"); + } else { + System.out.println("modify group failure"); + System.exit(-1); + } + + + IMResult resultGetMembers = RobotService.getGroupMembers(groupInfo.getTarget_id()); + if (resultGetMembers != null && resultGetMembers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get group member success"); + } else { + System.out.println("create group failure"); + System.exit(-1); + } + + PojoGroupMember m = new PojoGroupMember(); + m.setMember_id("user1"); + m.setAlias("hello user1"); + + voidIMResult = RobotService.addGroupMembers(groupInfo.getTarget_id(), Arrays.asList(m), null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("add group member success"); + } else { + System.out.println("add group member failure"); + System.exit(-1); + } + + voidIMResult = RobotService.kickoffGroupMembers(groupInfo.getTarget_id(), Arrays.asList("user3"), null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("kickoff group member success"); + } else { + System.out.println("kickoff group member failure"); + System.exit(-1); + } + + voidIMResult = RobotService.setGroupMemberAlias(groupInfo.getTarget_id(), "user3", "test user3", null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("set group member alias success"); + } else { + System.out.println("set group member alias failure"); + System.exit(-1); + } + + if(commercialServer) { + voidIMResult = RobotService.setGroupManager(groupInfo.getTarget_id(), Arrays.asList("user4", "user5"), true, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("set group manager success"); + } else { + System.out.println("set group manager failure"); + System.exit(-1); + } + + voidIMResult = RobotService.setGroupManager(groupInfo.getTarget_id(), Arrays.asList("user4", "user5"), false, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("cancel group manager success"); + } else { + System.out.println("cancel group manager failure"); + System.exit(-1); + } + } + + + + //仅专业版支持 + if (commercialServer) { + //开启群成员禁言 + voidIMResult = RobotService.muteGroupMember(groupInfo.getTarget_id(), Arrays.asList("user5"), true, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("mute group member success"); + } else { + System.out.println("mute group member failure"); + System.exit(-1); + } + //关闭群成员禁言 + voidIMResult = RobotService.muteGroupMember(groupInfo.getTarget_id(), Arrays.asList("user5"), false, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("unmute group member success"); + } else { + System.out.println("unmute group member failure"); + System.exit(-1); + } + + //开启群成员白名单,当群全局禁言时,白名单用户可以发言 + voidIMResult = RobotService.allowGroupMember(groupInfo.getTarget_id(), Arrays.asList("user5"), true, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("allow group member success"); + } else { + System.out.println("allow group member failure"); + System.exit(-1); + } + + //关闭群成员白名单 + voidIMResult = RobotService.allowGroupMember(groupInfo.getTarget_id(), Arrays.asList("user5"), false, null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("unallow group member success"); + } else { + System.out.println("unallow group member failure"); + System.exit(-1); + } + } + voidIMResult = RobotService.transferGroup(groupInfo.getTarget_id(), "user2", null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("transfer success"); + } else { + System.out.println("create group failure"); + System.exit(-1); + } + + resultGetGroupInfo = RobotService.getGroupInfo(groupInfo.getTarget_id()); + if (resultGetGroupInfo != null && resultGetGroupInfo.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if ("user2".equals(resultGetGroupInfo.getResult().getOwner())) { + groupInfo.setOwner("user2"); + } else { + System.out.println("group info is not expected"); + System.exit(-1); + } + } else { + System.out.println("create group failure"); + System.exit(-1); + } + + voidIMResult = RobotService.quitGroup(groupInfo.getTarget_id(), null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("quit group success"); + } else { + System.out.println("quit group failure"); + System.exit(-1); + } + } //***测试频道API功能,仅专业版支持*** @@ -887,6 +1066,7 @@ public class Main { inputCreateChannel.setOwner("userId1"); String secret = "channelsecret"; inputCreateChannel.setSecret(secret); + inputCreateChannel.setState(0xff); IMResult resultCreateChannel = GeneralAdmin.createChannel(inputCreateChannel); if (resultCreateChannel != null && resultCreateChannel.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("create channel success"); @@ -896,7 +1076,7 @@ public class Main { } - //2. 初始化api + //2. 初始化api,注意端口是80,不是18080 ChannelServiceApi channelServiceApi = new ChannelServiceApi("http://localhost", resultCreateChannel.getResult().getTargetId(), secret); @@ -986,9 +1166,9 @@ public class Main { IMResult outputGetChannelInfoIMResult = channelServiceApi.getChannelInfo(); if (outputGetChannelInfoIMResult != null && outputGetChannelInfoIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { - System.out.println("destroy user success"); + System.out.println("get channel info success"); } else { - System.out.println("destroy user failure"); + System.out.println("get channel info failure"); System.exit(-1); } } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java index e9078040..c9961d85 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java @@ -3,8 +3,10 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; -import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import cn.wildfirechat.sdk.utilities.RobotHttpUtils; +import cn.wildfirechat.sdk.utilities.RobotHttpUtils; + +import java.util.List; public class RobotService { public static IMResult sendMessage(String sender, Conversation conversation, MessagePayload payload) throws Exception { @@ -33,4 +35,136 @@ public class RobotService { InputGetUserInfo getUserInfo = new InputGetUserInfo(null, userName, null); return RobotHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); } + + public static IMResult createGroup(PojoGroupInfo group_info, List members, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Create_Group; + PojoGroup pojoGroup = new PojoGroup(); + pojoGroup.setGroup_info(group_info); + pojoGroup.setMembers(members); + InputCreateGroup createGroup = new InputCreateGroup(); + createGroup.setGroup(pojoGroup); + createGroup.setTo_lines(to_lines); + createGroup.setNotify_message(notify_message); + + return RobotHttpUtils.httpJsonPost(path, createGroup, OutputCreateGroupResult.class); + } + + public static IMResult getGroupInfo(String groupId) throws Exception { + String path = APIPath.Robot_Group_Get_Info; + InputGetGroup input = new InputGetGroup(); + input.setGroupId(groupId); + + return RobotHttpUtils.httpJsonPost(path, input, PojoGroupInfo.class); + } + + public static IMResult dismissGroup(String groupId, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Dismiss; + InputDismissGroup dismissGroup = new InputDismissGroup(); + dismissGroup.setGroup_id(groupId); + dismissGroup.setTo_lines(to_lines); + dismissGroup.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, dismissGroup, Void.class); + } + + public static IMResult transferGroup(String groupId, String newOwner, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Transfer; + InputTransferGroup transferGroup = new InputTransferGroup(); + transferGroup.setGroup_id(groupId); + transferGroup.setNew_owner(newOwner); + transferGroup.setTo_lines(to_lines); + transferGroup.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, transferGroup, Void.class); + } + + public static IMResult modifyGroupInfo(String groupId, /*ModifyGroupInfoType*/int type, String value, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Modify_Info; + InputModifyGroupInfo modifyGroupInfo = new InputModifyGroupInfo(); + modifyGroupInfo.setGroup_id(groupId); + modifyGroupInfo.setTo_lines(to_lines); + modifyGroupInfo.setType(type); + modifyGroupInfo.setValue(value); + modifyGroupInfo.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, modifyGroupInfo, Void.class); + } + + + public static IMResult getGroupMembers(String groupId) throws Exception { + String path = APIPath.Robot_Group_Member_List; + InputGetGroup input = new InputGetGroup(); + input.setGroupId(groupId); + return RobotHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class); + } + + public static IMResult addGroupMembers(String groupId, List groupMembers, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Member_Add; + InputAddGroupMember addGroupMember = new InputAddGroupMember(); + addGroupMember.setGroup_id(groupId); + addGroupMember.setMembers(groupMembers); + addGroupMember.setTo_lines(to_lines); + addGroupMember.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, addGroupMember, Void.class); + } + + public static IMResult setGroupManager(String groupId, List groupMemberIds, boolean isManager, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Set_Manager; + InputSetGroupManager addGroupMember = new InputSetGroupManager(); + addGroupMember.setGroup_id(groupId); + addGroupMember.setMembers(groupMemberIds); + addGroupMember.setIs_manager(isManager); + addGroupMember.setTo_lines(to_lines); + addGroupMember.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, addGroupMember, Void.class); + } + + public static IMResult muteGroupMember(String groupId, List groupMemberIds, boolean isMute, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Mute_Member; + InputMuteGroupMember addGroupMember = new InputMuteGroupMember(); + addGroupMember.setGroup_id(groupId); + addGroupMember.setMembers(groupMemberIds); + addGroupMember.setIs_manager(isMute); + addGroupMember.setTo_lines(to_lines); + addGroupMember.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, addGroupMember, Void.class); + } + + public static IMResult allowGroupMember(String groupId, List groupMemberIds, boolean isAllow, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Allow_Member; + InputMuteGroupMember addGroupMember = new InputMuteGroupMember(); + addGroupMember.setGroup_id(groupId); + addGroupMember.setMembers(groupMemberIds); + addGroupMember.setIs_manager(isAllow); + addGroupMember.setTo_lines(to_lines); + addGroupMember.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, addGroupMember, Void.class); + } + + public static IMResult kickoffGroupMembers(String groupId, List groupMemberIds, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Member_Kickoff; + InputKickoffGroupMember kickoffGroupMember = new InputKickoffGroupMember(); + kickoffGroupMember.setGroup_id(groupId); + kickoffGroupMember.setMembers(groupMemberIds); + kickoffGroupMember.setTo_lines(to_lines); + kickoffGroupMember.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, kickoffGroupMember, Void.class); + } + + public static IMResult quitGroup(String groupId, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Member_Quit; + InputQuitGroup quitGroup = new InputQuitGroup(); + quitGroup.setGroup_id(groupId); + quitGroup.setTo_lines(to_lines); + quitGroup.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, quitGroup, Void.class); + } + + public static IMResult setGroupMemberAlias(String groupId, String memberId, String alias, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Robot_Group_Set_Member_Alias; + InputSetGroupMemberAlias input = new InputSetGroupMemberAlias(); + input.setGroup_id(groupId); + input.setMemberId(memberId); + input.setAlias(alias); + input.setTo_lines(to_lines); + input.setNotify_message(notify_message); + return RobotHttpUtils.httpJsonPost(path, input, Void.class); + } }