瀏覽代碼

更新聊天增加撤回操作

DESKTOP-VAEGFGM\zqc 8 月之前
父節點
當前提交
cdbdb20c1f

+ 15 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongMessageController.java

@@ -4,6 +4,7 @@ import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 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.MessagesBackReqVo;
 import com.citu.module.menduner.im.service.wukong.WuKongMessageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -57,6 +58,20 @@ public class WuKongMessageController {
 
 
 
+    /**
+     * @eo.name 撤回消息
+     * @eo.url /im/messages/back
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/im/messages/back")
+    public CommonResult messagesBack(@RequestBody MessagesBackReqVo reqVo){
+        return service.messagesBack(reqVo);
+    }
+
 
     @Autowired
     public void setService(WuKongMessageService service) {

+ 2 - 2
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongApiService.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
-@FeignClient(url = "${im.wukong.url:127.0.0.1:5001}",name = "wulongApiService" )
+@FeignClient(url = "${im.wukong.url:192.168.3.80:5001}",name = "wulongApiService" )
 public interface WuKongApiService {
 
     @PostMapping("/user/token")
@@ -76,7 +76,7 @@ public interface WuKongApiService {
      * @return
      */
     @PostMapping("/message/send")
-    public WukongApiResp   userSend(@RequestBody ImMessageSendReqVo reqVo);
+    public WukongApiResp messageSend(@RequestBody ImMessageSendReqVo reqVo);
 
 
     /**

+ 3 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageService.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.im.service.wukong;
 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.MessagesBackReqVo;
 
 public interface WuKongMessageService {
     CommonResult channelMessageSync(ChannelMessageSyncReqVo reqVo);
 
     CommonResult historyMessages(HistoryMessagesReqVo reqVo);
+
+    CommonResult messagesBack(MessagesBackReqVo reqVo);
 }

+ 71 - 4
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageServiceImpl.java

@@ -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;
+    }
 
 }