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 */ @Slf4j @Service @RequiredArgsConstructor public class AiMemberServiceImpl extends ServiceImpl 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 objects = new ArrayList<>(); String companyId = LoginUserUtil.getLoginUser().getCompanyId(); // 创建分页对象,传入当前页和每页大小 Page page = new Page<>(dto.getPageNow(), dto.getPageSize()); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(AiMember.class); queryWrapper.eq(AiMember::getCompanyId, companyId); Page pageListByQuery = aiMemberMapper.selectPage(page, queryWrapper); List records = pageListByQuery.getRecords(); if (CollUtil.isNotEmpty( records)){ objects = buildMemberPages(companyId,records,objects); } return new FebsResponse().success().data(objects); } private List buildMemberPages(String companyId,List records,List objects) { /** * 获取用户信息 */ //stream流操作records,获取全部的id Set memberIds = records.stream().map(AiMember::getId).collect(Collectors.toSet()); List 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的对象 Map mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getMemberUuid, mallMember -> mallMember)); /** * 获取用户联系次数 * ai陪练 * ai答题 */ List aiMemberTalks = aiMemberTalkService.getListByCompanyId(companyId); //Stream流操作aiMemberTalks,获取一个map的对象 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; } }