فهرست منبع

更新最近聊天接口

WIN10-20210525Q\Administrator 1 سال پیش
والد
کامیت
259e7a88c0

+ 12 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserInfoVo.java

@@ -1,11 +1,15 @@
 package com.citu.module.menduner.im.controller.app.base.user;
 
+import com.citu.module.menduner.system.api.user.UserInfoRespDTO;
+
 public class ImUserInfoVo {
 
     private Long userId;
 
     private String uid;
 
+    private UserInfoRespDTO userInfoResp;
+
 
     public Long getUserId() {
         return userId;
@@ -22,4 +26,12 @@ public class ImUserInfoVo {
     public void setUid(String uid) {
         this.uid = uid;
     }
+
+    public UserInfoRespDTO getUserInfoResp() {
+        return userInfoResp;
+    }
+
+    public void setUserInfoResp(UserInfoRespDTO userInfoResp) {
+        this.userInfoResp = userInfoResp;
+    }
 }

+ 11 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationSyncRespVo.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.im.controller.app.base.wukong;
 
+import com.citu.module.menduner.im.controller.app.base.user.ImUserInfoVo;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import java.util.List;
@@ -13,6 +14,8 @@ public class ConversationSyncRespVo {
     @JsonProperty("channel_id")
     private String channelId;
 
+    private ImUserInfoVo userInfoVo;
+
     /**
      *  频道类型 1.单聊 2.群聊 3.客服
      */
@@ -120,4 +123,12 @@ public class ConversationSyncRespVo {
     public void setRecents(List<Map> recents) {
         this.recents = recents;
     }
+
+    public ImUserInfoVo getUserInfoVo() {
+        return userInfoVo;
+    }
+
+    public void setUserInfoVo(ImUserInfoVo userInfoVo) {
+        this.userInfoVo = userInfoVo;
+    }
 }

+ 2 - 1
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/framework/rpc/config/RpcConfiguration.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.im.framework.rpc.config;
 
 import com.citu.module.menduner.im.service.wukong.WuKongApiService;
+import com.citu.module.menduner.system.api.user.UserApi;
 import com.citu.module.system.api.logger.LoginLogApi;
 import com.citu.module.system.api.sms.SmsCodeApi;
 import com.citu.module.system.api.social.SocialClientApi;
@@ -9,6 +10,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
-@EnableFeignClients(clients = {WuKongApiService.class})
+@EnableFeignClients(clients = {WuKongApiService.class, UserApi.class})
 public class RpcConfiguration {
 }

+ 41 - 5
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java

@@ -13,15 +13,16 @@ import com.citu.module.menduner.im.convert.UserConvert;
 import com.citu.module.menduner.im.dal.dataobject.UserDO;
 import com.citu.module.menduner.im.dal.mysql.UserMapper;
 import com.citu.module.menduner.im.service.wukong.WuKongUserService;
+import com.citu.module.menduner.system.api.user.UserApi;
+import com.citu.module.menduner.system.api.user.UserInfoReqDTO;
+import com.citu.module.menduner.system.api.user.UserInfoRespDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class UserServiceImpl implements UserService{
@@ -31,6 +32,8 @@ public class UserServiceImpl implements UserService{
     WuKongUserService wuKongUserService;
 
 
+    UserApi userApi;
+
     private static final Long DEFAULT_ENTERPRISE_ID = -999L;
 
 
@@ -109,7 +112,36 @@ public class UserServiceImpl implements UserService{
             return CommonResult.success(new ArrayList<ImUserInfoVo>());
         }
         List<UserDO> userDOS = mapper.selectList(new LambdaQueryWrapper<UserDO>().in(UserDO::getUid, uids));
-        return null;
+        List<UserInfoReqDTO> list = new ArrayList<>(userDOS.size()+1);
+        for (UserDO userDO : userDOS) {
+            UserInfoReqDTO  item =new UserInfoReqDTO();
+            item.setUserId(userDO.getUserId());
+
+            item.setUserType(DEFAULT_ENTERPRISE_ID.equals(userDO.getEnterpriseId())
+                    ?UserInfoReqDTO.USER_TYPE_USER:UserInfoReqDTO.USER_TYPE_ENTERPRISE);
+
+            item.setEnterpriseId(DEFAULT_ENTERPRISE_ID.equals(userDO.getEnterpriseId())?null:userDO.getEnterpriseId());
+            list.add(item);
+        }
+
+        List<UserInfoRespDTO> result = userApi.getUserInfo(list).getCheckedData();
+        List<ImUserInfoVo> resultVo =  new ArrayList<>(result.size()+1);
+        Map<String, UserInfoRespDTO> collect = result.stream().collect(Collectors.toMap(item -> item.getUserId().toString() +"-"+ (null == item.getEnterpriseId() ? DEFAULT_ENTERPRISE_ID : item.getEnterpriseId()), item -> item));
+        for (UserDO userDO : userDOS) {
+            Long userId = userDO.getUserId();
+            Long enterpriseId = userDO.getEnterpriseId();
+            String key = userId+"-"+enterpriseId;
+            ImUserInfoVo item =new ImUserInfoVo();
+            item.setUserInfoResp(collect.get(key));
+            item.setUserId(userId);
+            item.setUid(userDO.getUid());
+
+            resultVo.add(item);
+        }
+
+
+
+        return CommonResult.success(resultVo);
     }
 
 
@@ -122,4 +154,8 @@ public class UserServiceImpl implements UserService{
     public void setMapper(UserMapper mapper) {
         this.mapper = mapper;
     }
+    @Autowired
+    public void setUserApi(UserApi userApi) {
+        this.userApi = userApi;
+    }
 }

+ 13 - 5
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongSessionServiceImpl.java

@@ -10,9 +10,8 @@ import com.citu.module.menduner.im.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class WuKongSessionServiceImpl implements WuKongSessionService{
@@ -32,8 +31,17 @@ public class WuKongSessionServiceImpl implements WuKongSessionService{
         for (ConversationSyncRespVo conversationSyncRespVo : conversationSyncRespVos) {
             conversationSyncRespVo.getRecents().forEach(item->uids.add(item.get("from_uid").toString()));
         }
-
-        CommonResult<List<ImUserInfoVo>> result =   userService.getUserByUids(uids);
+        Map<String, ImUserInfoVo> imUserInfoVoMap = userService.getUserByUids(uids).getData().stream().collect(Collectors.toMap(item -> item.getUid(), item -> item));
+        for (ConversationSyncRespVo conversationSyncRespVo : conversationSyncRespVos) {
+            String fromUid = null;
+            for (Map recent : conversationSyncRespVo.getRecents()) {
+                fromUid = recent.get("channel_id").toString();
+                if(!uid.equals(fromUid)){
+                    break;
+                }
+            }
+            conversationSyncRespVo.setUserInfoVo(imUserInfoVoMap.get(fromUid));
+        }
 
         return CommonResult.success(wuKongApiService.conversationSync(reqVo));
     }