From 726de53a23bd9b6b24ccc3ae6c3b1a6b24b67379 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 16 Sep 2025 16:49:19 +0800 Subject: [PATCH] feat(ai): 添加用户学习时长记录功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java | 83 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 0 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 37f81eb..f09837b 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,12 +1,30 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMember; +import cc.mrbird.febs.ai.entity.AiMemberTalk; import cc.mrbird.febs.ai.mapper.AiMemberMapper; +import cc.mrbird.febs.ai.req.member.ApiMemberPageDto; +import cc.mrbird.febs.ai.res.member.ApiMemberPageVo; import cc.mrbird.febs.ai.service.AiMemberService; +import cc.mrbird.febs.ai.service.AiMemberTalkService; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.mall.entity.MallMember; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * @author Administrator @@ -15,4 +33,69 @@ @Service @RequiredArgsConstructor public class AiMemberServiceImpl extends ServiceImpl<AiMemberMapper, AiMember> implements AiMemberService { + + private final AiMemberMapper aiMemberMapper; + private final MallMemberMapper mallMemberMapper; + private final AiMemberTalkService aiMemberTalkService; + @Override + public AiMember getById(String id) { + return aiMemberMapper.selectById( id); + } + + @Override + public FebsResponse myTeam(ApiMemberPageDto dto) { + List<ApiMemberPageVo> objects = new ArrayList<>(); + + String companyId = LoginUserUtil.getLoginUser().getCompanyId(); + + // 创建分页对象,传入当前页和每页大小 + Page<AiMember> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + + LambdaQueryWrapper<AiMember> queryWrapper = Wrappers.lambdaQuery(AiMember.class); + queryWrapper.eq(AiMember::getCompanyId, companyId); + Page<AiMember> pageListByQuery = aiMemberMapper.selectPage(page, queryWrapper); + List<AiMember> records = pageListByQuery.getRecords(); + if (CollUtil.isNotEmpty( records)){ + objects = buildMemberPages(companyId,records,objects); + } + return new FebsResponse().success().data(objects); + } + + private List<ApiMemberPageVo> buildMemberPages(String companyId,List<AiMember> records,List<ApiMemberPageVo> objects) { + /** + * 获取用户信息 + */ + //stream流操作records,获取全部的id + Set<String> memberIds = records.stream().map(AiMember::getId).collect(Collectors.toSet()); + + List<MallMember> mallMembers = mallMemberMapper.selectList( + Wrappers.lambdaQuery(MallMember.class) + .select(MallMember::getMemberUuid, MallMember::getName, MallMember::getRealName) + .in(MallMember::getMemberUuid, memberIds) + .eq(MallMember::getCompanyId, companyId) + ); + //Stream流操作mallMembers,获取一个map<memberUuid,mallMember>的对象 + Map<String, MallMember> mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getMemberUuid, mallMember -> mallMember)); + + /** + * 获取用户联系次数 + * ai陪练 + * ai答题 + */ + List<AiMemberTalk> aiMemberTalks = aiMemberTalkService.getListByCompanyId(companyId); + //Stream流操作aiMemberTalks,获取一个map<memberUuid,aiMemberTalk>的对象 + + + for (AiMember aiMember : records){ + ApiMemberPageVo apiMemberPageVo = new ApiMemberPageVo(); + apiMemberPageVo.setMemberUuid(aiMember.getId()); + + //判断mallMemberMap中是否存在该会员 + apiMemberPageVo.setMemberName(mallMemberMap.containsKey(aiMember.getId()) ? mallMemberMap.get(aiMember.getId()).getName() : ""); + apiMemberPageVo.setNickName(mallMemberMap.containsKey(aiMember.getId()) ? mallMemberMap.get(aiMember.getId()).getName() : ""); + + objects.add(apiMemberPageVo); + } + return objects; + } } -- Gitblit v1.9.1