diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetBatchUserAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetBatchUserAction.java new file mode 100755 index 00000000..2910ac43 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetBatchUserAction.java @@ -0,0 +1,61 @@ +/* + * 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.admin; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.*; +import cn.wildfirechat.proto.WFCMessage; +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.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@Route(APIPath.User_Batch_Get_Infos) +@HttpMethod("POST") +public class GetBatchUserAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputStringList inputUserId = getRequestBody(request.getNettyRequest(), InputStringList.class); + if (inputUserId != null && inputUserId.getList() != null && !inputUserId.getList().isEmpty()) { + + OutputUserInfoList res = new OutputUserInfoList(); + res.userInfos = new ArrayList<>(); + for (String userId : inputUserId.getList()) { + WFCMessage.User user = messagesStore.getUserInfo(userId); + if(user == null || StringUtil.isNullOrEmpty(user.getName())) { + continue; + } + InputOutputUserInfo inputOutputUserInfo = InputOutputUserInfo.fromPbUser(user); + res.userInfos.add(inputOutputUserInfo); + } + RestResult result = RestResult.ok(res); + setResponseContent(result, response); + } else { + setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response); + } + } + return true; + } +} diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputStringList.java b/common/src/main/java/cn/wildfirechat/pojos/InputStringList.java new file mode 100644 index 00000000..07432e55 --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/InputStringList.java @@ -0,0 +1,22 @@ +package cn.wildfirechat.pojos; + +import java.util.List; + +public class InputStringList { + private List list; + + public InputStringList() { + } + + public InputStringList(List list) { + this.list = list; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 7a77da13..1e1b6bd1 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -193,6 +193,14 @@ public class Main { System.exit(-1); } + IMResult batchGetUsers = UserAdmin.getBatchUsers(Arrays.asList("userId1", "admin", "FireRobot", "TestUser")); + if (batchGetUsers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get batch user success"); + } else { + System.out.println("get batch user failure"); + System.exit(-1); + } + InputOutputUserInfo updateUserInfo = new InputOutputUserInfo(); updateUserInfo.setUserId(System.currentTimeMillis()+""); updateUserInfo.setDisplayName("updatedUserName"); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java index 6560edff..42234502 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java @@ -5,6 +5,8 @@ import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; import cn.wildfirechat.sdk.utilities.AdminHttpUtils; +import java.util.List; + public class UserAdmin { public static IMResult getUserByName(String name) throws Exception { String path = APIPath.User_Get_Info; @@ -37,6 +39,13 @@ public class UserAdmin { return AdminHttpUtils.httpJsonPost(path, input, OutputGetUserList.class); } + public static IMResult getBatchUsers(List userIds) throws Exception { + String path = APIPath.User_Batch_Get_Infos; + InputStringList input = new InputStringList(); + input.setList(userIds); + return AdminHttpUtils.httpJsonPost(path, input, OutputUserInfoList.class); + } + public static IMResult createUser(InputOutputUserInfo user) throws Exception { String path = APIPath.Create_User; return AdminHttpUtils.httpJsonPost(path, user, OutputCreateUser.class);