From ce854d2205e7b9eb83f98db617577ee0b276861c Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 13 Jan 2026 17:00:10 +0800
Subject: [PATCH] fix(ai): 修复会员答题数据查询问题
---
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java | 44 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 41 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 34518f5..9378dd1 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);
@@ -378,7 +378,6 @@
@Override
public FebsResponse studyList(ApiCompanyStudyDto dto) {
- List<ApiCompanyStudyVo> objects = new ArrayList<>();
String companyId = LoginUserUtil.getLoginUser().getCompanyId();
String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
@@ -393,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);
}
@@ -432,6 +448,7 @@
LambdaQueryWrapper<AiMemberAnswerItem> memberAnswerItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiMemberAnswerItem.class);
memberAnswerItemLambdaQueryWrapper.in(AiMemberAnswerItem::getMemberAnswerQuestionId,questionItemIdSet);
memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getCompanyId,companyId);
+ memberAnswerItemLambdaQueryWrapper.isNotNull(AiMemberAnswerItem::getAnswer);
List<AiMemberAnswerItem> memberAnswerItemList = aiMemberAnswerItemService.getListByQuery(memberAnswerItemLambdaQueryWrapper);
//利用stream流,操作集合memberAnswerItemList,返回一个map对象,key为memberAnswerQuestionId,value为按照memberAnswerQuestionId分组的集合的大小,默认值为0
Map<String, Long> memberAnswerItemCountMap =
@@ -479,17 +496,24 @@
LambdaQueryWrapper<AiMemberAnswerItem> memberAnswerItemLambdaQueryWrapper = Wrappers.lambdaQuery(AiMemberAnswerItem.class);
memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getProductQuestionId,productQuestionId);
memberAnswerItemLambdaQueryWrapper.eq(AiMemberAnswerItem::getCompanyId,companyId);
+ memberAnswerItemLambdaQueryWrapper.isNotNull(AiMemberAnswerItem::getAnswer);
List<AiMemberAnswerItem> memberAnswerItemList = aiMemberAnswerItemService.getListByQuery(memberAnswerItemLambdaQueryWrapper);
if ( CollUtil.isEmpty(memberAnswerItemList)){
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));
@@ -497,9 +521,23 @@
ApiCompanyStudyInfoVo vo = new ApiCompanyStudyInfoVo();
vo.setMemberName(mallMemberMap.get(memberAnswerItem.getMemberId()).getName());
vo.setNickName(mallMemberMap.get(memberAnswerItem.getMemberId()).getRealName());
+
vo.setMemberAnswerState(memberAnswerItem.getMemberAnswerState());
+ vo.setAnswer(answerMap.get(memberAnswerItem.getAnswer()).getAnswer());
objects.add(vo);
}
return new FebsResponse().success().data(objects);
}
+
+ @Override
+ public FebsResponse studyRecordList(ApiCompanyStudyRecordDto dto) {
+
+ String companyId = LoginUserUtil.getLoginUser().getCompanyId();
+ dto.setCompanyId( companyId);
+
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiCompanyStudyRecordVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ IPage<ApiCompanyStudyRecordVo> result = aiMemberAnswerService.getStudyRecordList(page,dto);
+ return new FebsResponse().success().data(result);
+ }
}
--
Gitblit v1.9.1