Commit ae4aa1d6 by 罗长华

sdk新增获取好友列表申请

sdk返回值json处理返回Object
增加/sdk/unsureFriends接口
parent 173a1f0b
......@@ -7,6 +7,7 @@ import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -15,9 +16,11 @@ import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.wecloud.im.entity.ImClient;
......@@ -103,7 +106,25 @@ public class ImFriendController extends BaseController {
@ApiOperation(value = "待接受的好友请求列表,最多只返回1000个")
public ApiResult<List<ImFriendApplyDto>> getUnsureFriends() {
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
List<ImFriendApplyDto> friendInfo = imFriendService.getApplyFriends(currentClient);
return ApiResult.ok(friendInfo);
}
/**
* 待接受的好友请求列表,最多只返回1000个(sdk 调用)
* @Author luozh
* @Date 2022年04月21日 05:07:31
* @param
* @Return
*/
@GetMapping("/sdk/unsureFriends")
@ApiOperation(value = "待接受的好友请求列表,最多只返回1000个")
public ApiResult<List<ImFriendApplyDto>> getUnsureFriendsSdk(@RequestParam("clientId") String clientId) {
ImClient currentClient = imClientService.getCacheImClient(SecurityUtils.getCurrentAppId(), clientId);
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
List<ImFriendApplyDto> friendInfo = imFriendService.getApplyFriends(currentClient);
......@@ -116,7 +137,7 @@ public class ImFriendController extends BaseController {
@PostMapping("/approve")
@ApiOperation(value = "接受/拒绝好友申请")
public ApiResult<Boolean> approveFriend(@RequestBody ImFriendApproveParam param) {
if(param == null || param.getAgree() == null) {
if (param == null || param.getAgree() == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
ImClient currentClient = imClientService.getCurrentClient();
......
......@@ -52,10 +52,10 @@ public class SignatureChecker {
String canonicalString = SignUtils.buildCanonicalString(requestMethod, resourcePath, headers, params);
log.info("服务端api签名字符串: {}", canonicalString);
log.info("服务端api appSecret: {}", appSecret);
String serverSignature = new HmacSHA256Signature().computeSignature(appSecret, canonicalString);
log.info("服务端api签名结果: {}", serverSignature);
log.info("服务端api appSecret: {}", appSecret);
if (!serverSignature.equals(clientSignature)) {
// 返回给用户的response中告诉用户正确的用于验证加密的签名字符串
......
......@@ -26,5 +26,10 @@ public class ResourcePathConstants {
*/
public static final String MODIFY_USER_URL = "/api/imClient/updateHeadAndNickname";
/**
* 获取好友申请列表
*/
public static final String GET_UNSURE_FRIENDS = "/api/friend/sdk/unsureFriends";
}
package com.wecloud.im.sdk;
import java.util.List;
import com.wecloud.im.sdk.model.Friend;
import com.wecloud.im.sdk.model.ImClient;
import com.wecloud.im.sdk.model.Token;
......@@ -46,4 +49,13 @@ public interface WecloudIm {
*/
Boolean modifyUser(Long userId, String nickname, String headPortrait);
/**
* 获取好友请求列表
* @Author luozh
* @Date 2022年04月21日 04:50:57
* @param userId 用户id
* @Return
*/
List<Friend> getUnsureFriends(Long userId);
}
package com.wecloud.im.sdk;
import java.net.URL;
import java.util.List;
import com.wecloud.im.sdk.internal.WecloudImClientOperation;
import com.wecloud.im.sdk.model.ClientLoginRequest;
import com.wecloud.im.sdk.model.Friend;
import com.wecloud.im.sdk.model.GetUnsureFriendsRequest;
import com.wecloud.im.sdk.model.ImClient;
import com.wecloud.im.sdk.model.ModifyUserRequest;
import com.wecloud.im.sdk.model.RegisterClientRequest;
......@@ -67,6 +70,13 @@ public class WecloudImClient implements WecloudIm {
return imClientOperation.modifyUser(modifyUserRequest);
}
@Override
public List<Friend> getUnsureFriends(Long userId) {
GetUnsureFriendsRequest getUnsureFriendsRequest = GetUnsureFriendsRequest.builder().userId(userId).build();
return imClientOperation.getUnsureFriends(getUnsureFriendsRequest);
}
private void initOperations() {
this.imClientOperation = new WecloudImClientOperation(apiDomain, appKey, appSecret);
}
......
package com.wecloud.im.sdk.internal;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.ApiResult;
......@@ -18,10 +17,10 @@ public class ResponseParser {
*
* @param jsonResult
*/
public static JSONObject parse(String jsonResult) {
TypeReference typeRef = new TypeReference<ApiResult<JSONObject>>() {
public static Object parse(String jsonResult) {
TypeReference<ApiResult<Object>> typeRef = new TypeReference<ApiResult<Object>>() {
};
ApiResult<JSONObject> apiResult = (ApiResult<JSONObject>) JSON.parseObject(jsonResult, typeRef);
ApiResult<Object> apiResult = (ApiResult<Object>) JSON.parseObject(jsonResult, typeRef);
return apiResult.getData();
}
}
......@@ -2,20 +2,24 @@ package com.wecloud.im.sdk.internal;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage;
import com.wecloud.im.sdk.model.ClientLoginRequest;
import com.wecloud.im.sdk.model.Friend;
import com.wecloud.im.sdk.model.GetUnsureFriendsRequest;
import com.wecloud.im.sdk.model.ImClient;
import com.wecloud.im.sdk.model.ModifyUserRequest;
import com.wecloud.im.sdk.model.RegisterClientRequest;
import com.wecloud.im.sdk.model.Token;
import static com.wecloud.im.sdk.ResourcePathConstants.GET_TOKEN_URL;
import static com.wecloud.im.sdk.ResourcePathConstants.GET_UNSURE_FRIENDS;
import static com.wecloud.im.sdk.ResourcePathConstants.MODIFY_USER_URL;
import static com.wecloud.im.sdk.ResourcePathConstants.REGISTER_CLIENT_URL;
import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotBlank;
......@@ -54,8 +58,8 @@ public class WecloudImClientOperation extends WecloudImOperation {
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(registerClientRequest).build();
JSONObject result = doOperation(request);
ImClient imClient = JSON.parseObject(result.toJSONString(), ImClient.class);
Object result = doOperation(request);
ImClient imClient = JSON.parseObject(JSON.toJSONString(result), ImClient.class);
return imClient;
}
......@@ -82,8 +86,8 @@ public class WecloudImClientOperation extends WecloudImOperation {
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(clientLoginRequest).build();
JSONObject result = doOperation(request);
Token token = JSON.parseObject(result.toJSONString(), Token.class);
Object result = doOperation(request);
Token token = JSON.parseObject(JSON.toJSONString(result), Token.class);
return token;
}
......@@ -112,8 +116,35 @@ public class WecloudImClientOperation extends WecloudImOperation {
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(modifyUserRequest).build();
JSONObject result = doOperation(request);
Boolean flag = JSON.parseObject(result.toJSONString(), Boolean.class);
Object result = doOperation(request);
Boolean flag = JSON.parseObject(JSON.toJSONString(result), Boolean.class);
return flag;
}
/**
* 待接受的好友请求列表
* @Author luozh
* @Date 2022年04月21日 05:08:13
* @param getUnsureFriendsRequest
* @Return
*/
public List<Friend> getUnsureFriends(GetUnsureFriendsRequest getUnsureFriendsRequest) {
Long userId = getUnsureFriendsRequest.getUserId();
// 参数校验
assertParameterNotNull(userId, "userId");
// 校验通过 构建参数
Map<String, String> param = new HashMap<>();
param.put("clientId", userId + "");
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(GET_UNSURE_FRIENDS)
.setMethod(HttpMethod.GET).setParameters(param)
.setOriginalRequest(getUnsureFriendsRequest).build();
Object result = doOperation(request);
TypeReference<List<Friend>> typeReference = new TypeReference<List<Friend>>() {
};
List<Friend> friends = JSON.parseObject(JSON.toJSONString(result), typeReference);
return friends;
}
}
......@@ -7,7 +7,6 @@ import java.util.Date;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.wecloud.im.sdk.common.HttpClient;
import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage;
......@@ -37,7 +36,7 @@ public abstract class WecloudImOperation {
this.appSecret = appSecret;
}
protected JSONObject doOperation(RequestMessage request) {
protected Object doOperation(RequestMessage request) {
Credentials credentials = new Credentials(appKey, appSecret);
// 请求日期
String date = DateUtil.formatHttpDate(new Date());
......@@ -54,7 +53,7 @@ public abstract class WecloudImOperation {
}
@SuppressWarnings("unchecked")
private JSONObject send(RequestMessage request) {
private Object send(RequestMessage request) {
try {
// 组装请求
URL endpoint = new URL(apiDomain, request.getEndpoint());
......
package com.wecloud.im.sdk.model;
import lombok.Data;
import java.io.Serializable;
/**
*
* @Author luozh
* @Date 2022年04月13日 11:03
* @Version 1.0
*/
@Data
public class Friend implements Serializable {
private static final long serialVersionUID = 5580006330057637138L;
/**
* 好友的client-id
*/
private String friendClientId;
/**
* 好友的昵称备注
*/
private String friendName;
/**
* 好友关系状态,1:待确定,2:已确认,3:已拒绝,4:已删除
*/
private Integer state;
/**
* 好友申请者
*/
private String claimerClientId;
/**
* 好友拒绝原因
*/
private String rejectRemark;
/**
* 好友请求说明
*/
private String requestRemark;
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 获取好友申请列表请求
* @Author luozh
* @Date 2022年04月21日 16:51
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Builder
@Data
public class GetUnsureFriendsRequest extends WebServiceRequest {
/**
* 用户id
*/
private Long userId;
}
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import java.io.Serializable;
/**
* 终端
* @Author luozh
......@@ -9,7 +11,7 @@ import lombok.Data;
* @Version 1.0
*/
@Data
public class ImClient {
public class ImClient implements Serializable {
private static final long serialVersionUID = 1L;
private Long userId;
......
package com.wecloud.im.sdk.model;
import lombok.Data;
/**
*
* @Author luozh
* @Date 2022年04月13日 11:03
* @Version 1.0
*/
@Data
public class ImFriend {
private static final long serialVersionUID = 1L;
private Long id;
private String clientId;
private String clientIdFriend;
private String clientIdClaimer;
private String friendName;
private String rejectRemark;
private String requestRemark;
private Integer state;
}
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import java.io.Serializable;
/**
* client token信息
* @Author luozh
......@@ -9,7 +11,9 @@ import lombok.Data;
* @Version 1.0
*/
@Data
public class Token {
public class Token implements Serializable {
private static final long serialVersionUID = 1L;
/**
* websocket登陆令牌
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment