Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
776c9e26c6 | ||
|
|
c7f7ce949e | ||
|
|
07b1de4ae3 | ||
|
|
7e87f9d6ab | ||
|
|
da781180a7 | ||
|
|
f1b62ad64a | ||
|
|
576fcf3e77 | ||
|
|
33f2124352 |
+3
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_delete_by` varchar(64) DEFAULT '';
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_deleted` tinyint DEFAULT 0;
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_delete_dt` bigint(20) DEFAULT 0;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_delete_by` varchar(64) DEFAULT '';
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_deleted` tinyint DEFAULT 0;
|
||||
ALTER TABLE `t_conference` ADD COLUMN `_delete_dt` bigint(20) DEFAULT 0;
|
||||
@@ -144,7 +144,7 @@ abstract public class Action {
|
||||
errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
RestResult result = RestResult.resultOf(errorCode, errorCode.getMsg(), RestResult.resultOf(errorCode));
|
||||
RestResult result = RestResult.resultOf(errorCode, errorCode.getMsg(), null);
|
||||
response.setContent(gson.toJson(result));
|
||||
response.send();
|
||||
}
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* 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.util.internal.StringUtil;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Route(APIPath.User_Get_All_Robots)
|
||||
@HttpMethod("POST")
|
||||
public class GetAllRobotAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputGetUserList input = getRequestBody(request.getNettyRequest(), InputGetUserList.class);
|
||||
if (input != null && input.count > 0 && input.offset >= 0) {
|
||||
List<WFCMessage.Robot> robots = messagesStore.getRobotInfoList(input.count, input.offset);
|
||||
|
||||
OutputGetRobotList outputGetUserList = new OutputGetRobotList();
|
||||
outputGetUserList.robotInfoList = new ArrayList<>();
|
||||
robots.forEach(robotData -> {
|
||||
WFCMessage.User userInfoData = messagesStore.getUserInfo(robotData.getUid());
|
||||
if (userInfoData != null && !StringUtil.isNullOrEmpty(userInfoData.getName()) && userInfoData.getDeleted() ==0) {
|
||||
OutputRobot outputRobot = new OutputRobot();
|
||||
outputRobot.fromUser(userInfoData);
|
||||
outputRobot.fromRobot(robotData, true);
|
||||
outputGetUserList.robotInfoList.add(outputRobot);
|
||||
}
|
||||
});
|
||||
|
||||
RestResult result = RestResult.ok(outputGetUserList);
|
||||
setResponseContent(result, response);
|
||||
} else {
|
||||
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* 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.InputGetUserInfo;
|
||||
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
||||
import cn.wildfirechat.pojos.OutputUserInfoList;
|
||||
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.util.internal.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.User_Get_By_Mobile)
|
||||
@HttpMethod("POST")
|
||||
public class GetUsersByMobileAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputGetUserInfo email = getRequestBody(request.getNettyRequest(), InputGetUserInfo.class);
|
||||
if (!StringUtil.isNullOrEmpty(email.getMobile())) {
|
||||
List<WFCMessage.User> users = messagesStore.getUserInfosByMobile(email.getMobile(), email.isIncludeDeleted());
|
||||
List<InputOutputUserInfo> list = new ArrayList<>();
|
||||
for (WFCMessage.User user : users) {
|
||||
list.add(InputOutputUserInfo.fromPbUser(user));
|
||||
}
|
||||
|
||||
RestResult result;
|
||||
if (list.isEmpty()) {
|
||||
result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST);
|
||||
} else {
|
||||
OutputUserInfoList outputUserInfoList = new OutputUserInfoList();
|
||||
outputUserInfoList.userInfos = list;
|
||||
result = RestResult.ok(outputUserInfoList);
|
||||
}
|
||||
|
||||
setResponseContent(result, response);
|
||||
} else {
|
||||
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* 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.InputOutputUserInfo;
|
||||
import cn.wildfirechat.pojos.InputStringList;
|
||||
import cn.wildfirechat.pojos.OutputUserInfoList;
|
||||
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.util.internal.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.Robot_User_Batch_Get_Infos)
|
||||
@HttpMethod("POST")
|
||||
public class GetBatchUserAction extends RobotAction {
|
||||
|
||||
@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<>();
|
||||
int mask = messagesStore.getRobotGetUserInfoMask();
|
||||
for (String userId : inputUserId.getList()) {
|
||||
WFCMessage.User user = messagesStore.getUserInfo(userId);
|
||||
if(user == null || StringUtil.isNullOrEmpty(user.getName())) {
|
||||
continue;
|
||||
}
|
||||
InputOutputUserInfo inputOutputUserInfo = InputOutputUserInfo.fromPbUser(user);
|
||||
if((mask & 1) == 0) {
|
||||
inputOutputUserInfo.setName(null);
|
||||
}
|
||||
if((mask & 2) == 0) {
|
||||
inputOutputUserInfo.setMobile(null);
|
||||
}
|
||||
if((mask & 4) == 0) {
|
||||
inputOutputUserInfo.setEmail(null);
|
||||
}
|
||||
if((mask & 8) == 0) {
|
||||
inputOutputUserInfo.setAddress(null);
|
||||
}
|
||||
if((mask & 16) == 0) {
|
||||
inputOutputUserInfo.setCompany(null);
|
||||
}
|
||||
if((mask & 32) == 0) {
|
||||
inputOutputUserInfo.setExtra(null);
|
||||
}
|
||||
if((mask & 64) == 0) {
|
||||
inputOutputUserInfo.setUpdateDt(0);
|
||||
}
|
||||
if((mask & 128) == 0) {
|
||||
inputOutputUserInfo.setGender(0);
|
||||
}
|
||||
if((mask & 256) == 0) {
|
||||
inputOutputUserInfo.setSocial(null);
|
||||
}
|
||||
if((mask & 512) == 0) {
|
||||
inputOutputUserInfo.setType(0);
|
||||
}
|
||||
res.userInfos.add(inputOutputUserInfo);
|
||||
}
|
||||
RestResult result = RestResult.ok(res);
|
||||
setResponseContent(result, response);
|
||||
} else {
|
||||
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* 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.InputOutputUserInfo;
|
||||
import cn.wildfirechat.pojos.OutputUserInfoList;
|
||||
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.util.internal.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.Robot_User_Get_Email_Info)
|
||||
@HttpMethod("POST")
|
||||
public class GetUsersByEmailAction extends RobotAction {
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
String email = getRequestBody(request.getNettyRequest(), String.class);
|
||||
if (!StringUtil.isNullOrEmpty(email)) {
|
||||
|
||||
List<WFCMessage.User> users = messagesStore.getUserInfosByEmail(email);
|
||||
List<InputOutputUserInfo> list = new ArrayList<>();
|
||||
int mask = messagesStore.getRobotGetUserInfoMask();
|
||||
for (WFCMessage.User user : users) {
|
||||
InputOutputUserInfo outputUserInfo = InputOutputUserInfo.fromPbUser(user);
|
||||
if((mask & 1) == 0) {
|
||||
outputUserInfo.setName(null);
|
||||
}
|
||||
if((mask & 2) == 0) {
|
||||
outputUserInfo.setMobile(null);
|
||||
}
|
||||
if((mask & 4) == 0) {
|
||||
outputUserInfo.setEmail(null);
|
||||
}
|
||||
if((mask & 8) == 0) {
|
||||
outputUserInfo.setAddress(null);
|
||||
}
|
||||
if((mask & 16) == 0) {
|
||||
outputUserInfo.setCompany(null);
|
||||
}
|
||||
if((mask & 32) == 0) {
|
||||
outputUserInfo.setExtra(null);
|
||||
}
|
||||
if((mask & 64) == 0) {
|
||||
outputUserInfo.setUpdateDt(0);
|
||||
}
|
||||
if((mask & 128) == 0) {
|
||||
outputUserInfo.setGender(0);
|
||||
}
|
||||
if((mask & 256) == 0) {
|
||||
outputUserInfo.setSocial(null);
|
||||
}
|
||||
if((mask & 512) == 0) {
|
||||
outputUserInfo.setType(0);
|
||||
}
|
||||
list.add(outputUserInfo);
|
||||
}
|
||||
|
||||
RestResult result;
|
||||
if (list.isEmpty()) {
|
||||
result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST);
|
||||
} else {
|
||||
OutputUserInfoList outputUserInfoList = new OutputUserInfoList();
|
||||
outputUserInfoList.userInfos = list;
|
||||
result = RestResult.ok(outputUserInfoList);
|
||||
}
|
||||
|
||||
setResponseContent(result, response);
|
||||
} else {
|
||||
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3091,6 +3091,102 @@ public class DatabaseStore {
|
||||
return outList;
|
||||
}
|
||||
|
||||
List<WFCMessage.User> getUserInfosByMobile(String mobile, boolean includeDeleted) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
ResultSet rs = null;
|
||||
List<WFCMessage.User> outList = new ArrayList<>();
|
||||
try {
|
||||
connection = DBUtil.getConnection();
|
||||
String sql = "select `_uid`, `_name`" +
|
||||
", `_display_name`" +
|
||||
", `_portrait`" +
|
||||
", `_mobile`" +
|
||||
", `_gender`" +
|
||||
", `_email`" +
|
||||
", `_address`" +
|
||||
", `_company`" +
|
||||
", `_social`" +
|
||||
", `_extra`" +
|
||||
", `_type`" +
|
||||
", `_deleted`" +
|
||||
", `_dt` from t_user where `_mobile` = ?";
|
||||
if(!includeDeleted) {
|
||||
sql += " and `_deleted` = 0";
|
||||
}
|
||||
statement = connection.prepareStatement(sql);
|
||||
statement.setString(1, mobile);
|
||||
|
||||
rs = statement.executeQuery();
|
||||
while (rs.next()) {
|
||||
WFCMessage.User.Builder builder = WFCMessage.User.newBuilder();
|
||||
int index = 1;
|
||||
String value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setUid(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setName(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setDisplayName(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setPortrait(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setMobile(value);
|
||||
|
||||
int gender = rs.getInt(index++);
|
||||
builder.setGender(gender);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setEmail(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setAddress(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setCompany(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setSocial(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setExtra(value);
|
||||
|
||||
int type = rs.getInt(index++);
|
||||
builder.setType(type);
|
||||
|
||||
int deleted = rs.getInt(index++);
|
||||
builder.setDeleted(deleted);
|
||||
|
||||
long longValue = rs.getLong(index++);
|
||||
if(longValue <= 0)
|
||||
longValue = 1;
|
||||
builder.setUpdateDt(longValue);
|
||||
|
||||
outList.add(builder.build());
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e, RDBS_Exception);
|
||||
} finally {
|
||||
DBUtil.closeDB(connection, statement, rs);
|
||||
}
|
||||
return outList;
|
||||
}
|
||||
|
||||
List<WFCMessage.User> getAllUsers(int count, int offset) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
@@ -3188,6 +3284,69 @@ public class DatabaseStore {
|
||||
return outList;
|
||||
}
|
||||
|
||||
List<WFCMessage.Robot> getAllRobots(int count, int offset) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
ResultSet rs = null;
|
||||
List<WFCMessage.Robot> outList = new ArrayList<>();
|
||||
|
||||
try {
|
||||
connection = DBUtil.getConnection();
|
||||
String sql = "select `_uid`, `_owner`" +
|
||||
", `_secret`" +
|
||||
", `_callback`" +
|
||||
", `_state`" +
|
||||
", `_extra`" +
|
||||
", `_dt` from t_robot limit ? offset ?";
|
||||
statement = connection.prepareStatement(sql);
|
||||
|
||||
int index = 1;
|
||||
statement.setInt(1, count);
|
||||
statement.setInt(2, offset);
|
||||
|
||||
rs = statement.executeQuery();
|
||||
while (rs.next()) {
|
||||
WFCMessage.Robot.Builder builder = WFCMessage.Robot.newBuilder();
|
||||
index = 1;
|
||||
String value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setUid(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setOwner(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setSecret(value);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setCallback(value);
|
||||
|
||||
|
||||
int state = rs.getInt(index++);
|
||||
builder.setState(state);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setExtra(value);
|
||||
|
||||
long longValue = rs.getLong(index++);
|
||||
|
||||
outList.add(builder.build());
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e, RDBS_Exception);
|
||||
} finally {
|
||||
DBUtil.closeDB(connection, statement, rs);
|
||||
}
|
||||
|
||||
return outList;
|
||||
}
|
||||
|
||||
List<String> getUserRobotIds(String userId) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
|
||||
@@ -3272,11 +3272,21 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
return databaseStore.getUserInfosByEmail(email);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WFCMessage.User> getUserInfosByMobile(String mobile, boolean includeDeleted) {
|
||||
return databaseStore.getUserInfosByMobile(mobile, includeDeleted);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WFCMessage.User> getUserInfoList(int count, int offset) {
|
||||
return databaseStore.getAllUsers(count, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WFCMessage.Robot> getRobotInfoList(int count, int offset) {
|
||||
return databaseStore.getAllRobots(count, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUserRobotIds(String userId) {
|
||||
return databaseStore.getUserRobotIds(userId);
|
||||
|
||||
@@ -154,9 +154,11 @@ public interface IMessagesStore {
|
||||
WFCMessage.User getUserInfoByName(String name);
|
||||
WFCMessage.User getUserInfoByMobile(String mobile);
|
||||
List<WFCMessage.User> getUserInfosByEmail(String email);
|
||||
List<WFCMessage.User> getUserInfosByMobile(String mobile, boolean includeDeleted);
|
||||
ErrorCode searchUser(String userId, String keyword, int searchType, int userType, int page, List<WFCMessage.User> users);
|
||||
|
||||
List<WFCMessage.User> getUserInfoList(int count, int offset);
|
||||
List<WFCMessage.Robot> getRobotInfoList(int count, int offset);
|
||||
List<String> getUserRobotIds(String userId);
|
||||
|
||||
boolean updateSystemSetting(int id, String value, String desc);
|
||||
|
||||
@@ -43,8 +43,10 @@ public interface APIPath {
|
||||
String User_Get_Info = "/admin/user/get_info";
|
||||
String User_Batch_Get_Infos = "/admin/user/batch_get_infos";
|
||||
String User_Get_Email_Info = "/admin/user/get_info_by_email";
|
||||
String User_Get_By_Mobile = "/admin/user/get_info_by_mobile";
|
||||
String User_Get_All = "/admin/user/all";
|
||||
String User_Get_Robot_Info = "/admin/user/get_robot_info";
|
||||
String User_Get_All_Robots = "/admin/user/get_all_robots";
|
||||
String User_Get_User_Robots = "/admin/user/get_user_robots";
|
||||
String User_Get_Blocked_List = "/admin/user/get_blocked_list";
|
||||
String User_Check_Block_Status = "/admin/user/check_block_status";
|
||||
@@ -88,6 +90,7 @@ public interface APIPath {
|
||||
String Msg_Delivery = "/admin/message/delivery";
|
||||
String Conversation_Delete = "/admin/conversation/delete";
|
||||
String Msg_Clear_By_User = "/admin/message/clear_by_user";
|
||||
String Msg_Import = "/admin/message/import";
|
||||
|
||||
String Create_Group = "/admin/group/create";
|
||||
String Group_Dismiss = "/admin/group/del";
|
||||
@@ -151,6 +154,8 @@ public interface APIPath {
|
||||
String Channel_Application_Get_UserInfo = "/channel/application/get_user_info";
|
||||
|
||||
String Robot_User_Info = "/robot/user_info";
|
||||
String Robot_User_Get_Email_Info = "/robot/user/get_info_by_email";
|
||||
String Robot_User_Batch_Get_Infos = "/robot/user/batch_get_infos";
|
||||
String Robot_Get_Profile = "/robot/profile";
|
||||
String Robot_Message_Send = "/robot/message/send";
|
||||
String Robot_Message_Reply = "/robot/message/reply";
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
package cn.wildfirechat.pojos;
|
||||
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ImportMessagesData {
|
||||
public static class ImportMessage {
|
||||
public String sender;
|
||||
public Conversation conversation;
|
||||
public MessagePayload payload;
|
||||
public List<String> receivers;
|
||||
public long timestamp;
|
||||
}
|
||||
public List<ImportMessage> messages;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package cn.wildfirechat.pojos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OutputGetRobotList {
|
||||
public List<OutputRobot> robotInfoList;
|
||||
}
|
||||
@@ -41,24 +41,49 @@ public class ChannelServiceApi implements Closeable {
|
||||
channelHttpUtils = new ChannelHttpUtils(imurl, channelId, secret);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户ID获取用户信息
|
||||
* @param userId 用户ID
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> getUserInfo(String userId) throws Exception {
|
||||
String path = APIPath.Channel_User_Info;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(userId, null, null);
|
||||
return channelHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户信息
|
||||
* @param userName 用户名
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> getUserInfoByName(String userName) throws Exception {
|
||||
String path = APIPath.Channel_User_Info;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(null, userName, null);
|
||||
return channelHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据手机号获取用户信息
|
||||
* @param mobile 手机号
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> getUserInfoByMobile(String mobile) throws Exception {
|
||||
String path = APIPath.Channel_User_Info;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(null, null, mobile);
|
||||
return channelHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改频道信息
|
||||
* @param type 修改类型,参考{@link cn.wildfirechat.proto.ProtoConstants.ModifyChannelInfoType}
|
||||
* @param value 修改的值
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> modifyChannelInfo(/*ProtoConstants.ModifyChannelInfoType*/int type, String value) throws Exception {
|
||||
String path = APIPath.Channel_Update_Profile;
|
||||
InputModifyChannelInfo modifyChannelInfo = new InputModifyChannelInfo();
|
||||
@@ -67,16 +92,35 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, modifyChannelInfo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取频道信息
|
||||
* @return 频道信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputGetChannelInfo> getChannelInfo() throws Exception {
|
||||
String path = APIPath.Channel_Get_Profile;
|
||||
return channelHttpUtils.httpJsonPost(path, null, OutputGetChannelInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改频道菜单
|
||||
* @param menus 菜单列表
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> modifyChannelMenu(List<PojoChannelMenu> menus) throws Exception {
|
||||
String menuStr = new Gson().toJson(menus);
|
||||
return modifyChannelInfo(ProtoConstants.ModifyChannelInfoType.Modify_Channel_Menu, menuStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送频道消息
|
||||
* @param line 线路
|
||||
* @param targets 目标用户ID列表
|
||||
* @param payload 消息内容
|
||||
* @return 发送结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<SendMessageResult> sendMessage(int line, List<String> targets, MessagePayload payload) throws Exception {
|
||||
String path = APIPath.Channel_Message_Send;
|
||||
SendChannelMessageData messageData = new SendChannelMessageData();
|
||||
@@ -86,6 +130,12 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, messageData, SendMessageResult.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回频道消息
|
||||
* @param messageUid 消息UID
|
||||
* @return 操作结果,返回被撤回消息的UID
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<String> recallMessage(long messageUid) throws Exception {
|
||||
String path = APIPath.Channel_Msg_Recall;
|
||||
RecallMessageData messageData = new RecallMessageData();
|
||||
@@ -93,6 +143,13 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, messageData, String.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新发布频道消息
|
||||
* @param messageUid 消息UID
|
||||
* @param targets 目标用户ID列表
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> republishMessage(long messageUid, List<String> targets) throws Exception {
|
||||
String path = APIPath.Channel_Msg_Republish;
|
||||
RepublishChannelMessageData messageData = new RepublishChannelMessageData();
|
||||
@@ -101,6 +158,12 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, messageData, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订阅频道
|
||||
* @param userId 用户ID
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> subscribe(String userId) throws Exception {
|
||||
String path = APIPath.Channel_Subscribe;
|
||||
InputChannelSubscribe input = new InputChannelSubscribe();
|
||||
@@ -109,6 +172,12 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, input, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订阅频道
|
||||
* @param userId 用户ID
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> unsubscribe(String userId) throws Exception {
|
||||
String path = APIPath.Channel_Subscribe;
|
||||
InputChannelSubscribe input = new InputChannelSubscribe();
|
||||
@@ -117,17 +186,34 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, input, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取频道订阅者列表
|
||||
* @return 订阅者用户ID列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputStringList> getSubscriberList() throws Exception {
|
||||
String path = APIPath.Channel_Subscriber_List;
|
||||
return channelHttpUtils.httpJsonPost(path, null, OutputStringList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断用户是否订阅了频道
|
||||
* @param userId 用户ID
|
||||
* @return 是否订阅
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Boolean> isSubscriber(String userId) throws Exception {
|
||||
String path = APIPath.Channel_Is_Subscriber;
|
||||
InputUserId input = new InputUserId(userId);
|
||||
return channelHttpUtils.httpJsonPost(path, input, Boolean.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过授权码获取应用用户信息
|
||||
* @param authCode 授权码
|
||||
* @return 应用用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputApplicationUserInfo> applicationGetUserInfo(String authCode) throws Exception {
|
||||
String path = APIPath.Channel_Application_Get_UserInfo;
|
||||
InputApplicationGetUserInfo input = new InputApplicationGetUserInfo();
|
||||
@@ -135,6 +221,11 @@ public class ChannelServiceApi implements Closeable {
|
||||
return channelHttpUtils.httpJsonPost(path, input, OutputApplicationUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用签名配置
|
||||
* <p>用于客户端接入时的签名验证</p>
|
||||
* @return 应用签名配置数据
|
||||
*/
|
||||
public OutputApplicationConfigData getApplicationSignature() {
|
||||
int nonce = (int)(Math.random() * 100000 + 3);
|
||||
long timestamp = System.currentTimeMillis()/1000;
|
||||
@@ -149,6 +240,10 @@ public class ChannelServiceApi implements Closeable {
|
||||
return configData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭服务,释放资源
|
||||
* @throws IOException 关闭时发生IO异常
|
||||
*/
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
channelHttpUtils.close();
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -5,6 +5,7 @@ import cn.wildfirechat.pojos.*;
|
||||
import cn.wildfirechat.sdk.model.IMResult;
|
||||
import cn.wildfirechat.sdk.utilities.AdminHttpUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -293,4 +294,20 @@ public class MessageAdmin {
|
||||
InputUserId input = new InputUserId(userId);
|
||||
return AdminHttpUtils.httpJsonPost(path, input, OutputTimestamp.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入消息。只用在服务为正式使用之前,从别的IM服务进行导入历史消息。当导入时,只能部署一个节点,可以多线程导入。当导入结束后,检查有没有异常日志,如果有异常日志需要解决后重新导入。
|
||||
* 当导入完成后,重启IM服务(不要用kill -9,需要等待缓存写入)。重启之后再用客户端验证是否有历史消息可以从远端加载。另外需要保留之前IM服务的备份记录,以防有消息泄漏。
|
||||
* 下面所有参数必须有效才行,如果是群组消息,还需要先创建群组。
|
||||
*
|
||||
* @param messages 消息列表
|
||||
* @return 导入结果
|
||||
* @throws Exception
|
||||
*/
|
||||
public static IMResult<Void> importMessage(List<ImportMessagesData.ImportMessage> messages) throws Exception {
|
||||
String path = APIPath.Msg_Import;
|
||||
ImportMessagesData messageData = new ImportMessagesData();
|
||||
messageData.messages = messages;
|
||||
return AdminHttpUtils.httpJsonPost(path, messageData, Void.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,6 +97,14 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, messageData, SendMessageResult.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 回复消息
|
||||
* @param messageUid 原消息UID
|
||||
* @param payload 消息内容
|
||||
* @param only2Sender 是否只回复给原发送者
|
||||
* @return 发送结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<SendMessageResult> replyMessage(long messageUid, MessagePayload payload, boolean only2Sender) throws Exception {
|
||||
String path = APIPath.Robot_Message_Reply;
|
||||
ReplyMessageData messageData = new ReplyMessageData();
|
||||
@@ -106,6 +114,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, messageData, SendMessageResult.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回消息
|
||||
* @param messageUid 消息UID
|
||||
* @return 操作结果,返回被撤回消息的UID
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<String> recallMessage(long messageUid) throws Exception {
|
||||
String path = APIPath.Robot_Message_Recall;
|
||||
RecallMessageData messageData = new RecallMessageData();
|
||||
@@ -113,34 +127,101 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, messageData, String.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新消息内容
|
||||
* @param messageUid 消息UID
|
||||
* @param payload 新的消息内容
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMessage(long messageUid, MessagePayload payload) throws Exception {
|
||||
return updateMessage(messageUid, payload, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新消息内容
|
||||
* @param messageUid 消息UID
|
||||
* @param payload 新的消息内容
|
||||
* @param distribute 是否分发给在线用户
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMessage(long messageUid, MessagePayload payload, boolean distribute) throws Exception {
|
||||
String path = APIPath.Robot_Message_Update;
|
||||
UpdateMessageContentData updateMessageContentData = new UpdateMessageContentData();
|
||||
updateMessageContentData.setMessageUid(messageUid);
|
||||
updateMessageContentData.setPayload(payload);
|
||||
updateMessageContentData.setUpdateTimestamp(0);
|
||||
updateMessageContentData.setDistribute(1);
|
||||
updateMessageContentData.setDistribute(distribute?1:0);
|
||||
return robotHttpUtils.httpJsonPost(path, updateMessageContentData, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户ID获取用户信息
|
||||
* @param userId 用户ID
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据手机号获取用户信息
|
||||
* @param phone 手机号
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> getUserInfoByMobile(String phone) throws Exception {
|
||||
String path = APIPath.Robot_User_Info;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(null, null, phone);
|
||||
return robotHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户信息
|
||||
* @param userName 用户名
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<InputOutputUserInfo> getUserInfoByName(String userName) throws Exception {
|
||||
String path = APIPath.Robot_User_Info;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(null, userName, null);
|
||||
return robotHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据邮箱获取用户信息列表
|
||||
* @param email 邮箱地址
|
||||
* @return 用户信息列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputUserInfoList> getUserInfoByEmail(String email) throws Exception {
|
||||
String path = APIPath.Robot_User_Get_Email_Info;
|
||||
return robotHttpUtils.httpJsonPost(path, email, OutputUserInfoList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取用户信息
|
||||
* @param userIds 用户ID列表
|
||||
* @return 用户信息列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputUserInfoList> getBatchUsers(List<String> userIds) throws Exception {
|
||||
String path = APIPath.Robot_User_Batch_Get_Infos;
|
||||
InputStringList input = new InputStringList();
|
||||
input.setList(userIds);
|
||||
return robotHttpUtils.httpJsonPost(path, input, OutputUserInfoList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置机器人消息回调地址
|
||||
* @param url 回调地址
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> setCallback(String url) throws Exception {
|
||||
String path = APIPath.Robot_Set_Callback;
|
||||
RobotCallbackPojo pojo = new RobotCallbackPojo();
|
||||
@@ -148,23 +229,43 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, pojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机器人消息回调地址
|
||||
* @return 回调信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<RobotCallbackPojo> getCallback() throws Exception {
|
||||
String path = APIPath.Robot_Get_Callback;
|
||||
return robotHttpUtils.httpJsonPost(path, null, RobotCallbackPojo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除机器人消息回调地址
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> deleteCallback() throws Exception {
|
||||
String path = APIPath.Robot_Delete_Callback;
|
||||
return robotHttpUtils.httpJsonPost(path, null, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机器人资料
|
||||
* @return 机器人资料
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputRobot> getProfile() throws Exception {
|
||||
String path = APIPath.Robot_Get_Profile;
|
||||
return robotHttpUtils.httpJsonPost(path, null, OutputRobot.class);
|
||||
}
|
||||
|
||||
/*
|
||||
type可选范围为MyInfoType,注意不能修改电话号码,如果要修改电话号码请使用adminapi进行修改
|
||||
/**
|
||||
* 更新机器人资料
|
||||
* <p>type可选范围为MyInfoType,注意不能修改电话号码,如果要修改电话号码请使用adminapi进行修改</p>
|
||||
* @param type 资料类型,参考MyInfoType
|
||||
* @param value 资料值
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateProfile(int/*MyInfoType*/ type, String value) throws Exception {
|
||||
String path = APIPath.Robot_Update_Profile;
|
||||
@@ -172,6 +273,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, pojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建群组
|
||||
* @param group_info 群组信息
|
||||
* @param members 群成员列表
|
||||
* @param member_extra 成员扩展信息
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 创建结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputCreateGroupResult> createGroup(PojoGroupInfo group_info, List<PojoGroupMember> members, String member_extra, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Create_Group;
|
||||
PojoGroup pojoGroup = new PojoGroup();
|
||||
@@ -186,6 +297,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, createGroup, OutputCreateGroupResult.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取群组信息
|
||||
* @param groupId 群组ID
|
||||
* @return 群组信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<PojoGroupInfo> getGroupInfo(String groupId) throws Exception {
|
||||
String path = APIPath.Robot_Group_Get_Info;
|
||||
InputGetGroup input = new InputGetGroup();
|
||||
@@ -194,6 +311,14 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, PojoGroupInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解散群组
|
||||
* @param groupId 群组ID
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> dismissGroup(String groupId, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Dismiss;
|
||||
InputDismissGroup dismissGroup = new InputDismissGroup();
|
||||
@@ -203,6 +328,15 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, dismissGroup, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转让群组
|
||||
* @param groupId 群组ID
|
||||
* @param newOwner 新群主用户ID
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> transferGroup(String groupId, String newOwner, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Transfer;
|
||||
InputTransferGroup transferGroup = new InputTransferGroup();
|
||||
@@ -213,6 +347,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, transferGroup, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改群组信息
|
||||
* @param groupId 群组ID
|
||||
* @param type 修改类型,参考ModifyGroupInfoType
|
||||
* @param value 修改的值
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> modifyGroupInfo(String groupId, /*ModifyGroupInfoType*/int type, String value, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Modify_Info;
|
||||
InputModifyGroupInfo modifyGroupInfo = new InputModifyGroupInfo();
|
||||
@@ -225,6 +369,12 @@ public class RobotService implements Closeable {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取群成员列表
|
||||
* @param groupId 群组ID
|
||||
* @return 群成员列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputGroupMemberList> getGroupMembers(String groupId) throws Exception {
|
||||
String path = APIPath.Robot_Group_Member_List;
|
||||
InputGetGroup input = new InputGetGroup();
|
||||
@@ -232,6 +382,13 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定群成员信息
|
||||
* @param groupId 群组ID
|
||||
* @param memberId 成员用户ID
|
||||
* @return 群成员信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<PojoGroupMember> getGroupMember(String groupId, String memberId) throws Exception {
|
||||
String path = APIPath.Robot_Group_Member_Get;
|
||||
InputGetGroupMember input = new InputGetGroupMember();
|
||||
@@ -240,6 +397,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, PojoGroupMember.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加群成员
|
||||
* @param groupId 群组ID
|
||||
* @param groupMembers 要添加的成员列表
|
||||
* @param member_extra 成员扩展信息
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> addGroupMembers(String groupId, List<PojoGroupMember> groupMembers, String member_extra, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Member_Add;
|
||||
InputAddGroupMember addGroupMember = new InputAddGroupMember();
|
||||
@@ -251,6 +418,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置群管理员
|
||||
* @param groupId 群组ID
|
||||
* @param groupMemberIds 成员用户ID列表
|
||||
* @param isManager 是否设为管理员
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> setGroupManager(String groupId, List<String> groupMemberIds, boolean isManager, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Set_Manager;
|
||||
InputSetGroupManager addGroupMember = new InputSetGroupManager();
|
||||
@@ -262,6 +439,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁言/取消禁言群成员
|
||||
* @param groupId 群组ID
|
||||
* @param groupMemberIds 成员用户ID列表
|
||||
* @param isMute 是否禁言
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> muteGroupMember(String groupId, List<String> groupMemberIds, boolean isMute, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Mute_Member;
|
||||
InputMuteGroupMember addGroupMember = new InputMuteGroupMember();
|
||||
@@ -273,6 +460,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 允许/禁止群成员
|
||||
* @param groupId 群组ID
|
||||
* @param groupMemberIds 成员用户ID列表
|
||||
* @param isAllow 是否允许
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> allowGroupMember(String groupId, List<String> groupMemberIds, boolean isAllow, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Allow_Member;
|
||||
InputMuteGroupMember addGroupMember = new InputMuteGroupMember();
|
||||
@@ -284,6 +481,15 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 踢出群成员
|
||||
* @param groupId 群组ID
|
||||
* @param groupMemberIds 要踢出的成员用户ID列表
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> kickoffGroupMembers(String groupId, List<String> groupMemberIds, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Member_Kickoff;
|
||||
InputKickoffGroupMember kickoffGroupMember = new InputKickoffGroupMember();
|
||||
@@ -294,6 +500,14 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, kickoffGroupMember, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出群组
|
||||
* @param groupId 群组ID
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> quitGroup(String groupId, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Member_Quit;
|
||||
InputQuitGroup quitGroup = new InputQuitGroup();
|
||||
@@ -303,6 +517,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, quitGroup, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置群成员昵称
|
||||
* @param groupId 群组ID
|
||||
* @param memberId 成员用户ID
|
||||
* @param alias 群昵称
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> setGroupMemberAlias(String groupId, String memberId, String alias, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Set_Member_Alias;
|
||||
InputSetGroupMemberAlias input = new InputSetGroupMemberAlias();
|
||||
@@ -314,6 +538,16 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置群成员扩展信息
|
||||
* @param groupId 群组ID
|
||||
* @param memberId 成员用户ID
|
||||
* @param extra 扩展信息
|
||||
* @param to_lines 指定线路
|
||||
* @param notify_message 通知消息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> setGroupMemberExtra(String groupId, String memberId, String extra, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
|
||||
String path = APIPath.Robot_Group_Set_Member_Extra;
|
||||
InputSetGroupMemberExtra input = new InputSetGroupMemberExtra();
|
||||
@@ -325,6 +559,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过授权码获取应用用户信息
|
||||
* @param authCode 授权码
|
||||
* @return 应用用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputApplicationUserInfo> applicationGetUserInfo(String authCode) throws Exception {
|
||||
String path = APIPath.Robot_Application_Get_UserInfo;
|
||||
InputApplicationGetUserInfo input = new InputApplicationGetUserInfo();
|
||||
@@ -332,6 +572,11 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, input, OutputApplicationUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用签名配置
|
||||
* <p>用于客户端接入时的签名验证</p>
|
||||
* @return 应用签名配置数据
|
||||
*/
|
||||
public OutputApplicationConfigData getApplicationSignature() {
|
||||
int nonce = (int)(Math.random() * 100000 + 3);
|
||||
long timestamp = System.currentTimeMillis()/1000;
|
||||
@@ -346,12 +591,36 @@ public class RobotService implements Closeable {
|
||||
return configData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送会议相关请求
|
||||
* @param robotId 机器人ID
|
||||
* @param clientId 客户端ID
|
||||
* @param request 请求类型
|
||||
* @param sessionId 会话ID
|
||||
* @param roomId 会议室ID
|
||||
* @param data 请求数据
|
||||
* @param advance 是否高级请求
|
||||
* @return 请求结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<String> sendConferenceRequest(String robotId, String clientId, String request, long sessionId, String roomId, String data, boolean advance) throws Exception {
|
||||
String path = APIPath.Robot_Conference_Request;
|
||||
InputConferenceRequest input = new InputConferenceRequest(robotId, clientId, request, sessionId, roomId, data, advance);
|
||||
return robotHttpUtils.httpJsonPost(path, input, String.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布朋友圈动态
|
||||
* @param type 内容类型,参考MomentsContentType
|
||||
* @param text 文本内容
|
||||
* @param medias 媒体列表
|
||||
* @param toUsers 可见用户列表
|
||||
* @param excludeUsers 不可见用户列表
|
||||
* @param mentionedUsers 提及用户列表
|
||||
* @param extra 扩展信息
|
||||
* @return 发布结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<FeedPojo> postMomentsFeed(int/*MomentsContentType*/ type, String text, List<MediaEntry> medias, List<String> toUsers, List<String> excludeUsers, List<String> mentionedUsers, String extra) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Post_Feed;
|
||||
FeedPojo feedPojo = new FeedPojo();
|
||||
@@ -376,6 +645,19 @@ public class RobotService implements Closeable {
|
||||
return feedResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈动态
|
||||
* @param feedId 动态ID
|
||||
* @param type 内容类型,参考MomentsContentType
|
||||
* @param text 文本内容
|
||||
* @param medias 媒体列表
|
||||
* @param toUsers 可见用户列表
|
||||
* @param excludeUsers 不可见用户列表
|
||||
* @param mentionedUsers 提及用户列表
|
||||
* @param extra 扩展信息
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsFeed(long feedId, int/*MomentsContentType*/ type, String text, List<MediaEntry> medias, List<String> toUsers, List<String> excludeUsers, List<String> mentionedUsers, String extra) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Feed;
|
||||
FeedPojo feedPojo = new FeedPojo();
|
||||
@@ -390,6 +672,14 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, feedPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取朋友圈动态列表
|
||||
* @param feedId 起始动态ID
|
||||
* @param count 获取数量
|
||||
* @param user 指定用户ID,为空表示获取所有
|
||||
* @return 动态列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<FeedsPojo> getMomentsFeeds(long feedId, int count, String user) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Pull_Feeds;
|
||||
PullFeedRequestPojo requestPojo = new PullFeedRequestPojo();
|
||||
@@ -399,6 +689,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, FeedsPojo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单条朋友圈动态
|
||||
* @param feedId 动态ID
|
||||
* @return 动态详情
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<FeedPojo> getMomentsFeed(long feedId) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Fetch_Feed;
|
||||
PullOneFeedRequestPojo requestPojo = new PullOneFeedRequestPojo();
|
||||
@@ -406,6 +702,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, FeedPojo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除朋友圈动态
|
||||
* @param feedId 动态ID
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> deleteMomentsFeed(long feedId) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Recall_Feed;
|
||||
IdPojo requestPojo = new IdPojo();
|
||||
@@ -413,6 +715,17 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布朋友圈评论
|
||||
* @param feedId 动态ID
|
||||
* @param replyId 回复的评论ID
|
||||
* @param type 评论类型,参考MomentsCommentType
|
||||
* @param text 评论内容
|
||||
* @param replyTo 回复目标用户ID
|
||||
* @param extra 扩展信息
|
||||
* @return 评论结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<CommentPojo> postMomentsComment(long feedId, long replyId, int/*MomentsCommentType*/ type, String text, String replyTo, String extra) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Post_Comment;
|
||||
CommentPojo commentPojo = new CommentPojo();
|
||||
@@ -436,6 +749,13 @@ public class RobotService implements Closeable {
|
||||
return feedResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除朋友圈评论
|
||||
* @param feedId 动态ID
|
||||
* @param commentId 评论ID
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> deleteMomentsComment(long feedId, long commentId) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Recall_Comment;
|
||||
IdPojo requestPojo = new IdPojo();
|
||||
@@ -444,6 +764,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户朋友圈资料
|
||||
* @param userId 用户ID
|
||||
* @return 朋友圈资料
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<MomentProfilePojo> getUserMomentsProfile(String userId) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Fetch_Profiles;
|
||||
PullProfileRequestPojo requestPojo = new PullProfileRequestPojo();
|
||||
@@ -451,6 +777,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, MomentProfilePojo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈背景图
|
||||
* @param url 背景图URL
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsBackgroundUrl(String url) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Profiles_Value;
|
||||
PushProfileValueRequestPojo requestPojo = new PushProfileValueRequestPojo();
|
||||
@@ -459,6 +791,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈陌生人可见数量
|
||||
* @param count 可见数量
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsStrangerVisibleCount(int count) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Profiles_Value;
|
||||
PushProfileValueRequestPojo requestPojo = new PushProfileValueRequestPojo();
|
||||
@@ -467,6 +805,12 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈可见范围
|
||||
* @param scope 可见范围,参考MomentsVisibleScope
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsVisibleScope(int/*MomentsVisibleScope*/ scope) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Profiles_Value;
|
||||
PushProfileValueRequestPojo requestPojo = new PushProfileValueRequestPojo();
|
||||
@@ -475,6 +819,13 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈黑名单
|
||||
* @param addList 要添加的用户ID列表
|
||||
* @param removeList 要移除的用户ID列表
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsBlackList(List<String> addList, List<String> removeList) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Profiles_List_Value;
|
||||
PushProfileListRequestPojo requestPojo = new PushProfileListRequestPojo();
|
||||
@@ -484,6 +835,13 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新朋友圈屏蔽列表
|
||||
* @param addList 要添加的用户ID列表
|
||||
* @param removeList 要移除的用户ID列表
|
||||
* @return 操作结果
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<Void> updateMomentsBlockList(List<String> addList, List<String> removeList) throws Exception {
|
||||
String path = APIPath.Robot_Moments_Update_Profiles_List_Value;
|
||||
PushProfileListRequestPojo requestPojo = new PushProfileListRequestPojo();
|
||||
@@ -493,6 +851,14 @@ public class RobotService implements Closeable {
|
||||
return robotHttpUtils.httpJsonPost(path, requestPojo, Void.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取预签名上传地址
|
||||
* @param fileName 文件名
|
||||
* @param mediaType 媒体类型,参考{@link cn.wildfirechat.proto.ProtoConstants.MessageMediaType}
|
||||
* @param contentType 文件Content-Type
|
||||
* @return 预签名上传地址信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public IMResult<OutputPresignedUploadUrl> getPresignedUploadUrl(String fileName, int/*ProtoConstants.MessageMediaType*/ mediaType, String contentType) throws Exception {
|
||||
String path = APIPath.Robot_Get_Presigned_Upload_Url;
|
||||
|
||||
@@ -820,6 +1186,10 @@ public class RobotService implements Closeable {
|
||||
// 注意:正常流程下的流关闭在 uploadToQiniu 或 uploadToOther 的 finally 块中处理
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭服务,释放资源
|
||||
* @throws IOException 关闭时发生IO异常
|
||||
*/
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
robotHttpUtils.close();
|
||||
|
||||
@@ -70,6 +70,7 @@ public class UserAdmin {
|
||||
|
||||
/**
|
||||
* 根据手机号获取用户信息(不包含已删除用户)
|
||||
* @deprecated 用户手机号码不要求唯一,正常应该业务系统保证电话号码唯一。如果业务系统不限制电话号码唯一,可能一个号码有多个用户,此方法只能返回一个,此时建议使用 {@link #getUsersByMobile(String mobile, boolean includeDeleted)}
|
||||
* @param mobile 手机号
|
||||
* @return 用户信息
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
@@ -79,7 +80,8 @@ public class UserAdmin {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据手机号获取用户信息
|
||||
* 根据手机号获取用户信息,
|
||||
* @deprecated 用户手机号码不要求唯一,正常应该业务系统保证电话号码唯一。如果业务系统不限制电话号码唯一,可能一个号码有多个用户,此方法只能返回一个,此时建议使用 {@link #getUsersByMobile(String mobile, boolean includeDeleted)}
|
||||
* @param mobile 手机号
|
||||
* @param includeDeleted 是否包含已删除的用户
|
||||
* @return 用户信息
|
||||
@@ -91,6 +93,19 @@ public class UserAdmin {
|
||||
return AdminHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据电话号码获取用户信息列表
|
||||
* @param mobile 邮箱地址
|
||||
* @param includeDeleted 是否包含已删除的用户
|
||||
* @return 用户信息列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public static IMResult<OutputUserInfoList> getUsersByMobile(String mobile, boolean includeDeleted) throws Exception {
|
||||
String path = APIPath.User_Get_By_Mobile;
|
||||
InputGetUserInfo getUserInfo = new InputGetUserInfo(null, null, mobile, includeDeleted);
|
||||
return AdminHttpUtils.httpJsonPost(path, getUserInfo, OutputUserInfoList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据邮箱获取用户信息列表
|
||||
* @param email 邮箱地址
|
||||
@@ -117,6 +132,21 @@ public class UserAdmin {
|
||||
return AdminHttpUtils.httpJsonPost(path, input, OutputGetUserList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有机器人列表(分页)
|
||||
* @param count 每页数量
|
||||
* @param offset 偏移量
|
||||
* @return 机器人列表
|
||||
* @throws Exception 请求失败时抛出异常
|
||||
*/
|
||||
public static IMResult<OutputGetRobotList> getAllRobots(int count, int offset) throws Exception {
|
||||
String path = APIPath.User_Get_All_Robots;
|
||||
InputGetUserList input = new InputGetUserList();
|
||||
input.count = count;
|
||||
input.offset = offset;
|
||||
return AdminHttpUtils.httpJsonPost(path, input, OutputGetRobotList.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取用户信息
|
||||
* @param userIds 用户ID列表
|
||||
|
||||
Reference in New Issue
Block a user