diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/UnknownErrorAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/UnknownErrorAction.java index d0eaf109..40a3ad4d 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/UnknownErrorAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/UnknownErrorAction.java @@ -28,7 +28,7 @@ public class UnknownErrorAction extends Action{ @Override public boolean action(Request request, Response response) { - response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); + response.setStatus(HttpResponseStatus.NOT_FOUND); return true; } } diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetUserAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetUserAction.java index eea5bd34..f3432a1a 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetUserAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetUserAction.java @@ -32,7 +32,7 @@ public class GetUserAction extends RobotAction { if (request.getNettyRequest() instanceof FullHttpRequest) { InputGetUserInfo inputUserId = getRequestBody(request.getNettyRequest(), InputGetUserInfo.class); if (inputUserId != null - && (!StringUtil.isNullOrEmpty(inputUserId.getUserId()) || !StringUtil.isNullOrEmpty(inputUserId.getName()))) { + && (!StringUtil.isNullOrEmpty(inputUserId.getUserId()) || !StringUtil.isNullOrEmpty(inputUserId.getName()) || !StringUtil.isNullOrEmpty(inputUserId.getMobile()))) { WFCMessage.User user = null; if(!StringUtil.isNullOrEmpty(inputUserId.getUserId())) { diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index bd207c38..ff8e5bbd 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -11,6 +11,7 @@ public interface APIPath { String Sensitive_Query = "/admin/sensitive/query"; String Create_User = "/admin/user/create"; + String Create_Robot = "/admin/robot/create"; String User_Get_Token = "/admin/user/get_token"; String User_Update_Block_Status = "/admin/user/update_block_status"; String User_Get_Info = "/admin/user/get_info"; @@ -33,7 +34,6 @@ public interface APIPath { String Group_Member_Add = "/admin/group/member/add"; String Group_Member_Kickoff = "/admin/group/member/del"; - String Create_Robot = "/admin/robot/create"; String Channel_Message_Send = "/channel/message/send"; diff --git a/distribution/src/main/assembly/assembly.xml b/distribution/src/main/assembly/assembly.xml index fda99d71..b16d4c0f 100755 --- a/distribution/src/main/assembly/assembly.xml +++ b/distribution/src/main/assembly/assembly.xml @@ -97,6 +97,12 @@ sdk-${project.version}.jar + + ../sdk/sdk_readme.txt + server_sdk/ + sdk_readme.txt + + ../common/target/common-${project.version}.jar server_sdk/ diff --git a/sdk/sdk_readme.txt b/sdk/sdk_readme.txt new file mode 100644 index 00000000..7730469e --- /dev/null +++ b/sdk/sdk_readme.txt @@ -0,0 +1,68 @@ + SDK使用说明: + 1. 把common.jar和sdk.jar 放到lib目录下(如没有需要手动建)。 + 2. 添加下属依赖,注意本地jar包的路径。 + 3. 修改build plugin,把common和sdk打包进去。 + 4. 使用方法请查看sdk.jar/cn.wildfirechat.sdk/Main.class(没有混淆,可以看到源码) + + + + + com.google.code.gson + gson + 2.8.2 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.apache.httpcomponents + httpclient + 4.5.3 + + + + commons-codec + commons-codec + 1.11 + compile + + + + com.google.protobuf + protobuf-java + 2.5.0 + + + + cn.wildfirechat + sdk + 0.20 + system + ${project.basedir}/src/lib/sdk-0.20.jar + + + + cn.wildfirechat + common + 0.20 + system + ${project.basedir}/src/lib/common-0.20.jar + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 4c5cfda1..ccce7e1c 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -2,20 +2,23 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.ErrorCode; 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.RobotHttpUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws Exception { + //初始化服务API AdminHttpUtils.init("http://localhost:18080", "123456"); - -//*********************************************** -//**** 用户相关的API -//*********************************************** + //*********************************************** + //**** 用户相关的API + //*********************************************** InputOutputUserInfo userInfo = new InputOutputUserInfo(); userInfo.setUserId("userId1"); userInfo.setName("user1"); @@ -30,6 +33,20 @@ public class Main { System.exit(-1); } + InputCreateRobot createRobot = new InputCreateRobot(); + createRobot.setUserId("robot1"); + createRobot.setName("robot1"); + createRobot.setDisplayName("机器人"); + createRobot.setSecret("123456"); + createRobot.setCallback("http://127.0.0.1:8883/robot/recvmsg"); + IMResult resultCreateRobot = UserAdmin.createRobot(createRobot); + if (resultCreateRobot != null && resultCreateRobot.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("Create robot " + resultCreateRobot.getResult().getUserId() + " success"); + } else { + System.out.println("Create robot failure"); + System.exit(-1); + } + IMResult resultGetUserInfo1 = UserAdmin.getUserByName(userInfo.getName()); if (resultGetUserInfo1 != null && resultGetUserInfo1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (userInfo.getUserId().equals(resultGetUserInfo1.getResult().getUserId()) @@ -127,9 +144,9 @@ public class Main { } -//*********************************************** -//**** 群组相关API -//*********************************************** + //*********************************************** + //**** 群组相关功能 + //*********************************************** IMResult voidIMResult1 = GroupAdmin.dismissGroup("user1", "groupId1", null, null); PojoGroupInfo groupInfo = new PojoGroupInfo(); @@ -203,5 +220,77 @@ public class Main { System.exit(-1); } + voidIMResult = GroupAdmin.addGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList("use4", "user5"), 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 = GroupAdmin.kickoffGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList("use2", "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); + } + + //*********************************************** + //**** 消息相关功能 + //*********************************************** + Conversation conversation = new Conversation(); + conversation.setTarget("user2"); + conversation.setType(ProtoConstants.ConversationType.ConversationType_Private); + MessagePayload payload = new MessagePayload(); + payload.setType(1); + payload.setSearchableContent("hello world"); + + IMResult resultSendMessage = MessageAdmin.sendMessage("user1", conversation, payload); + if (resultSendMessage != null && resultSendMessage.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("send message success"); + } else { + System.out.println("send message failure"); + System.exit(-1); + } + + + voidIMResult = MessageAdmin.recallMessage("user1", resultSendMessage.getResult().getMessageUid()); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("recall message success"); + } else { + System.out.println("recall message failure"); + System.exit(-1); + } + + + + //初始化机器人API + RobotHttpUtils.init("http://localhost:18080", "robot1", "123456"); + //*********************************************** + //**** 机器人API + //*********************************************** + conversation = new Conversation(); + conversation.setTarget("user2"); + conversation.setType(ProtoConstants.ConversationType.ConversationType_Private); + payload = new MessagePayload(); + payload.setType(1); + payload.setSearchableContent("hello world"); + + IMResult resultRobotSendMessage = RobotService.sendMessage("robot1", conversation, payload); + if (resultRobotSendMessage != null && resultRobotSendMessage.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("robot send message success"); + } else { + System.out.println("robot send message failure"); + System.exit(-1); + } + + IMResult resultRobotGetUserInfo = RobotService.getUserInfo("user1"); + if (resultRobotGetUserInfo != null && resultRobotGetUserInfo.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("robot get user info success"); + } else { + System.out.println("robot get user info by userId 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 new file mode 100644 index 00000000..1065ed04 --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java @@ -0,0 +1,24 @@ +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; + +public class RobotService { + public static IMResult sendMessage(String sender, Conversation conversation, MessagePayload payload) throws Exception { + String path = APIPath.Robot_Message_Send; + SendMessageData messageData = new SendMessageData(); + messageData.setSender(sender); + messageData.setConv(conversation); + messageData.setPayload(payload); + return RobotHttpUtils.httpJsonPost(path, messageData, SendMessageResult.class); + } + + public static IMResult getUserInfo(String userId) throws Exception { + String path = APIPath.Robot_User_Info; + InputGetUserInfo getUserInfo = new InputGetUserInfo(userId, null, null); + return RobotHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java index 03a1979f..fd3342e7 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java @@ -29,6 +29,11 @@ public class UserAdmin { return AdminHttpUtils.httpJsonPost(path, user, OutputCreateUser.class); } + public static IMResult createRobot(InputCreateRobot robot) throws Exception { + String path = APIPath.Create_Robot; + return AdminHttpUtils.httpJsonPost(path, robot, OutputCreateRobot.class); + } + public static IMResult getUserToken(String userId, String clientId) throws Exception { String path = APIPath.User_Get_Token; InputGetToken getToken = new InputGetToken(userId, clientId); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java index 9b531640..6c7c22d5 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java @@ -54,6 +54,7 @@ public class RobotHttpUtils { post.setHeader("Connection", "Keep-Alive"); post.setHeader("nonce", nonce + ""); post.setHeader("timestamp", "" + timestamp); + post.setHeader("rid", robotId); post.setHeader("sign", sign); String jsonStr = null;