package com.yzdx.AiInterviewer.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yzdx.AiInterviewer.comment.R; import com.yzdx.AiInterviewer.entity.*; import com.yzdx.AiInterviewer.entity.dto.SharedQuestionBankDto; import com.yzdx.AiInterviewer.mapper.QuestionBankMapper; import com.yzdx.AiInterviewer.mapper.QuestionMapper; import com.yzdx.AiInterviewer.mapper.SharedQuestionBankMapper; import com.yzdx.AiInterviewer.mapper.SharedQuestionMapper; import com.yzdx.AiInterviewer.service.CompanyService; import com.yzdx.AiInterviewer.service.SharedQuestionBankService; import com.yzdx.AiInterviewer.service.UserService; import com.yzdx.AiInterviewer.utiles.TimeUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class SharedQuestionBankServiceImpl extends ServiceImpl implements SharedQuestionBankService{ @Autowired private SharedQuestionBankMapper sharedQuestionBankMapper; @Autowired private CompanyService companyService; @Autowired private UserService userService; @Autowired private QuestionBankMapper questionBankMapper; @Autowired private SharedQuestionMapper sharedQuestionMapper; @Autowired private QuestionMapper questionMapper; @Override public SharedQuestionBank addSharedQuestionBank(String typeName, Integer type, String description, Integer userId,String encoding) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(SharedQuestionBank::getTypeName,typeName).eq(SharedQuestionBank::getCreateCompany,encoding); SharedQuestionBank sharedQuestionBank = sharedQuestionBankMapper.selectOne(queryWrapper); if (sharedQuestionBank!=null){ return null; } SharedQuestionBank newSharedBank=new SharedQuestionBank(); newSharedBank.setTypeName(typeName); newSharedBank.setType(type); newSharedBank.setDescription(description); newSharedBank.setCreateUser(userId); newSharedBank.setUpdateUser(userId); newSharedBank.setUpdateTime(TimeUtil.getTime()); newSharedBank.setCreateTime(TimeUtil.getTime()); newSharedBank.setCreateCompany(encoding); sharedQuestionBankMapper.insert(newSharedBank); LambdaQueryWrapper bankLambdaQueryWrapper=new LambdaQueryWrapper<>(); bankLambdaQueryWrapper.eq(SharedQuestionBank::getTypeName,typeName).eq(BaseEntity::getCreateUser,userId); return sharedQuestionBankMapper.selectOne(bankLambdaQueryWrapper); } @Override public SharedQuestionBank getSharedQuestionBankById(Integer bankId) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(SharedQuestionBank::getId,bankId); SharedQuestionBank sharedQuestionBank = sharedQuestionBankMapper.selectOne(queryWrapper); return sharedQuestionBank; } @Override public List getSharedQuestionBank() { List sharedQuestionBanks = sharedQuestionBankMapper.selectList(null); List sharedQuestionBankDtos=sharedQuestionBanks.stream().map(item->{ SharedQuestionBankDto sharedQuestionBankDto=new SharedQuestionBankDto(); BeanUtils.copyProperties(item,sharedQuestionBankDto); Company companyDetail = companyService.getCompanyDetail(sharedQuestionBankDto.getCreateCompany()); sharedQuestionBankDto.setCreateCompany(null); sharedQuestionBankDto.setCreateCompanyName(companyDetail.getCompanyName()); User createUser = userService.getUserById(sharedQuestionBankDto.getCreateUser()); sharedQuestionBankDto.setCreateUserName(createUser.getUsername()); User updateUser = userService.getUserById(sharedQuestionBankDto.getUpdateUser()); sharedQuestionBankDto.setUpdateUserName(updateUser.getUsername()); return sharedQuestionBankDto; }).collect(Collectors.toList()); return sharedQuestionBankDtos; } @Override public SharedQuestionBank getShareQuestionTypeByCompany(String encoding){ LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(SharedQuestionBank::getCreateCompany,encoding); SharedQuestionBank sharedQuestionBank =sharedQuestionBankMapper.selectOne(queryWrapper); return sharedQuestionBank; } @Override public List searchSharedQuestionType(String searchName) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.like(SharedQuestionBank::getTypeName,searchName); List sharedQuestionBanks = sharedQuestionBankMapper.selectList(queryWrapper); List sharedQuestionBankDtos=sharedQuestionBanks.stream().map(item->{ SharedQuestionBankDto sharedQuestionBankDto=new SharedQuestionBankDto(); BeanUtils.copyProperties(item,sharedQuestionBankDto); Company companyDetail = companyService.getCompanyDetail(sharedQuestionBankDto.getCreateCompany()); sharedQuestionBankDto.setCreateCompany(null); sharedQuestionBankDto.setCreateCompanyName(companyDetail.getCompanyName()); User createUser = userService.getUserById(sharedQuestionBankDto.getCreateUser()); sharedQuestionBankDto.setCreateUserName(createUser.getUsername()); User updateUser = userService.getUserById(sharedQuestionBankDto.getUpdateUser()); sharedQuestionBankDto.setUpdateUserName(updateUser.getUsername()); return sharedQuestionBankDto; }).collect(Collectors.toList()); return sharedQuestionBankDtos; } @Override public String addQuestionTypeFromShare(ListSharedBankIds, Integer userId, String encoding) { String bankResult="题库:"; String questionResult="题目:"; //遍历分享题库id for (Integer SharedBankId:SharedBankIds) { //根据分享题库id查找每条分享题库的信息 LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(SharedQuestionBank::getId,SharedBankId); SharedQuestionBank sharedQuestionBank = sharedQuestionBankMapper.selectOne(queryWrapper); //根据分享题库的信息添加题库信息 LambdaQueryWrapper queryWrapper1=new LambdaQueryWrapper<>(); queryWrapper1.eq(QuestionBank::getTypeName,sharedQuestionBank.getTypeName()); QuestionBank questionBank1 = questionBankMapper.selectOne(queryWrapper1); if (questionBank1!=null){ bankResult=bankResult+sharedQuestionBank.getTypeName(); continue; } QuestionBank questionBank=new QuestionBank(); questionBank.setTypeName(sharedQuestionBank.getTypeName()); questionBank.setType(sharedQuestionBank.getType()); questionBank.setDescription(sharedQuestionBank.getDescription()); questionBank.setCompanyEncoding(encoding); questionBank.setCreateUser(userId); questionBank.setUpdateUser(userId); questionBank.setCreateTime(TimeUtil.getTime()); questionBank.setUpdateTime(TimeUtil.getTime()); //将新数据插入到题库中 questionBankMapper.insert(questionBank); //根据题库名字,公司编码查找题库中的题库id LambdaQueryWrapper queryWrapper2=new LambdaQueryWrapper<>(); queryWrapper2.eq(QuestionBank::getTypeName,sharedQuestionBank.getTypeName()).eq(QuestionBank::getCompanyEncoding,encoding); QuestionBank questionBank2 = questionBankMapper.selectOne(queryWrapper2); Integer bankId = questionBank2.getId(); //根据题库id查找分享题目的信息 LambdaQueryWrapper queryWrapper3=new LambdaQueryWrapper<>(); queryWrapper3.eq(SharedQuestion::getBankId,sharedQuestionBank.getId()); List sharedQuestions = sharedQuestionMapper.selectList(queryWrapper3); for (SharedQuestion sharedQuestion: sharedQuestions) { //根据题目信息添加题目 LambdaQueryWrapper queryWrapper4=new LambdaQueryWrapper<>(); queryWrapper4.eq(Question::getTitle,sharedQuestion.getTitle()).eq(Question::getCompanyEncoding,encoding); Question questions = questionMapper.selectOne(queryWrapper4); if(questions!=null){ questionResult=questionResult+sharedQuestion.getTitle(); continue; } Question question=new Question(); question.setDetails(sharedQuestion.getDetails()); question.setBankId(bankId); question.setPromote(sharedQuestion.getPromote()); question.setCompanyEncoding(encoding); question.setTitle(sharedQuestion.getTitle()); question.setCreateTime(TimeUtil.getTime()); question.setUpdateTime(TimeUtil.getTime()); question.setCreateUser(userId); question.setUpdateUser(userId); questionMapper.insert(question); } } return bankResult+"/n"+questionResult+"已存在添加题库中"; } @Override public List getOurQuestionTypeList(String encoding) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(SharedQuestionBank::getCreateCompany,encoding); List sharedQuestionBanks = sharedQuestionBankMapper.selectList(queryWrapper); List sharedQuestionBankDtos=sharedQuestionBanks.stream().map(item->{ SharedQuestionBankDto sharedQuestionBankDto=new SharedQuestionBankDto(); BeanUtils.copyProperties(item,sharedQuestionBankDto); Company companyDetail = companyService.getCompanyDetail(sharedQuestionBankDto.getCreateCompany()); sharedQuestionBankDto.setCreateCompany(null); sharedQuestionBankDto.setCreateCompanyName(companyDetail.getCompanyName()); User createUser = userService.getUserById(sharedQuestionBankDto.getCreateUser()); sharedQuestionBankDto.setCreateUserName(createUser.getUsername()); User updateUser = userService.getUserById(sharedQuestionBankDto.getUpdateUser()); sharedQuestionBankDto.setUpdateUserName(updateUser.getUsername()); return sharedQuestionBankDto; }).collect(Collectors.toList()); return sharedQuestionBankDtos; } @Override public List searchOurSharedQuestionType(String encoding, String searchName) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.like(SharedQuestionBank::getCreateCompany,encoding).like(SharedQuestionBank::getTypeName,searchName); List sharedQuestionBanks = sharedQuestionBankMapper.selectList(queryWrapper); List sharedQuestionBankDtos=sharedQuestionBanks.stream().map(item->{ SharedQuestionBankDto sharedQuestionBankDto=new SharedQuestionBankDto(); BeanUtils.copyProperties(item,sharedQuestionBankDto); Company companyDetail = companyService.getCompanyDetail(sharedQuestionBankDto.getCreateCompany()); sharedQuestionBankDto.setCreateCompany(null); sharedQuestionBankDto.setCreateCompanyName(companyDetail.getCompanyName()); User createUser = userService.getUserById(sharedQuestionBankDto.getCreateUser()); sharedQuestionBankDto.setCreateUserName(createUser.getUsername()); User updateUser = userService.getUserById(sharedQuestionBankDto.getUpdateUser()); sharedQuestionBankDto.setUpdateUserName(updateUser.getUsername()); return sharedQuestionBankDto; }).collect(Collectors.toList()); return sharedQuestionBankDtos; } }