From 53f4756e60e495d968a2503c41aea8f442a4100d Mon Sep 17 00:00:00 2001 From: Unique-Jerry <10902054+unique-jerry@user.noreply.gitee.com> Date: Thu, 7 Dec 2023 09:49:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=80=E8=AF=B7=E9=9D=A2=E8=AF=95=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InterviewController.java | 13 ++ .../VxController/VxUserController.java | 4 +- .../AiInterviewer/entity/InvitePromote.java | 30 ++++ .../entity/dto/InvitePromoteDto.java | 20 +++ .../yzdx/AiInterviewer/entity/dto/JobDto.java | 1 + .../mapper/InvitePromoteMapper.java | 10 ++ .../service/InvitePromoteService.java | 21 +++ .../AiInterviewer/service/ResumeService.java | 2 +- .../impl/InvitePromoteServiceImpl.java | 148 ++++++++++++++++++ .../service/impl/JobListServiceImpl.java | 3 +- .../service/impl/ResumeServiceImpl.java | 103 +++++++++++- 11 files changed, 346 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/yzdx/AiInterviewer/entity/InvitePromote.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/entity/dto/InvitePromoteDto.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/mapper/InvitePromoteMapper.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/service/InvitePromoteService.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/service/impl/InvitePromoteServiceImpl.java diff --git a/src/main/java/com/yzdx/AiInterviewer/controller/InterviewController.java b/src/main/java/com/yzdx/AiInterviewer/controller/InterviewController.java index d599a8e..11ebb1c 100644 --- a/src/main/java/com/yzdx/AiInterviewer/controller/InterviewController.java +++ b/src/main/java/com/yzdx/AiInterviewer/controller/InterviewController.java @@ -3,10 +3,14 @@ package com.yzdx.AiInterviewer.controller; import com.yzdx.AiInterviewer.comment.R; import com.yzdx.AiInterviewer.entity.BackgroundEntity; import com.yzdx.AiInterviewer.entity.ImagesEntity; +import com.yzdx.AiInterviewer.entity.InvitePromote; import com.yzdx.AiInterviewer.entity.LogoEntity; +import com.yzdx.AiInterviewer.entity.dto.InvitePromoteDto; +import com.yzdx.AiInterviewer.mapper.InvitePromoteMapper; import com.yzdx.AiInterviewer.service.InterviewBackgroundService; import com.yzdx.AiInterviewer.service.InterviewImagesService; import com.yzdx.AiInterviewer.service.InterviewLogoService; +import com.yzdx.AiInterviewer.service.InvitePromoteService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -28,6 +32,8 @@ public class InterviewController { private InterviewImagesService imagesService; @Autowired private InterviewBackgroundService backgroundService; + @Autowired + private InvitePromoteService invitePromoteService; /** * 获取公司logo @@ -236,7 +242,14 @@ public class InterviewController { } + @GetMapping("/getInvitePromote") + public R getInvitePromoteDto(Integer id){ + InvitePromoteDto invitePromote = invitePromoteService.getInvitePromote(id); + + return R.success(invitePromote); + + } } diff --git a/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java b/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java index 7a019a8..0703679 100644 --- a/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java +++ b/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java @@ -191,9 +191,9 @@ public class VxUserController { @GetMapping("/getResume") public R getResume(Integer userId){ - Resume resume= resumeService.getResume(userId); + Map result= resumeService.getResume(userId); - return R.success(resume); + return R.success(result); } diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/InvitePromote.java b/src/main/java/com/yzdx/AiInterviewer/entity/InvitePromote.java new file mode 100644 index 0000000..8540720 --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/entity/InvitePromote.java @@ -0,0 +1,30 @@ +package com.yzdx.AiInterviewer.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("invite_promote") +public class InvitePromote extends BaseEntity{ + + @TableId(type = IdType.AUTO) + private Integer id; + + private String encoding; + + private Integer postId; + + private Integer jobId; + + private String startTime; + + private String endTime; + + private String question; + + private String promote; + + private Integer inviteUser; +} diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/dto/InvitePromoteDto.java b/src/main/java/com/yzdx/AiInterviewer/entity/dto/InvitePromoteDto.java new file mode 100644 index 0000000..1dafedf --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/entity/dto/InvitePromoteDto.java @@ -0,0 +1,20 @@ +package com.yzdx.AiInterviewer.entity.dto; + +import com.yzdx.AiInterviewer.entity.*; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class InvitePromoteDto extends InvitePromote { + + private Company company; + + private JobEntity job; + + private List> questions; + + private JobPosting jobPost; + +} diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobDto.java b/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobDto.java index 4862832..877a7e7 100644 --- a/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobDto.java +++ b/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobDto.java @@ -23,4 +23,5 @@ public class JobDto extends BaseEntity { private String address; private Integer status; + } diff --git a/src/main/java/com/yzdx/AiInterviewer/mapper/InvitePromoteMapper.java b/src/main/java/com/yzdx/AiInterviewer/mapper/InvitePromoteMapper.java new file mode 100644 index 0000000..ab602cd --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/mapper/InvitePromoteMapper.java @@ -0,0 +1,10 @@ +package com.yzdx.AiInterviewer.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yzdx.AiInterviewer.entity.InvitePromote; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface InvitePromoteMapper extends BaseMapper { + +} diff --git a/src/main/java/com/yzdx/AiInterviewer/service/InvitePromoteService.java b/src/main/java/com/yzdx/AiInterviewer/service/InvitePromoteService.java new file mode 100644 index 0000000..740e3f4 --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/service/InvitePromoteService.java @@ -0,0 +1,21 @@ +package com.yzdx.AiInterviewer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.yzdx.AiInterviewer.entity.InvitePromote; +import com.yzdx.AiInterviewer.entity.dto.InvitePromoteDto; + +public interface InvitePromoteService extends IService { + + /** + * 添加邀请面试岗位promote + * + * + * */ + + Integer addInvitePromote(String encoding,Integer postId,String startTime,String endTime, + String question,String promote,Integer inviteUser,Integer userId,Integer jobId); + + + InvitePromoteDto getInvitePromote(Integer id); + +} diff --git a/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java b/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java index fa2e49d..9ed9d0f 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java @@ -40,7 +40,7 @@ public interface ResumeService extends IService { String personalAdvantage, String other,String education,String jobExpectation, String workExperience, String projectExperience, Integer userId); - Resume getResume(Integer userId); + Map getResume(Integer userId); // /** diff --git a/src/main/java/com/yzdx/AiInterviewer/service/impl/InvitePromoteServiceImpl.java b/src/main/java/com/yzdx/AiInterviewer/service/impl/InvitePromoteServiceImpl.java new file mode 100644 index 0000000..61cba74 --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/InvitePromoteServiceImpl.java @@ -0,0 +1,148 @@ +package com.yzdx.AiInterviewer.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yzdx.AiInterviewer.entity.*; +import com.yzdx.AiInterviewer.entity.dto.InvitePromoteDto; +import com.yzdx.AiInterviewer.mapper.InvitePromoteMapper; +import com.yzdx.AiInterviewer.mapper.JobPostingMapper; +import com.yzdx.AiInterviewer.mapper.QuestionBankMapper; +import com.yzdx.AiInterviewer.mapper.QuestionMapper; +import com.yzdx.AiInterviewer.service.CompanyService; +import com.yzdx.AiInterviewer.service.InvitePromoteService; +import com.yzdx.AiInterviewer.service.JobListService; +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.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class InvitePromoteServiceImpl extends ServiceImpl implements InvitePromoteService { + + @Autowired + private InvitePromoteMapper invitePromoteMapper; + + @Autowired + private CompanyService companyService; + @Autowired + private JobListService jobListService; + @Autowired + private JobPostingMapper jobPostingMapper; + @Autowired + private QuestionMapper questionMapper; + @Autowired + private QuestionBankMapper questionBankMapper; + + + + @Override + public Integer addInvitePromote(String encoding, Integer postId, String startTime, + String endTime, String question, String promote, + Integer inviteUser,Integer userId,Integer jobId) { + + + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(InvitePromote::getJobId,jobId).eq(InvitePromote::getPostId,postId) + .eq(InvitePromote::getEncoding,encoding).eq(InvitePromote::getInviteUser,inviteUser); + + InvitePromote invitePromote = invitePromoteMapper.selectOne(queryWrapper); + + if(invitePromote!=null){ + return -1; + } + + InvitePromote addInvitePromote=new InvitePromote(); + + addInvitePromote.setEncoding(encoding); + + addInvitePromote.setPostId(postId); + + addInvitePromote.setStartTime(startTime); + + addInvitePromote.setEndTime(endTime); + + addInvitePromote.setQuestion(question); + + addInvitePromote.setPromote(promote); + + addInvitePromote.setInviteUser(inviteUser); + + addInvitePromote.setCreateUser(userId); + + addInvitePromote.setUpdateUser(userId); + + addInvitePromote.setCreateTime(TimeUtil.getTime()); + + addInvitePromote.setUpdateTime(TimeUtil.getTime()); + + addInvitePromote.setJobId(jobId); + + Integer rows = invitePromoteMapper.insert(addInvitePromote); + + + return rows; + } + + @Override + public InvitePromoteDto getInvitePromote(Integer id) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(InvitePromote::getId,id); + + InvitePromote invitePromote = invitePromoteMapper.selectOne(queryWrapper); + + InvitePromoteDto invitePromoteDto=new InvitePromoteDto(); + + BeanUtils.copyProperties(invitePromote,invitePromoteDto); + + //获取公司详情 + Company companyDetail = companyService.getCompanyDetail(invitePromoteDto.getEncoding()); + + invitePromoteDto.setCompany(companyDetail); + + //获取岗位详情 + JobEntity jobById = jobListService.getJobById(invitePromoteDto.getJobId()); + + invitePromoteDto.setJob(jobById); + + //获取招聘信息 + JobPosting jobPosting = jobPostingMapper.selectById(invitePromoteDto.getPostId()); + + invitePromoteDto.setJobPost(jobPosting); + + //获取题目详情 + JSONArray questionJSONArray=JSONArray.parseArray(invitePromoteDto.getQuestion()); + + List> questions=new ArrayList<>(); + + for (int i = 0; i < questionJSONArray.size(); i++) { + + Map getQuestion=new HashMap<>(); + + Integer getQuestionId=(Integer)questionJSONArray.get(i); + + Question question = questionMapper.selectById(getQuestionId); + + QuestionBank questionBank = questionBankMapper.selectById(question.getBankId()); + + getQuestion.put("questionBankName",questionBank.getTypeName()); + + getQuestion.put("QuestionDetail",question); + + questions.add(getQuestion); + + } + + invitePromoteDto.setQuestions(questions); + + return invitePromoteDto; + + } +} diff --git a/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java b/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java index 84f7d17..49ae806 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java @@ -335,8 +335,9 @@ public class JobListServiceImpl extends ServiceImpl implem public List> getSuggestJob(Integer userId) { List> result=new ArrayList<>(); //先获取用户的岗位期望 - Resume resume = resumeService.getResume(userId); + Map resultResume = resumeService.getResume(userId); + Resume resume=(Resume) resultResume.get("resume"); String jobExpectation = resume.getJobExpectation(); JSONArray jobExpectationJSONs = (JSONArray) JSON.parse(jobExpectation); diff --git a/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java b/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java index 87eea9d..a786bd3 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java @@ -199,7 +199,7 @@ public class ResumeServiceImpl extends ServiceImpl impleme result.put("gender",sex); result.put("school",school); result.put("major",major); - result.put("phone",phone); + result.put("phone",phone); return result; @@ -379,13 +379,12 @@ public class ResumeServiceImpl extends ServiceImpl impleme result.put("school",school); result.put("major",major); result.put("phone",phone); - - return result; } @Override - public Resume getResume(Integer userId) { + public Map getResume(Integer userId) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); @@ -393,6 +392,100 @@ public class ResumeServiceImpl extends ServiceImpl impleme Resume resume = resumeMapper.selectOne(queryWrapper); - return resume; + //解析在校经历,计算出学历 + + JSONArray educationJSONArray= JSON.parseArray(resume.getEducationBackground()); + + long difference =0; + + String eduBack=""; + + String school=""; + + String major=""; + for (int i = 0; i < educationJSONArray.size(); i++) { + + Map educationMap= (Map)educationJSONArray.get(i); + + String lastEndTime= (String)educationMap.get("endTime"); + + // 将字符串转换为日期对象 + Date date = new Date(Integer.valueOf(lastEndTime) - 1900, 0, 1); // 注意:年份需减去1900 + + // 获取日期对象的时间戳(毫秒数) + + long timestamp = date.getTime(); + + // 获取当前时间的时间戳 + long currentTimestamp = System.currentTimeMillis(); + + // 计算时间戳差值 + long differenceTime = currentTimestamp - timestamp; + + //初始化值 + if(i==0){ + difference=differenceTime; + eduBack=(String)educationMap.get("eduDegree"); + school=(String)educationMap.get("school"); + major=(String)educationMap.get("major"); + + continue; + } + //判断最近的毕业年份 + if(differenceTime result=new HashMap<>(); + + if(rows!=1){ + return null; + } + int experience=0; + //计算工作时间 + JSONArray jobJSONArray=JSON.parseArray(resume.getWorkExperience()); + + if(jobJSONArray.size()==0) { + //放入工作时间 + result.put("experience", experience); + }else{ + for (int i = 0; i < jobJSONArray.size(); i++) { + + Map jobJSON=(Map) jobJSONArray.get(i); + + // 将字符串日期转换为LocalDate对象 + LocalDate startDate = LocalDate.parse(jobJSON.get("startTime")+ "-01"); + LocalDate endDate = LocalDate.parse(jobJSON.get("endTime") + "-01"); + + // 计算年份差异 + Period period = Period.between(startDate, endDate); + int yearDifference = period.getYears(); + experience+=yearDifference; + } + //放入工作时间 + result.put("experience", experience); + } + result.put("userName",resume.getName()); + result.put("userImgUrl",resume.getAvatar()); + result.put("eduBack",eduBack); + result.put("gender",resume.getSex()); + result.put("school",school); + result.put("major",major); + result.put("phone",resume.getPhone()); + result.put("resume",resume); + + return result; + } }