Commit f4d9f105 by Future

修改群成员昵称事件下发

parent 04045995
...@@ -40,7 +40,8 @@ public class ImConversationMembersController extends BaseController { ...@@ -40,7 +40,8 @@ public class ImConversationMembersController extends BaseController {
@PostMapping("/updateClientRemarkName") @PostMapping("/updateClientRemarkName")
@ApiOperation(value = "添加或修改会话成员备注", notes = "权限:目前只有client成员自己有权限操作") @ApiOperation(value = "添加或修改会话成员备注", notes = "权限:目前只有client成员自己有权限操作")
public ApiResult<Boolean> saveOrUpdateClientRemarkName(@RequestBody ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam) throws Exception { public ApiResult<Boolean> saveOrUpdateClientRemarkName(@RequestBody ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam) throws Exception {
return imConversationMembersService.saveOrUpdateClientRemarkName(imConvMemeClientRemarkNameParam); imConversationMembersService.saveOrUpdateClientRemarkName(imConvMemeClientRemarkNameParam);
return ApiResult.ok();
} }
......
...@@ -36,7 +36,12 @@ public interface ImConversationMembersService extends BaseService<ImConversation ...@@ -36,7 +36,12 @@ public interface ImConversationMembersService extends BaseService<ImConversation
ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication); ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication);
ApiResult<Boolean> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam); /**
* 添加或修改会话成员备注
* @param param
* @return
*/
void saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam param);
/** /**
......
package com.wecloud.im.service.impl; package com.wecloud.im.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
...@@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.mapper.ImConversationMembersMapper; import com.wecloud.im.mapper.ImConversationMembersMapper;
import com.wecloud.im.param.ApiImConversationMembersPageParam; import com.wecloud.im.param.ApiImConversationMembersPageParam;
...@@ -23,9 +25,14 @@ import com.wecloud.im.service.ImConversationMembersService; ...@@ -23,9 +25,14 @@ import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.service.ImMessageService; import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.vo.ConversationMemberVo; import com.wecloud.im.vo.ConversationMemberVo;
import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender; import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils; import com.wecloud.utils.JsonUtils;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -36,7 +43,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -36,7 +43,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 会话成员表 服务实现类 * 会话成员表 服务实现类
...@@ -81,51 +91,67 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -81,51 +91,67 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam imConvMemeClientRemarkNameParam) { public void saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam param) {
ImClient currentClient = imClientService.getCurrentClient();
// shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurrentJwtToken();
// 根据appKey查询application
ImApplication imApplication = imApplicationService.getCacheAppByAppKey(curentJwtToken.getAppKey());
ImClient imClientSender = imClientService.getCurrentClient();
// 查询该成员 // 查询该成员
ImConversationMembers imConversationMember = imConversationMembersService.getOne( ImConversationMembers imConversationMember = imConversationMembersService.getOne(
new QueryWrapper<ImConversationMembers>().lambda() new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkAppid, imApplication.getId()) .eq(ImConversationMembers::getFkAppid, currentClient.getFkAppid())
.eq(ImConversationMembers::getFkConversationId, imConvMemeClientRemarkNameParam.getConversationId()) .eq(ImConversationMembers::getFkConversationId, param.getConversationId())
.eq(ImConversationMembers::getFkClientId, imClientSender.getId()) .eq(ImConversationMembers::getFkClientId, currentClient.getId())
); );
if (imConversationMember == null) { if (imConversationMember == null) {
return ApiResult.fail(); throw new BusinessException("未查询到会话成员信息");
} }
imConversationMember.setClientRemarkName(param.getClientRemarkName());
// // 查询该会话所有成员
// List<ImConversationMembers> membersList = imConversationMembersService.list(
// new QueryWrapper<ImConversationMembers>().lambda()
// .eq(ImConversationMembers::getFkAppid, imApplication.getId())
// .eq(ImConversationMembers::getFkConversationId, imConversationAttrUpdate.getConversationId())
// .notIn(ImConversationMembers::getId, imClientSender.getId())
// );
imConversationMember.setClientRemarkName(imConvMemeClientRemarkNameParam.getClientRemarkName());
boolean b = imConversationMembersService.updateById(imConversationMember); boolean b = imConversationMembersService.updateById(imConversationMember);
if (b) { if (!b) {
throw new BusinessException("修改群成员备注失败");
//TODO ws下发群成员备注变动事件 }
// 查询该会话所有成员
return ApiResult.ok(); List<ImConversationMembers> membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
} else { .eq(ImConversationMembers::getFkAppid, currentClient.getFkAppid())
return ApiResult.fail(); .eq(ImConversationMembers::getFkConversationId, param.getConversationId())
.ne(ImConversationMembers::getFkClientId, currentClient.getId())
);
for (ImConversationMembers member : membersList) {
// 不关心事件是否发送成功
try {
// 给所有成员下发事件消息
ImClient imClientReceiver = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, currentClient.getFkAppid())
.eq(ImClient::getId, member.getFkClientId()));
if (imClientReceiver == null) {
continue;
} }
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setCreateTime(new Date());
imMessageOnlineSend.setType(MsgTypeEnum.CONVERSATION_DISBAND.getUriCode());
imMessageOnlineSend.setSender(currentClient.getClientId());
Map<String, Object> content = new HashMap<>();
content.put("operator", currentClient.getClientId());
content.put("remarkName", param.getClientRemarkName());
imMessageOnlineSend.setContent(content);
imMessageOnlineSend.setConversationId(param.getConversationId());
imMessageOnlineSend.setWithdraw(Boolean.FALSE);
imMessageOnlineSend.setEvent(Boolean.TRUE);
// 向接收方推送
WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.CONVERSATION_EVENT_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, imClientReceiver.getId());
} catch (Exception e) {
log.info("下发解散群事件失败,接收人 {}", JSON.toJSONString(member));
}
}
} }
@Override @Override
......
...@@ -51,6 +51,9 @@ public enum MsgTypeEnum { ...@@ -51,6 +51,9 @@ public enum MsgTypeEnum {
// 群聊取消禁言 -1020 // 群聊取消禁言 -1020
CONVERSATION_MUTED_CANCEL(-1020), CONVERSATION_MUTED_CANCEL(-1020),
// 群成员备注修改 -1021
CONVERSATION_MEMBER_NAME_MODIFY(-1021),
; ;
private final int uriCode; private final int uriCode;
......
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