From cd35010f827a0de3f125f714b576c10aab7afc12 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 22 Sep 2025 17:11:26 +0800 Subject: [PATCH] ``` feat(ai): 优化会员积分统计逻辑以支持多条记录聚合 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java | 35 ++++++++++++++++++++++++++++++----- 1 files changed, 30 insertions(+), 5 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 ac90ba3..5dc5c78 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 @@ -1,6 +1,7 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.*; +import cc.mrbird.febs.ai.enumerates.AiTypeEnum; import cc.mrbird.febs.ai.mapper.AiMemberMapper; import cc.mrbird.febs.ai.req.member.ApiMemberTeamPageDto; import cc.mrbird.febs.ai.req.member.ApiMemberTeamPracticeDto; @@ -158,7 +159,17 @@ String companyId = LoginUserUtil.getLoginUser().getCompanyId(); String memberUuid = dto.getMemberUuid(); - List<AiMemberTalk> aiMemberTalks = aiMemberTalkService.getListByCompanyIdAndMemberUuid(companyId, memberUuid); + // 创建分页对象,传入当前页和每页大小 + Page<AiMemberTalk> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + LambdaQueryWrapper<AiMemberTalk> queryWrapper = Wrappers.lambdaQuery(AiMemberTalk.class); + queryWrapper.eq(AiMemberTalk::getCompanyId, companyId); + queryWrapper.eq(AiMemberTalk::getMemberId, memberUuid); + queryWrapper.eq(AiMemberTalk::getState, AiTypeEnum.AI_MEMBER_TALK_STATE_DONE.getCode()); + Page<AiMemberTalk> pageListByQuery = aiMemberTalkService.getBaseMapper().selectPage(page, queryWrapper); + List<AiMemberTalk> aiMemberTalks = pageListByQuery.getRecords(); + +// List<AiMemberTalk> aiMemberTalks = aiMemberTalkService.getListByCompanyIdAndMemberUuid(companyId, memberUuid); + Map<String, List<AiMemberTalk>> aiMemberTalkMap = new HashMap<>(); if (CollUtil.isNotEmpty(aiMemberTalks)){ //stream操作aiMemberTalks,返回一个根据productId分组的集合 @@ -226,13 +237,24 @@ String companyId = LoginUserUtil.getLoginUser().getCompanyId(); String memberUuid = dto.getMemberUuid(); - List<AiMemberPoint> aiMemberPoints = aiMemberPointService.getListByCompanyIdAndMemberUuid(companyId, memberUuid); + + + // 创建分页对象,传入当前页和每页大小 + Page<AiMemberPoint> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + LambdaQueryWrapper<AiMemberPoint> queryWrapper = Wrappers.lambdaQuery(AiMemberPoint.class); + queryWrapper.eq(AiMemberPoint::getCompanyId, companyId); + queryWrapper.eq(AiMemberPoint::getMemberId, memberUuid); + Page<AiMemberPoint> pageListByQuery = aiMemberPointService.getBaseMapper().selectPage(page, queryWrapper); + List<AiMemberPoint> aiMemberPoints = pageListByQuery.getRecords(); + +// List<AiMemberPoint> aiMemberPoints = aiMemberPointService.getListByCompanyIdAndMemberUuid(companyId, memberUuid); if (CollUtil.isEmpty(aiMemberPoints)){ return new FebsResponse().success().data(vos); } - Map<String, AiMemberPoint> aiMemberPointMap = new HashMap<>(); + Map<String, List<AiMemberPoint>> aiMemberPointMap = new HashMap<>(); if (CollUtil.isNotEmpty(aiMemberPoints)){ - aiMemberPoints.forEach(aiMemberPoint -> aiMemberPointMap.put(aiMemberPoint.getProductPointId(),aiMemberPoint)); + //stream操作aiMemberPoints,返回一个Map<productPointId,List<AiMemberPoint>> + aiMemberPointMap = aiMemberPoints.stream().collect(Collectors.groupingBy(AiMemberPoint::getProductPointId)); } //stream流操作aiMemberPoints,返回一个productPointId的set集合 @@ -252,7 +274,10 @@ vo.setTitle(aiProductPoint.getTitle()); Integer totalTime = 0; if (aiMemberPointMap.containsKey(aiProductPoint.getId())){ - totalTime = aiMemberPointMap.get(aiProductPoint.getId()).getTotalTime(); + List<AiMemberPoint> memberPoints = aiMemberPointMap.get(aiProductPoint.getId()); + for (AiMemberPoint memberPoint : memberPoints){ + totalTime += memberPoint.getTotalTime(); + } } vo.setTotalTime(DateUtil.secondToTime(totalTime)); -- Gitblit v1.9.1