Selaa lähdekoodia

聊天机器人修改

zrd 3 kuukautta sitten
vanhempi
sitoutus
62cc76a6fa

+ 13 - 7
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/kefu/KeFuConversationController.java

@@ -17,6 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -75,15 +76,20 @@ public class KeFuConversationController {
     @Operation(summary = "获得客服会话列表")
     @PreAuthorize("@ss.hasPermission('promotion:kefu-conversation:query')")
     public CommonResult<List<KeFuConversationRespVO>> getConversationList() {
-        // 查询会话列表
-        List<KeFuConversationRespVO> respList = BeanUtils.toBean(conversationService.getKefuConversationList(),
+        List<KeFuConversationRespVO> respList = BeanUtils.toBean(conversationService.getConversationList(1L),
                 KeFuConversationRespVO.class);
-
+        
         // 拼接数据
-        Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(convertSet(respList, KeFuConversationRespVO::getUserId));
-        respList.forEach(item-> findAndThen(userMap, item.getUserId(),
-                memberUser-> item.setUserAvatar(memberUser.getAvatar()).setUserNickname(memberUser.getNickname())));
+        Collection<Long> ids = convertSet(respList,
+                KeFuConversationRespVO::getUserId);
+        Collection<Long> relids = convertSet(respList,
+                KeFuConversationRespVO::getRelUserId);
+        ids.addAll(relids);
+        Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(ids);
+        respList.forEach(item -> findAndThen(userMap, item.getUserId(),
+                memberUser -> item.setUserAvatar(memberUser.getAvatar()).setUserNickname(memberUser.getNickname())));
+        respList.forEach(item -> findAndThen(userMap, item.getRelUserId(),
+                memberUser -> item.setRelUserAvatar(memberUser.getAvatar()).setRelUserNickname(memberUser.getNickname())));
         return success(respList);
     }
-
 }

+ 11 - 4
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/kefu/KeFuMessageController.java

@@ -19,12 +19,12 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
 import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
@@ -62,12 +62,19 @@ public class KeFuMessageController {
     public CommonResult<List<KeFuMessageRespVO>> getKeFuMessageList(@Valid KeFuMessageListReqVO pageReqVO) {
         // 获得数据
         List<KeFuMessageDO> list = messageService.getKeFuMessageList(pageReqVO);
-
+        
+        Collection<Long> ids = convertSet(list,
+                KeFuMessageDO::getReceiverId);
+        Collection<Long> relids = convertSet(list,
+                KeFuMessageDO::getSenderId);
+        ids.addAll(relids);
         // 拼接数据
         List<KeFuMessageRespVO> result = BeanUtils.toBean(list, KeFuMessageRespVO.class);
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSet(filterList(result,
-                item -> UserTypeEnum.ADMIN.getValue().equals(item.getSenderType())), KeFuMessageRespVO::getSenderId));
+        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(ids);
         result.forEach(item -> findAndThen(userMap, item.getSenderId(), user -> item.setSenderAvatar(user.getAvatar())));
+        result.forEach(item -> findAndThen(userMap, item.getReceiverId(),
+                user -> item.setReceiverAvatar(user.getAvatar())));
+        
         return success(result);
     }
 

+ 2 - 3
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/kefu/vo/message/KeFuMessageRespVO.java

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.message;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
+import lombok.Data;
 
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 客服消息 Response VO")
 @Data
@@ -26,7 +25,7 @@ public class KeFuMessageRespVO {
 
     @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29124")
     private Long receiverId;
-
+    private String receiverAvatar;
     @Schema(description = "接收人类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     private Integer receiverType;
 

+ 3 - 1
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/AppKeFuConversationController.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 import cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.conversation.KeFuConversationRespVO;
@@ -134,7 +135,8 @@ public class AppKeFuConversationController {
     @Operation(summary = "获得客服会话列表新")
     public CommonResult<List<KeFuConversationRespVO>> getConversationListNew() {
         // 查询会话列表
-        List<KeFuConversationRespVO> respList = BeanUtils.toBean(conversationService.getConversationList(),
+        List<KeFuConversationRespVO> respList =
+                BeanUtils.toBean(conversationService.getConversationList(SecurityFrameworkUtils.getLoginUserId()),
                 KeFuConversationRespVO.class);
         
         // 拼接数据

+ 9 - 4
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/AppKeFuMessageController.java

@@ -18,12 +18,12 @@ import jakarta.validation.Valid;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
 import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
@@ -65,12 +65,17 @@ public class AppKeFuMessageController {
     @Operation(summary = "获得客服消息列表")
     public CommonResult<List<KeFuMessageRespVO>> getKefuMessageList(@Valid KeFuMessageListReqVO pageReqVO) {
         List<KeFuMessageDO> list = kefuMessageService.getKeFuMessageList(pageReqVO);
-
+        Collection<Long> ids = convertSet(list,
+                KeFuMessageDO::getReceiverId);
+        Collection<Long> relids = convertSet(list,
+                KeFuMessageDO::getSenderId);
+        ids.addAll(relids);
         // 拼接数据
         List<KeFuMessageRespVO> result = BeanUtils.toBean(list, KeFuMessageRespVO.class);
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSet(filterList(result,
-                item -> UserTypeEnum.ADMIN.getValue().equals(item.getSenderType())), KeFuMessageRespVO::getSenderId));
+        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(ids);
         result.forEach(item -> findAndThen(userMap, item.getSenderId(), user -> item.setSenderAvatar(user.getAvatar())));
+        result.forEach(item -> findAndThen(userMap, item.getReceiverId(),
+                user -> item.setReceiverAvatar(user.getAvatar())));
         return success(result);
     }
 

+ 3 - 4
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/kefu/KeFuConversationMapper.java

@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.promotion.dal.mysql.kefu;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.conversation.KeFuConversationRespVO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.kefu.KeFuConversationDO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -52,12 +51,12 @@ public interface KeFuConversationMapper extends BaseMapperX<KeFuConversationDO>
                 .orderByDesc(KeFuConversationDO::getCreateTime));
     }
     
-    default List<KeFuConversationDO> getConversationList() {
+    default List<KeFuConversationDO> getConversationList(Long userId) {
         //判断getLastMessageTime跟当前时间 比差10分钟以上
         return selectList(new LambdaQueryWrapperX<KeFuConversationDO>()
                 .eq(KeFuConversationDO::getAdminDeleted, Boolean.FALSE)
-                .eq(KeFuConversationDO::getUserId, SecurityFrameworkUtils.getLoginUserId())
-                .or().eq(KeFuConversationDO::getRelUserId, SecurityFrameworkUtils.getLoginUserId())
+                .eq(KeFuConversationDO::getUserId, userId)
+                .or().eq(KeFuConversationDO::getRelUserId, userId)
                 .orderByDesc(KeFuConversationDO::getCreateTime));
     }
 

+ 1 - 1
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuConversationService.java

@@ -69,7 +69,7 @@ public interface KeFuConversationService {
     
     List<KeFuConversationDO> getKefuConversationAiList();
     
-    List<KeFuConversationDO> getConversationList();
+    List<KeFuConversationDO> getConversationList(Long userId);
     
     List<KeFuConversationDO> getList(KeFuConversationRespVO reqVO);
 

+ 2 - 2
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuConversationServiceImpl.java

@@ -119,8 +119,8 @@ public class KeFuConversationServiceImpl implements KeFuConversationService {
     }
     
     @Override
-    public List<KeFuConversationDO> getConversationList() {
-        return conversationMapper.getConversationList();
+    public List<KeFuConversationDO> getConversationList(Long userId) {
+        return conversationMapper.getConversationList(userId);
     }
     
     @Override