Commit 0ee2a88e by Shadow

增加addOrModifyConversationAttributes接口

parent e5fc0ced
...@@ -31,6 +31,7 @@ import com.wecloud.im.param.MutedGroupParam; ...@@ -31,6 +31,7 @@ import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetHeadPortraitParam; import com.wecloud.im.param.SetHeadPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.AddOrModifyAttributeParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate; import com.wecloud.im.param.add.ImConversationAttrUpdate;
...@@ -301,5 +302,16 @@ public class ImConversationController extends BaseController { ...@@ -301,5 +302,16 @@ public class ImConversationController extends BaseController {
return ApiResult.ok(conversation.getId()); return ApiResult.ok(conversation.getId());
} }
/**
* 创建会话
*/
@PostMapping("/sdk/addOrModifyAttribute")
@ApiOperation(value = "修改会话拓展参")
public ApiResult<Boolean> addOrModifyAttribute(@RequestBody AddOrModifyAttributeParam addOrModifyAttributeParam) throws Exception {
log.info("sdk 修改会话拓展参数入参 {}", JSON.toJSONString(addOrModifyAttributeParam));
return ApiResult.ok(imConversationService.addOrModifyAttribute(addOrModifyAttributeParam));
}
} }
package com.wecloud.im.param.add;
import lombok.Data;
import java.util.Map;
/**
*
* @Author luozh
* @Date 2022年06月06日 11:17
* @Version 1.0
*/
@Data
public class AddOrModifyAttributeParam {
private Long conversationId;
private Map<String, Object> attribute;
}
...@@ -26,6 +26,7 @@ import com.wecloud.im.param.MutedGroupParam; ...@@ -26,6 +26,7 @@ import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetHeadPortraitParam; import com.wecloud.im.param.SetHeadPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.AddOrModifyAttributeParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate; import com.wecloud.im.param.add.ImConversationAttrUpdate;
...@@ -307,4 +308,12 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -307,4 +308,12 @@ public interface ImConversationService extends BaseService<ImConversation> {
ImMessage message, Object content); ImMessage message, Object content);
/**
* 添加或修改会话拓展参数
* @Author Shadow
* @Date 2022年06月06日 11:19:34
* @param addOrModifyAttributeParam
* @Return
*/
Boolean addOrModifyAttribute(AddOrModifyAttributeParam addOrModifyAttributeParam);
} }
...@@ -32,6 +32,7 @@ import cn.hutool.core.date.DateUtil; ...@@ -32,6 +32,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -66,6 +67,7 @@ import com.wecloud.im.param.MutedGroupParam; ...@@ -66,6 +67,7 @@ import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.SetHeadPortraitParam; import com.wecloud.im.param.SetHeadPortraitParam;
import com.wecloud.im.param.TransferOwnerParam; import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.AddOrModifyAttributeParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate; import com.wecloud.im.param.add.ImConversationAttrUpdate;
...@@ -1297,6 +1299,33 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1297,6 +1299,33 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
} }
@Override
public Boolean addOrModifyAttribute(AddOrModifyAttributeParam addOrModifyAttributeParam) {
Long appId = SecurityUtils.getCurrentAppId();
ImConversation conversation = this.getOne(Wrappers.<ImConversation>lambdaQuery().eq(ImConversation::getId,
addOrModifyAttributeParam.getConversationId()).eq(ImConversation::getFkAppid, appId));
Map<String, Object> attribute = addOrModifyAttributeParam.getAttribute();
if (conversation == null) {
throw new BusinessException("会话不存在");
}
TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String, Object>>() {
};
Map<String, Object> conversationAttribute = JSONObject.parseObject(conversation.getAttributes(), typeReference);
if (conversationAttribute == null) {
conversationAttribute = Maps.newHashMap();
}
if (attribute == null || attribute.isEmpty()) {
conversationAttribute = Maps.newHashMap();
} else {
conversationAttribute.putAll(attribute);
}
conversation.setAttributes(JsonUtils.encodeJson(conversationAttribute));
return this.updateById(conversation);
}
/** /**
* 创建加密会话 * 创建加密会话
* *
......
...@@ -181,4 +181,10 @@ public class ResourcePathConstants { ...@@ -181,4 +181,10 @@ public class ResourcePathConstants {
*/ */
public static final String CREATE_CONVERSATION_REQUEST = "/api/conversation/sdk/create"; public static final String CREATE_CONVERSATION_REQUEST = "/api/conversation/sdk/create";
/**
* 添加或修改会话拓展参数
*/
public static final String ADD_OR_MODIFY_CONVERSATION_ATTRIBUTE_REQUEST = "/api/conversation/sdk" +
"/addOrModifyAttribute";
} }
package com.wecloud.im.sdk; package com.wecloud.im.sdk;
import java.util.List; import java.util.List;
import java.util.Map;
import com.wecloud.im.sdk.model.Attributes; import com.wecloud.im.sdk.model.Attributes;
import com.wecloud.im.sdk.model.Blacklist; import com.wecloud.im.sdk.model.Blacklist;
...@@ -189,6 +190,15 @@ public interface WecloudIm { ...@@ -189,6 +190,15 @@ public interface WecloudIm {
List<Conversation> listConversation(Integer chatType, List<Long> conversationIds); List<Conversation> listConversation(Integer chatType, List<Long> conversationIds);
/** /**
* 添加或修改会话拓展信息
* @Author Shadow
* @Date 2022年06月06日 11:08:30
* @param
* @Return
*/
Boolean addOrModifyConversationAttribute(Long conversationId, Map<String, Object> attribute);
/**
* 设置会话置顶 * 设置会话置顶
* @Author luozh * @Author luozh
* @Date 2022年04月26日 03:33:44 * @Date 2022年04月26日 03:33:44
......
...@@ -2,6 +2,7 @@ package com.wecloud.im.sdk; ...@@ -2,6 +2,7 @@ package com.wecloud.im.sdk;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;
import java.util.Map;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
...@@ -184,6 +185,16 @@ public class WecloudImClient implements WecloudIm { ...@@ -184,6 +185,16 @@ public class WecloudImClient implements WecloudIm {
} }
@Override @Override
public Boolean addOrModifyConversationAttribute(Long conversationId, Map<String, Object> attribute) {
AddOrModifyConversationAttributeRequest request =
AddOrModifyConversationAttributeRequest.builder()
.conversationId(conversationId)
.attribute(attribute)
.build();
return imConversationOperation.addOrModifyConversationAttribute(request);
}
@Override
public Boolean setConversationTop(String userId, Long conversationId, Boolean top) { public Boolean setConversationTop(String userId, Long conversationId, Boolean top) {
SetConversationTopRequest setConversationTopRequest = SetConversationTopRequest setConversationTopRequest =
SetConversationTopRequest.builder().userId(userId).conversationId(conversationId).top(top).build(); SetConversationTopRequest.builder().userId(userId).conversationId(conversationId).top(top).build();
......
...@@ -12,12 +12,14 @@ import com.alibaba.fastjson.TypeReference; ...@@ -12,12 +12,14 @@ import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.HttpMethod; import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage; import com.wecloud.im.sdk.common.RequestMessage;
import com.wecloud.im.sdk.exception.WecloudImException; import com.wecloud.im.sdk.exception.WecloudImException;
import com.wecloud.im.sdk.model.AddOrModifyConversationAttributeRequest;
import com.wecloud.im.sdk.model.Conversation; import com.wecloud.im.sdk.model.Conversation;
import com.wecloud.im.sdk.model.CreateConversationRequest; import com.wecloud.im.sdk.model.CreateConversationRequest;
import com.wecloud.im.sdk.model.ListConversationRequest; import com.wecloud.im.sdk.model.ListConversationRequest;
import com.wecloud.im.sdk.model.SetConversationDoNotDisturbRequest; import com.wecloud.im.sdk.model.SetConversationDoNotDisturbRequest;
import com.wecloud.im.sdk.model.SetConversationTopRequest; import com.wecloud.im.sdk.model.SetConversationTopRequest;
import static com.wecloud.im.sdk.ResourcePathConstants.ADD_OR_MODIFY_CONVERSATION_ATTRIBUTE_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.CHAT_SETTING; import static com.wecloud.im.sdk.ResourcePathConstants.CHAT_SETTING;
import static com.wecloud.im.sdk.ResourcePathConstants.CREATE_CONVERSATION_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.CREATE_CONVERSATION_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.LIST_CONVERSATION_REQUEST; import static com.wecloud.im.sdk.ResourcePathConstants.LIST_CONVERSATION_REQUEST;
...@@ -151,4 +153,23 @@ public class WecloudImConversationOperation extends WecloudImOperation { ...@@ -151,4 +153,23 @@ public class WecloudImConversationOperation extends WecloudImOperation {
Object result = doOperation(request); Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Long.class); return JSON.parseObject(JSON.toJSONString(result), Long.class);
} }
public Boolean addOrModifyConversationAttribute(AddOrModifyConversationAttributeRequest addOrModifyConversationAttributeRequest) {
// 参数校验
assertParameterNotNull(addOrModifyConversationAttributeRequest.getConversationId(), "conversationId");
if (addOrModifyConversationAttributeRequest.getAttribute() == null) {
addOrModifyConversationAttributeRequest.setAttribute(new HashMap<>());
}
Map<String, Object> param = new HashMap<>();
param.put("conversationId", addOrModifyConversationAttributeRequest.getConversationId());
param.put("attribute", addOrModifyConversationAttributeRequest.getAttribute());
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(ADD_OR_MODIFY_CONVERSATION_ATTRIBUTE_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(addOrModifyConversationAttributeRequest).build();
Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Boolean.class);
}
} }
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
/**
*
* @Author luozh
* @Date 2022年06月06日 11:10
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class AddOrModifyConversationAttributeRequest extends WebServiceRequest {
/**
* 会话id
*/
private Long conversationId;
/**
* 拓展字段
*/
private Map<String, Object> attribute;
}
...@@ -66,7 +66,7 @@ public class Conversation implements Serializable { ...@@ -66,7 +66,7 @@ public class Conversation implements Serializable {
private String members; private String members;
/** /**
* "会话属性,1:单聊,2:普通群,3:万人群,4:聊天室 5: 临时会话" * "会话属性,1:单聊 2:普通群,3:万人群 4:聊天室 5: 临时会话"
*/ */
private Integer chatType; private Integer chatType;
......
package com.wecloud.im.sdk.sample;
import java.util.HashMap;
import com.wecloud.im.sdk.WecloudIm;
import com.wecloud.im.sdk.WecloudImClientBuilder;
/**
*
* @Author luozh
* @Date 2022年05月10日 14:52
* @Version 1.0
*/
public class AddOrModifyConversationAttributesSample {
private static final String ENDPOINT = "http://127.0.0.1:8082";
private static final String APP_KEY = "QizKVHcILRWp6Td2";
private static final String APP_SECRET = "287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737";
public static void main(String[] args) {
WecloudIm im = new WecloudImClientBuilder().build(ENDPOINT, APP_KEY, APP_SECRET);
im.addOrModifyConversationAttribute(1533648070015918080L, new HashMap<String, Object>() {
{
put("baned", true);
}
});
}
}
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