|
@@ -1,19 +1,28 @@
|
|
|
package com.citu.module.menduner.im.service.wukong;
|
|
|
|
|
|
+import cn.hutool.core.codec.Base64;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.citu.framework.common.pojo.CommonResult;
|
|
|
-import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
|
|
|
-import com.citu.module.menduner.im.controller.app.base.wukong.HistoryMessagesReqVo;
|
|
|
+import com.citu.module.menduner.im.controller.app.base.wukong.*;
|
|
|
+import com.citu.module.menduner.im.dal.dataobject.BackMessage;
|
|
|
import com.citu.module.menduner.im.dal.dataobject.UserMsgDO;
|
|
|
+import com.citu.module.menduner.im.dal.mysql.BackMessageMapper;
|
|
|
import com.citu.module.menduner.im.dal.mysql.UserMsgMapper;
|
|
|
import com.citu.module.menduner.im.service.UserService;
|
|
|
+import com.google.common.collect.ImmutableMap;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.InitializingBean;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
-public class WuKongMessageServiceImpl implements WuKongMessageService{
|
|
|
+public class WuKongMessageServiceImpl implements WuKongMessageService {
|
|
|
|
|
|
UserService userService;
|
|
|
|
|
@@ -21,12 +30,26 @@ public class WuKongMessageServiceImpl implements WuKongMessageService{
|
|
|
|
|
|
UserMsgMapper userMsgMapper;
|
|
|
|
|
|
+ BackMessageMapper backMessageMapper;
|
|
|
|
|
|
@Override
|
|
|
public CommonResult channelMessageSync(ChannelMessageSyncReqVo reqVo) {
|
|
|
String currentLoginUid = userService.getCurrentLoginUid(reqVo.getEnterpriseId());
|
|
|
reqVo.setLoginUid(currentLoginUid);
|
|
|
- return CommonResult.success(wuKongApiService.channelMessageSync(reqVo));
|
|
|
+ ChannelMessageSyncResp channelMessageSyncResp = wuKongApiService.channelMessageSync(reqVo);
|
|
|
+
|
|
|
+ List<Long> collect = channelMessageSyncResp.getMessages().stream().map(item -> Long.valueOf(item.getMessageId())).collect(Collectors.toList());
|
|
|
+ if(!collect.isEmpty()) {
|
|
|
+ List<Long> collect1 = backMessageMapper.selectList(new LambdaQueryWrapper<BackMessage>().in(BackMessage::getBackMessageId, collect)
|
|
|
+ .select(BackMessage::getBackMessageId))
|
|
|
+ .stream().map(item -> item.getBackMessageId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<ChannelMessageSyncMessageVO> collect2 = channelMessageSyncResp.getMessages().stream().filter(item -> !collect1.contains(Long.valueOf(item.getMessageId()))).collect(Collectors.toList());
|
|
|
+ channelMessageSyncResp.setMessages(collect2);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return CommonResult.success(channelMessageSyncResp);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -40,6 +63,46 @@ public class WuKongMessageServiceImpl implements WuKongMessageService{
|
|
|
return CommonResult.success(page);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public CommonResult messagesBack(MessagesBackReqVo reqVo) {
|
|
|
+
|
|
|
+ /**
|
|
|
+ {
|
|
|
+ "type": 1006,
|
|
|
+ "message_id": "234343435", // 需要撤回的消息ID
|
|
|
+ "content": "{0}撤回了一条消息",
|
|
|
+ "extra": [{"uid":"xxx","name":"张三"}]
|
|
|
+ }
|
|
|
+
|
|
|
+ */
|
|
|
+ String currentLoginUid = userService.getCurrentLoginUid(reqVo.getEnterpriseId());
|
|
|
+ Map<String,Object> payloadMap =new HashMap<>();
|
|
|
+ payloadMap.put("type",1006);
|
|
|
+ payloadMap.put("message_id",reqVo.getMessageId());
|
|
|
+ payloadMap.put("content","撤回了一条消息");
|
|
|
+// payloadMap.put("extra", Arrays.asList(ImmutableMap.of("uid",reqVo.getChannelId(),"name",reqVo.getNickName())));
|
|
|
+ ImHeaderReqVo imHeaderReqVo =new ImHeaderReqVo();
|
|
|
+ imHeaderReqVo.setNoPersist(0);
|
|
|
+ imHeaderReqVo.setRedDot(0);
|
|
|
+ imHeaderReqVo.setSyncOnce(0);
|
|
|
+ ImMessageSendReqVo sendReqVo =new ImMessageSendReqVo();
|
|
|
+ sendReqVo.setHeader(imHeaderReqVo);
|
|
|
+ sendReqVo.setFromUid(currentLoginUid);
|
|
|
+ sendReqVo.setChannelId(reqVo.getChannelId());
|
|
|
+ sendReqVo.setChannelType(1);
|
|
|
+ sendReqVo.setPayload(Base64.encode(JSON.toJSONString(payloadMap)));
|
|
|
+ WukongApiResp wukongApiResp = wuKongApiService.messageSend(sendReqVo);
|
|
|
+ if(wukongApiResp.getStatusBool()){
|
|
|
+ BackMessage backMessage = new BackMessage();
|
|
|
+ backMessage.setBackMessageId(Long.valueOf(reqVo.getMessageId()));
|
|
|
+ backMessage.setChannelId(reqVo.getChannelId());
|
|
|
+ backMessage.setFromUid(currentLoginUid);
|
|
|
+ backMessageMapper.insert(backMessage);
|
|
|
+ }
|
|
|
+ return CommonResult.success(wukongApiResp);
|
|
|
+ }
|
|
|
+
|
|
|
@Autowired
|
|
|
public void setUserMsgMapper(UserMsgMapper userMsgMapper) {
|
|
|
this.userMsgMapper = userMsgMapper;
|
|
@@ -55,5 +118,9 @@ public class WuKongMessageServiceImpl implements WuKongMessageService{
|
|
|
this.userService = userService;
|
|
|
}
|
|
|
|
|
|
+ @Autowired
|
|
|
+ public void setBackMessageMapper(BackMessageMapper backMessageMapper) {
|
|
|
+ this.backMessageMapper = backMessageMapper;
|
|
|
+ }
|
|
|
|
|
|
}
|