package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiCompany; import cc.mrbird.febs.ai.entity.AiCompanyMemberApply; import cc.mrbird.febs.ai.entity.AiKnowledgeFile; import cc.mrbird.febs.ai.entity.AiMember; import cc.mrbird.febs.ai.mapper.AiCompanyMapper; import cc.mrbird.febs.ai.mapper.AiCompanyMemberApplyMapper; import cc.mrbird.febs.ai.service.AiCompanyMemberApplyService; import cc.mrbird.febs.ai.service.AiMemberService; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.exception.FebsException; 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 cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.List; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class AiCompanyMemberApplyServiceImpl extends ServiceImpl implements AiCompanyMemberApplyService { private final MallMemberMapper mallMemberMapper; private final AiMemberService aiMemberService; private final AiCompanyMapper aiCompanyMapper; @Override public IPage listInPage(AiCompanyMemberApply dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiCompanyMemberApply.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ AiCompany aiCompany = aiCompanyMapper.selectById(dto.getCompanyId()); query.eq(AiCompanyMemberApply::getCompanyCode, aiCompany.getCode()); } query.orderByDesc(AiCompanyMemberApply::getCreatedTime); Page pages = this.baseMapper.selectPage(page, query); List records = pages.getRecords(); if(CollUtil.isNotEmpty(records)){ //获取records的全部memberId List memberIds = records.stream().map(AiCompanyMemberApply::getMemberId).collect(Collectors.toList()); List mallMembers = mallMemberMapper.selectList( Wrappers.lambdaQuery(MallMember.class) .select(MallMember::getMemberUuid, MallMember::getName, MallMember::getRealName) .in(MallMember::getMemberUuid, memberIds) ); if (CollUtil.isNotEmpty(mallMembers)){ records.forEach(record -> { MallMember mallMember = mallMembers.stream().filter(m -> m.getMemberUuid().equals(record.getMemberId())).findFirst().orElse(null); if (mallMember != null){ record.setName(mallMember.getName()); record.setRealName(mallMember.getRealName()); } }); } } return pages; } @Override public FebsResponse agree(AiCompanyMemberApply dto) { String id = dto.getId(); AiCompanyMemberApply aiCompanyMemberApply = this.getById(id); if (ObjectUtil.isEmpty(aiCompanyMemberApply)){ throw new RuntimeException("申请不存在"); } if (0 != aiCompanyMemberApply.getState()){ throw new RuntimeException("申请已处理"); } String companyCode = aiCompanyMemberApply.getCompanyCode(); AiCompany aiCompany = aiCompanyMapper.selectOne( Wrappers.lambdaQuery(AiCompany.class) .eq(AiCompany::getCode, companyCode) .last("limit 1") ); if (ObjectUtil.isEmpty(aiCompany)){ throw new FebsException("公司编码不存在"); } String memberUuid = aiCompanyMemberApply.getMemberId(); String companyId = aiCompany.getId(); mallMemberMapper.update(null, Wrappers.lambdaUpdate(MallMember.class) .set(MallMember::getCompanyId, companyId) .eq(MallMember::getMemberUuid, memberUuid) ); aiMemberService.update(null, Wrappers.lambdaUpdate(AiMember.class) .set(AiMember::getCompanyId, companyId) .eq(AiMember::getId, memberUuid) ); return new FebsResponse().success(); } @Override public FebsResponse disagree(AiCompanyMemberApply dto) { String id = dto.getId(); AiCompanyMemberApply aiCompanyMemberApply = this.getById(id); if (ObjectUtil.isEmpty(aiCompanyMemberApply)){ throw new RuntimeException("申请不存在"); } if (0 != aiCompanyMemberApply.getState()){ throw new RuntimeException("申请已处理"); } this.update(null, Wrappers.lambdaUpdate(AiCompanyMemberApply.class) .set(AiCompanyMemberApply::getState, 3) .eq(AiCompanyMemberApply::getId, id) ); return new FebsResponse().success(); } @Override public FebsResponse unbind(AiCompanyMemberApply dto) { String id = dto.getId(); AiCompanyMemberApply aiCompanyMemberApply = this.getById(id); if (ObjectUtil.isEmpty(aiCompanyMemberApply)){ throw new RuntimeException("申请不存在"); } if (0 != aiCompanyMemberApply.getState()){ throw new RuntimeException("申请已处理"); } String companyCode = aiCompanyMemberApply.getCompanyCode(); AiCompany aiCompany = aiCompanyMapper.selectOne( Wrappers.lambdaQuery(AiCompany.class) .eq(AiCompany::getCode, companyCode) .last("limit 1") ); if (ObjectUtil.isEmpty(aiCompany)){ throw new FebsException("公司编码不存在"); } String memberUuid = aiCompanyMemberApply.getMemberId(); String companyId = aiCompany.getId(); mallMemberMapper.update(null, Wrappers.lambdaUpdate(MallMember.class) .set(MallMember::getCompanyId, null) .eq(MallMember::getMemberUuid, memberUuid) ); aiMemberService.update(null, Wrappers.lambdaUpdate(AiMember.class) .set(AiMember::getCompanyId, null) .eq(AiMember::getId, memberUuid) ); return new FebsResponse().success(); } }