From ab6b8fca3993c88b56084ded9d4573fc97066a84 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 13 Jan 2026 10:27:49 +0800
Subject: [PATCH] fix(ai): 修复学习列表查询条件并启用测试环境SQL日志

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java       |   17 +++++++++++++++++
 src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java          |    3 +++
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java |   11 +++++++++++
 src/main/resources/mapper/modules/AiMemberAnswerMapper.xml                  |    2 +-
 4 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
index ef4df96..8a3290c 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
@@ -16,6 +16,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 /**
  * AI用户答题记录 Service接口
@@ -54,4 +55,6 @@
     IPage<ApiCompanyStudyVo> selectListPage(ApiCompanyStudyDto dto, Page<ApiCompanyStudyVo> page);
 
     IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto);
+
+    List<AiMemberAnswer> getIdListByCompanyIdAndProductId(String companyId, Set<String> collect);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
index 15da33c..acda009 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -470,4 +470,15 @@
     public IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto) {
         return aiMemberAnswerMapper.getStudyRecordList(page,dto);
     }
+
+    @Override
+    public List<AiMemberAnswer> getIdListByCompanyIdAndProductId(String companyId, Set<String> collect) {
+        return aiMemberAnswerMapper.selectList(
+                Wrappers.lambdaQuery(AiMemberAnswer.class)
+                        .select(AiMemberAnswer::getId,AiMemberAnswer::getProductId)
+                        .eq(AiMemberAnswer::getCompanyId, companyId)
+                        .in(AiMemberAnswer::getProductId, collect)
+                        .eq(AiMemberAnswer::getState, AiTypeEnum.AI_MEMBER_ANSWER_STATE_DONE.getCode())
+        );
+    }
 }
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..bffe7f3 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
@@ -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);
     }
 
diff --git a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
index fe38bd7..698abb5 100644
--- a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
+++ b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
@@ -70,7 +70,7 @@
         left join mall_member a on b.member_id = a.member_uuid
         where b.product_id = #{record.productId}
           and b.company_id = #{record.companyId}
-        order by a.score desc
+        order by b.score desc
 
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1