From 41d6b4e7a84e8dc752949f9bcfc405050adb2cea Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 13 Jan 2026 16:33:35 +0800
Subject: [PATCH] refactor(ai): 优化AiMemberServiceImpl中的查询逻辑

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
index 5c9f20d..8d90370 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
@@ -132,7 +132,7 @@
 
             //判断mallMemberMap中是否存在该会员
             apiMemberTeamPageVo.setNickName(mallMemberMap.containsKey(aiMemberId) ? mallMemberMap.get(aiMemberId).getName() : "");
-            apiMemberTeamPageVo.setMemberName(mallMemberMap.containsKey(aiMemberId) ? mallMemberMap.get(aiMemberId).getName() : "");
+            apiMemberTeamPageVo.setMemberName(mallMemberMap.containsKey(aiMemberId) ? mallMemberMap.get(aiMemberId).getRealName() : "");
             Integer practiceCnt = 0;
             if (memberIdToCntMapTalk.containsKey(aiMemberId)){
                 practiceCnt = memberIdToCntMapTalk.get(aiMemberId);
@@ -392,6 +392,23 @@
         // 创建分页对象,传入当前页和每页大小
         Page<ApiCompanyStudyVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
         IPage<ApiCompanyStudyVo> result = aiMemberAnswerService.selectListPage(dto, page);
+        List<ApiCompanyStudyVo> records = result.getRecords();
+        if (CollUtil.isNotEmpty(records)){
+            //stream流获取re cords集合中的元素productId的set集合
+            Set<String> collect = records.stream().map(ApiCompanyStudyVo::getProductId).collect(Collectors.toSet());
+            List<AiMemberAnswer>  list = aiMemberAnswerService.getIdListByCompanyIdAndProductId(companyId,  collect);
+            if (CollUtil.isNotEmpty(list)){
+                //利用stream流,操作集合list,返回一个map对象,key为productId,value为按照productId分组的集合的大小,默认值为0
+                Map<String, Long> memberAnswerItemCountMap =
+                        list.stream().collect(Collectors.groupingBy(
+                                        AiMemberAnswer::getProductId,
+                                        Collectors.counting()
+                                ));
+                for ( ApiCompanyStudyVo record : records){
+                     record.setPracticeCnt(memberAnswerItemCountMap.getOrDefault(record.getProductId(), 0L).intValue());
+                }
+            }
+        }
         return new FebsResponse().success().data(result);
     }
 
@@ -483,12 +500,18 @@
             return  new FebsResponse().success().data(objects);
         }
 
+        LambdaQueryWrapper<AiProductQuestionItem> answerQuery = Wrappers.lambdaQuery(AiProductQuestionItem.class);
+        answerQuery.select( AiProductQuestionItem::getId,AiProductQuestionItem::getAnswer);
+        answerQuery.eq(AiProductQuestionItem::getProductQuestionId,productQuestionId);
+        answerQuery.eq(AiProductQuestionItem::getCompanyId,companyId);
+        List<AiProductQuestionItem> answerQueryList = aiProductQuestionItemService.getListByQuery(answerQuery);
+        Map<String, AiProductQuestionItem> answerMap = answerQueryList.stream().collect(Collectors.toMap(AiProductQuestionItem::getId, aiProductQuestionItem -> aiProductQuestionItem));
+
         Set<String> memberIdSet = memberAnswerItemList.stream().map(AiMemberAnswerItem::getMemberId).collect(Collectors.toSet());
         List<MallMember> mallMembers = mallMemberMapper.selectList(
                 Wrappers.lambdaQuery(MallMember.class)
                         .select(MallMember::getMemberUuid, MallMember::getName, MallMember::getRealName)
                         .in(MallMember::getMemberUuid, memberIdSet)
-                        .eq(MallMember::getCompanyId, companyId)
         );
         //Stream流操作mallMembers,获取一个map<memberUuid,mallMember>的对象
         Map<String, MallMember> mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getMemberUuid, mallMember -> mallMember));
@@ -498,7 +521,7 @@
             vo.setNickName(mallMemberMap.get(memberAnswerItem.getMemberId()).getRealName());
 
             vo.setMemberAnswerState(memberAnswerItem.getMemberAnswerState());
-            vo.setAnswer( memberAnswerItem.getAnswer());
+            vo.setAnswer(answerMap.get(memberAnswerItem.getAnswer()).getAnswer());
             objects.add(vo);
         }
         return  new FebsResponse().success().data(objects);

--
Gitblit v1.9.1