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 |   77 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 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 4ab010e..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
@@ -17,8 +35,67 @@
 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