From e6406e723449ceae7f055bf35c901c4d3e697642 Mon Sep 17 00:00:00 2001 From: Unique-Jerry <10902054+unique-jerry@user.noreply.gitee.com> Date: Wed, 6 Dec 2023 19:10:25 +0800 Subject: [PATCH] vx --- .../controller/RecruitmentController.java | 79 +++++- .../VxController/VxJobController.java | 2 +- .../VxController/VxUserController.java | 18 +- .../yzdx/AiInterviewer/entity/JobPosting.java | 31 +++ .../entity/dto/JobPostingDto.java | 17 ++ .../yzdx/AiInterviewer/entity/jobPosting.java | 30 --- .../entity/vxEntity/VxFeedBack.java | 3 + .../mapper/JobPostingMapper.java | 9 + .../AiInterviewer/service/JobListService.java | 2 +- .../service/JobPostingService.java | 54 +++++ .../AiInterviewer/service/ResumeService.java | 7 +- .../AiInterviewer/service/UserService.java | 3 + .../VxService/impl/VxFeedBackServiceImpl.java | 8 +- .../service/impl/JobListServiceImpl.java | 11 +- .../service/impl/JobPostingServiceImpl.java | 191 +++++++++++++++ .../service/impl/ResumeServiceImpl.java | 226 +++++++++++++++++- 16 files changed, 622 insertions(+), 69 deletions(-) create mode 100644 src/main/java/com/yzdx/AiInterviewer/entity/JobPosting.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/entity/dto/JobPostingDto.java delete mode 100644 src/main/java/com/yzdx/AiInterviewer/entity/jobPosting.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/mapper/JobPostingMapper.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/service/JobPostingService.java create mode 100644 src/main/java/com/yzdx/AiInterviewer/service/impl/JobPostingServiceImpl.java diff --git a/src/main/java/com/yzdx/AiInterviewer/controller/RecruitmentController.java b/src/main/java/com/yzdx/AiInterviewer/controller/RecruitmentController.java index cc1242e..45bb67a 100644 --- a/src/main/java/com/yzdx/AiInterviewer/controller/RecruitmentController.java +++ b/src/main/java/com/yzdx/AiInterviewer/controller/RecruitmentController.java @@ -4,13 +4,17 @@ import com.yzdx.AiInterviewer.comment.R; import com.yzdx.AiInterviewer.entity.Company; import com.yzdx.AiInterviewer.entity.JobEntity; import com.yzdx.AiInterviewer.entity.dto.JobDto; +import com.yzdx.AiInterviewer.entity.dto.JobPostingDto; import com.yzdx.AiInterviewer.entity.dto.JobSettingDto; import com.yzdx.AiInterviewer.service.CompanyService; import com.yzdx.AiInterviewer.service.InterviewSettingService; import com.yzdx.AiInterviewer.service.JobListService; +import com.yzdx.AiInterviewer.service.JobPostingService; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; import java.util.*; @@ -24,6 +28,8 @@ public class RecruitmentController { private InterviewSettingService interviewSettingService; @Autowired private CompanyService companyService; + @Autowired + private JobPostingService jobPostingService; @ApiImplicitParams({ @@ -48,17 +54,17 @@ public class RecruitmentController { public R addJob(@RequestBody Map addInfo){ List address=(List) addInfo.get("address"); String encoding=(String) addInfo.get("encoding"); - String address_detail=(String) addInfo.get("address_detail"); + String address_detail=(String) addInfo.get("addressDetail"); Integer jobType=(Integer) addInfo.get("jobType"); Integer userId=(Integer) addInfo.get("userId"); String details=(String) addInfo.get("details"); String jobName=(String) addInfo.get("jobName"); String startTime=(String) addInfo.get("startTime"); String endTime=(String) addInfo.get("endTime"); - String min_salary=(String) addInfo.get("min_salary"); - String max_salary=(String) addInfo.get("max_salary"); - String min_number=(String) addInfo.get("min_number"); - String max_number=(String) addInfo.get("max_number"); + String min_salary=(String) addInfo.get("minSalary"); + String max_salary=(String) addInfo.get("maxSalary"); + String min_number=(String) addInfo.get("minNumber"); + String max_number=(String) addInfo.get("maxNumber"); List jobTips=(List) addInfo.get("jobTips"); Integer requirement=(Integer) addInfo.get("requirement"); @@ -359,5 +365,68 @@ public class RecruitmentController { } + @PostMapping("/add_jobPosting") + public R addJobPosting(@RequestBody Map addInfo){ + + String name=(String)addInfo.get("name"); + String startTime=(String)addInfo.get("startTime"); + String endTime=(String)addInfo.get("endTime"); + String checkList=(String)addInfo.get("checkList"); + Integer userId=(Integer)addInfo.get("userId"); + String encoding=(String)addInfo.get("encoding"); + + + + + Integer rows= jobPostingService.addJobPosting(name,startTime,endTime,checkList,userId,encoding); + + if(rows!=1){ + return R.error("发布失败"); + } + return R.success("发布成功"); + + } + @PostMapping("/update_jobPosting") + public R updateJobPosting(@RequestBody Map updateInfo){ + + Integer id=(Integer) updateInfo.get("id"); + String name=(String)updateInfo.get("name"); + String startTime=(String)updateInfo.get("startTime"); + String endTime=(String)updateInfo.get("endTime"); + String checkList=(String)updateInfo.get("checkList"); + Integer userId=(Integer)updateInfo.get("userId"); + Integer status=(Integer)updateInfo.get("status"); + + + Integer rows= jobPostingService.updateJobPosting(id,name,startTime,endTime,checkList,userId,status); + + if(rows!=1){ + return R.error("修改失败"); + } + return R.success("修改成功"); + + } + + @DeleteMapping("/delete_jobPosting") + public R deleteJobPosting(Integer id){ + + Integer rows= jobPostingService.deleteJobPosting(id); + + if(rows!=1){ + return R.error("删除失败"); + } + return R.success("删除成功"); + + } + + @GetMapping("/get_jobPostingList") + public R getJobPostingList(String encoding){ + + List jobPostingDtos=jobPostingService.getJobPostingList(encoding); + + return R.success(jobPostingDtos); + + + } } diff --git a/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxJobController.java b/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxJobController.java index bbe9319..6a662d6 100644 --- a/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxJobController.java +++ b/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxJobController.java @@ -116,7 +116,7 @@ public class VxJobController { @GetMapping("/getSuggestList") public R getSuggestList(Integer userId){ - Map result= jobListService.getSuggestJob(userId); + List> result= jobListService.getSuggestJob(userId); return R.success(result); } 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 0e4cbd0..7a019a8 100644 --- a/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java +++ b/src/main/java/com/yzdx/AiInterviewer/controller/VxController/VxUserController.java @@ -1,7 +1,6 @@ package com.yzdx.AiInterviewer.controller.VxController; import com.yzdx.AiInterviewer.comment.R; -import com.yzdx.AiInterviewer.entity.JobExpectation; import com.yzdx.AiInterviewer.entity.Resume; import com.yzdx.AiInterviewer.entity.VxEntityDto.VxCompanyLikeDto; import com.yzdx.AiInterviewer.entity.vxEntity.VxFeedBack; @@ -16,12 +15,12 @@ import com.yzdx.AiInterviewer.utiles.WechatUtils; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; import org.apache.commons.codec.binary.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.json.JSONObject; import java.util.List; +import java.util.Map; @RestController @@ -67,7 +66,6 @@ public class VxUserController { return R.success(session_key); } - @ResponseBody @ApiImplicitParams({ @ApiImplicitParam(name = "encryptedData", required = true), @ApiImplicitParam(name = "iv", required = true), @@ -128,13 +126,13 @@ public class VxUserController { @RequestParam(required = true, value = "projectExperience") String projectExperience, @RequestParam(required = true, value = "userId") Integer userId, @RequestParam(required = true, value = "sex") String sex){ - Integer rows = resumeService.writeResume( name, avatar,sex, status, graduateTime, birthday, phone, + Map result = resumeService.writeResume( name, avatar,sex, status, graduateTime, birthday, phone, email, vx, personalAdvantage, other,education_background,jobExpectation,workExperience,projectExperience,userId); - if(rows!=-2){ + if(result==null){ return R.error("提交失败,请重新输入"); } - return R.success("提交简历信息成功"); + return R.success(result); } /** *更新简历 @@ -176,13 +174,13 @@ public class VxUserController { @RequestParam(required = true, value = "userId") Integer userId, @RequestParam(required = true, value = "sex") String sex ){ - Integer rows = resumeService.updateResume(id,name,avatar, sex, status, graduateTime, + Map result = resumeService.updateResume(id,name,avatar, sex, status, graduateTime, birthday, phone, email, vx, personalAdvantage, other,education_background,jobExpectation,workExperience,projectExperience,userId); - if(rows!=1){ + if(result==null){ return R.error("提交失败,请重新输入"); } - return R.success("提交简历信息成功"); + return R.success(result); } /** @@ -326,7 +324,7 @@ public R getResume(Integer userId){ @RequestParam(required = true, value = "phone") String phone, @RequestParam(required = true, value = "content") String content){ Integer rows=vxFeedBackService.writeFeedBack(userid,imgUrl,phone,content); - if (rows==-2){ + if (rows!=1){ return R.error("提交失败"); } return R.success("提交成功"); diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/JobPosting.java b/src/main/java/com/yzdx/AiInterviewer/entity/JobPosting.java new file mode 100644 index 0000000..6585d9f --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/entity/JobPosting.java @@ -0,0 +1,31 @@ +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; + +import java.util.Date; + +@Data +@TableName("job_posting") +public class JobPosting extends BaseEntity{ + + @TableId(type = IdType.AUTO) + private Integer id; + + private String companyEncoding; + + private String recruitmentName; + + private String startTime; + + private Integer status; + + private String endTime; + + private String jobId; + + private String description; + +} diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobPostingDto.java b/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobPostingDto.java new file mode 100644 index 0000000..7b6e7ff --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/entity/dto/JobPostingDto.java @@ -0,0 +1,17 @@ +package com.yzdx.AiInterviewer.entity.dto; + +import com.yzdx.AiInterviewer.entity.JobEntity; +import com.yzdx.AiInterviewer.entity.JobPosting; +import lombok.Data; + +import java.util.List; + +@Data +public class JobPostingDto extends JobPosting { + + private String jobName; + + private String time; + + private List checkedList; +} diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/jobPosting.java b/src/main/java/com/yzdx/AiInterviewer/entity/jobPosting.java deleted file mode 100644 index ffcc5c5..0000000 --- a/src/main/java/com/yzdx/AiInterviewer/entity/jobPosting.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.yzdx.AiInterviewer.entity; - -import lombok.Data; - -import java.util.Date; - -@Data -public class jobPosting extends BaseEntity{ - - private Integer id; - - private String companyEncoding; - - private String recruitmentName; - - private Date startTime; - - private Date endTime; - - private String jobId; - - private String interviewQuestions; - - private String promote; - - private Integer interviewee; - - private String contact; - -} diff --git a/src/main/java/com/yzdx/AiInterviewer/entity/vxEntity/VxFeedBack.java b/src/main/java/com/yzdx/AiInterviewer/entity/vxEntity/VxFeedBack.java index 9241b60..07fa214 100644 --- a/src/main/java/com/yzdx/AiInterviewer/entity/vxEntity/VxFeedBack.java +++ b/src/main/java/com/yzdx/AiInterviewer/entity/vxEntity/VxFeedBack.java @@ -1,5 +1,7 @@ package com.yzdx.AiInterviewer.entity.vxEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.yzdx.AiInterviewer.entity.BaseEntity; import io.swagger.annotations.ApiModel; @@ -11,6 +13,7 @@ import lombok.Data; @TableName("feedback") public class VxFeedBack extends BaseEntity { @ApiModelProperty("反馈id") + @TableId(type = IdType.AUTO) private Integer id; @ApiModelProperty("用户id") private Integer userId; diff --git a/src/main/java/com/yzdx/AiInterviewer/mapper/JobPostingMapper.java b/src/main/java/com/yzdx/AiInterviewer/mapper/JobPostingMapper.java new file mode 100644 index 0000000..29a76fa --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/mapper/JobPostingMapper.java @@ -0,0 +1,9 @@ +package com.yzdx.AiInterviewer.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yzdx.AiInterviewer.entity.JobPosting; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface JobPostingMapper extends BaseMapper { +} diff --git a/src/main/java/com/yzdx/AiInterviewer/service/JobListService.java b/src/main/java/com/yzdx/AiInterviewer/service/JobListService.java index 9950d23..5f25598 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/JobListService.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/JobListService.java @@ -140,5 +140,5 @@ public interface JobListService extends IService { * @return jobList * * */ - Map getSuggestJob(Integer userId); + List> getSuggestJob(Integer userId); } diff --git a/src/main/java/com/yzdx/AiInterviewer/service/JobPostingService.java b/src/main/java/com/yzdx/AiInterviewer/service/JobPostingService.java new file mode 100644 index 0000000..0f8e9f5 --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/service/JobPostingService.java @@ -0,0 +1,54 @@ +package com.yzdx.AiInterviewer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.yzdx.AiInterviewer.entity.JobPosting; +import com.yzdx.AiInterviewer.entity.dto.JobPostingDto; + +import java.util.Date; +import java.util.List; + +public interface JobPostingService extends IService { + + /** + *招聘发布 + * @param name 招聘名称 + * @param startTime 招聘开始时间 + * @param endTime 招聘结束时间 + * @param encoding 招聘公司编码 + * @param checkList 招聘岗位IDs + * @param userId 添加人的ID + * @return 影响的行数 + * */ + + Integer addJobPosting(String name, String startTime, String endTime, String checkList, Integer userId, String encoding); + /** + *招聘修改 + * @param id 招聘信息id + * @param name 招聘名称 + * @param startTime 招聘开始时间 + * @param endTime 招聘结束时间 + * @param checkList 招聘岗位IDs + * @param userId 添加人的ID + * @return 影响的行数 + * */ + + Integer updateJobPosting(Integer id,String name, String startTime, String endTime, + String checkList, Integer userId,Integer status); + + + /** + * 招聘删除 + * @param id 招聘信息ID + * return 影响的行数 + * */ + + Integer deleteJobPosting(Integer id); + + /** + * 获取招聘列表 + * @param encoding 公司编码 + * @return JobPostingDto列表 + * + * */ + List getJobPostingList(String encoding); +} diff --git a/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java b/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java index 6316c6f..fa2e49d 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/ResumeService.java @@ -5,6 +5,7 @@ import com.yzdx.AiInterviewer.entity.JobExpectation; import com.yzdx.AiInterviewer.entity.Resume; import java.util.List; +import java.util.Map; public interface ResumeService extends IService { @@ -27,14 +28,14 @@ public interface ResumeService extends IService { * @param userId * @return */ - Integer writeResume(String name, String avatar,String sex, String status + Map writeResume(String name, String avatar, String sex, String status , String graduateTime, String birthday, String phone, String email - , String vx, String personalAdvantage, String other,String education + , String vx, String personalAdvantage, String other, String education , String jobExpectation, String workExperience, String projectExperience, Integer userId); - Integer updateResume(Integer id, String name, String avatar,String sex, String status, + Map updateResume(Integer id, String name, String avatar,String sex, String status, String graduateTime, String birthday, String phone, String email, String vx, String personalAdvantage, String other,String education,String jobExpectation, String workExperience, String projectExperience, Integer userId); diff --git a/src/main/java/com/yzdx/AiInterviewer/service/UserService.java b/src/main/java/com/yzdx/AiInterviewer/service/UserService.java index 366e08d..3a23f08 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/UserService.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/UserService.java @@ -97,6 +97,9 @@ public interface UserService extends IService { * */ User updateUserInfo(Integer userId,Integer updateId,String username,String age,String email,String sex); + R vxLogin(String phone); + + } diff --git a/src/main/java/com/yzdx/AiInterviewer/service/VxService/impl/VxFeedBackServiceImpl.java b/src/main/java/com/yzdx/AiInterviewer/service/VxService/impl/VxFeedBackServiceImpl.java index 1c2198b..e1cfbd0 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/VxService/impl/VxFeedBackServiceImpl.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/VxService/impl/VxFeedBackServiceImpl.java @@ -15,13 +15,7 @@ public class VxFeedBackServiceImpl extends ServiceImpl queryWrapper=new LambdaQueryWrapper<>(); - queryWrapper.eq(VxFeedBack::getUserId,userid); - VxFeedBack vxFeedBack = vxFeedBackMapper.selectOne(queryWrapper); - if(vxFeedBack!=null){ - //反馈已存在,提交失败 - return -2; - } + VxFeedBack vxFeedBack1=new VxFeedBack(); vxFeedBack1.setContent(content); vxFeedBack1.setPhone(phone); 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 aa31c31..84f7d17 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/JobListServiceImpl.java @@ -332,9 +332,8 @@ public class JobListServiceImpl extends ServiceImpl implem ///需要改---------------------------------------------------------------- @Override - public Map getSuggestJob(Integer userId) { - - Map result=new HashMap<>(); + public List> getSuggestJob(Integer userId) { + List> result=new ArrayList<>(); //先获取用户的岗位期望 Resume resume = resumeService.getResume(userId); @@ -411,7 +410,11 @@ public class JobListServiceImpl extends ServiceImpl implem }).collect(Collectors.toList()); - result.put(jobName,vxJobLikeDtoList); + Map jobEntitys=new HashMap<>(); + jobEntitys.put("suggestJobName",jobName); + jobEntitys.put("suggestJobList",vxJobLikeDtoList); + + result.add(jobEntitys); } diff --git a/src/main/java/com/yzdx/AiInterviewer/service/impl/JobPostingServiceImpl.java b/src/main/java/com/yzdx/AiInterviewer/service/impl/JobPostingServiceImpl.java new file mode 100644 index 0000000..ce66d62 --- /dev/null +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/JobPostingServiceImpl.java @@ -0,0 +1,191 @@ +package com.yzdx.AiInterviewer.service.impl; + +import com.alibaba.fastjson.JSON; +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.JobEntity; +import com.yzdx.AiInterviewer.entity.JobPosting; +import com.yzdx.AiInterviewer.entity.dto.JobPostingDto; +import com.yzdx.AiInterviewer.mapper.JobPostingMapper; +import com.yzdx.AiInterviewer.service.JobListService; +import com.yzdx.AiInterviewer.service.JobPostingService; +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.text.ParseException; +import java.text.SimpleDateFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class JobPostingServiceImpl extends ServiceImpl implements JobPostingService { + + @Autowired + private JobPostingMapper jobPostingMapper; + + @Autowired + private JobListService jobListService; + + @Override + public Integer addJobPosting(String name, String startTime, String endTime, String checkList, Integer userId, String encoding) { + + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(JobPosting::getRecruitmentName,name).eq(JobPosting::getCompanyEncoding,encoding); + + JobPosting findJobPosting = jobPostingMapper.selectOne(queryWrapper); + + if(findJobPosting!=null){ + + return -2; + + } + + JobPosting newJobPosting=new JobPosting(); + + newJobPosting.setRecruitmentName(name); + + newJobPosting.setStartTime(startTime); + + newJobPosting.setEndTime(endTime); + + newJobPosting.setJobId(checkList); + + newJobPosting.setCreateUser(userId); + + newJobPosting.setCreateTime(TimeUtil.getTime()); + + newJobPosting.setUpdateUser(userId); + + newJobPosting.setUpdateTime(TimeUtil.getTime()); + + newJobPosting.setCompanyEncoding(encoding); + + Integer rows = jobPostingMapper.insert(newJobPosting); + + return rows; + } + + @Override + public Integer updateJobPosting(Integer id, String name, String startTime, String endTime, + String checkList, Integer userId,Integer status) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(JobPosting::getId,id); + + JobPosting findJobPosting = jobPostingMapper.selectOne(queryWrapper); + + findJobPosting.setRecruitmentName(name); + + findJobPosting.setStartTime(startTime); + + findJobPosting.setEndTime(endTime); + + findJobPosting.setJobId(checkList); + + findJobPosting.setUpdateUser(userId); + + findJobPosting.setUpdateTime(TimeUtil.getTime()); + + findJobPosting.setStatus(status); + + Integer rows = jobPostingMapper.updateById(findJobPosting); + + return rows; + } + + @Override + public Integer deleteJobPosting(Integer id) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(JobPosting::getId,id); + + Integer rows = jobPostingMapper.delete(queryWrapper); + + return rows; + } + + @Override + public List getJobPostingList(String encoding) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + + queryWrapper.eq(JobPosting::getCompanyEncoding,encoding); + + List jobPostings = jobPostingMapper.selectList(queryWrapper); + + List JobPostingDtoList=jobPostings.stream().map(item->{ + JobPostingDto jobPostingDto=new JobPostingDto(); + + BeanUtils.copyProperties(item,jobPostingDto); + + JSONArray jsonArray= (JSONArray) JSON.parse( item.getJobId()); + + String JobName=""; + + List checkedList=new ArrayList<>(); + + for (int i = 0; i < jsonArray.size(); i++) { + + JobEntity jobById = jobListService.getJobById((Integer) jsonArray.get(i)); + + if(i==jsonArray.size()-1){ + JobName=JobName+jobById.getJobName(); + checkedList.add(jobById); + break; + } + JobName=jobById.getJobName()+","; + checkedList.add(jobById); + } + + jobPostingDto.setJobName(JobName); + jobPostingDto.setCheckedList(checkedList); + // 定义输入字符串的格式 + SimpleDateFormat inputStartTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // 定义输出字符串的格式 + SimpleDateFormat outputStartTimeFormat = new SimpleDateFormat("yyyy-MM-dd"); + String startTime =""; + try { + // 将输入字符串解析为日期对象 + Date date = inputStartTimeFormat.parse(item.getStartTime()); + // 将日期对象格式化为输出字符串 + startTime = outputStartTimeFormat.format(date); + + } catch (ParseException e) { + e.printStackTrace(); + } + + // 定义输入字符串的格式 + SimpleDateFormat inputEndTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // 定义输出字符串的格式 + SimpleDateFormat outputEndTimeFormat = new SimpleDateFormat("yyyy-MM-dd"); + + String endTime =""; + try { + // 将输入字符串解析为日期对象 + Date date = inputEndTimeFormat.parse(item.getStartTime()); + // 将日期对象格式化为输出字符串 + endTime = outputEndTimeFormat.format(date); + + // 输出结果 + } catch (ParseException e) { + e.printStackTrace(); + } + + String Time=startTime+"至"+endTime; + + jobPostingDto.setTime(Time); + + + + return jobPostingDto; + }).collect(Collectors.toList()); + + return JobPostingDtoList; + } +} 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 d4828b7..87eea9d 100644 --- a/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java +++ b/src/main/java/com/yzdx/AiInterviewer/service/impl/ResumeServiceImpl.java @@ -1,12 +1,15 @@ package com.yzdx.AiInterviewer.service.impl; import com.alibaba.fastjson.JSON; +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.JobExpectation; import com.yzdx.AiInterviewer.entity.Resume; +import com.yzdx.AiInterviewer.entity.User; import com.yzdx.AiInterviewer.mapper.JobExpectationMapper; import com.yzdx.AiInterviewer.mapper.ResumeMapper; +import com.yzdx.AiInterviewer.mapper.UserMapper; import com.yzdx.AiInterviewer.service.ResumeService; import com.yzdx.AiInterviewer.utiles.TimeUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -14,23 +17,26 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.Period; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Service public class ResumeServiceImpl extends ServiceImpl implements ResumeService { @Autowired private ResumeMapper resumeMapper; + + @Autowired + private UserMapper userMapper; // @Autowired // private JobExpectationMapper jobExpectationMapper; @Override - public Integer writeResume( String name, String avatar,String sex, String status, String graduateTime, String birthday, + public Map writeResume( String name, String avatar,String sex, String status, String graduateTime, String birthday, String phone, String email, String vx, String personalAdvantage, String other,String education, String jobExpectation, String workExperience, String projectExperience, Integer userId) { + Map result=new HashMap<>(); + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(Resume::getUserId,userId); @@ -38,7 +44,18 @@ public class ResumeServiceImpl extends ServiceImpl impleme Resume resume1 = resumeMapper.selectOne(queryWrapper); if(resume1!=null){ - return -2; + return null; + } + + if(avatar!=null){ + + LambdaQueryWrapper queryWrapper1=new LambdaQueryWrapper(); + + queryWrapper1.eq(User::getId,userId); + + User findUser = userMapper.selectOne(queryWrapper1); + + findUser.setAvatar(avatar); } Resume resume=new Resume(); @@ -94,9 +111,98 @@ public class ResumeServiceImpl extends ServiceImpl impleme resume.setEducationBackground(education); + //解析在校经历,计算出学历 + + JSONArray educationJSONArray= JSON.parseArray(education); + + 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 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",name); + result.put("userImgUrl",avatar); + result.put("eduBack",eduBack); + result.put("gender",sex); + result.put("school",school); + result.put("major",major); + result.put("phone",phone); + + + return result; } // @Override @@ -148,10 +254,23 @@ public class ResumeServiceImpl extends ServiceImpl impleme // } @Override - public Integer updateResume(Integer id, String name, String avatar,String sex, String status, + public Map updateResume(Integer id, String name, String avatar,String sex, String status, String graduateTime, String birthday, String phone, String email, String vx, String personalAdvantage, String other,String education,String jobExpectation, String workExperience, String projectExperience, Integer userId) { + + Map result=new HashMap<>(); + if(avatar!=null){ + + LambdaQueryWrapper queryWrapper1=new LambdaQueryWrapper<>(); + + queryWrapper1.eq(User::getId,userId); + + User findUser = userMapper.selectOne(queryWrapper1); + + findUser.setAvatar(avatar); + } + Resume resume=new Resume(); resume.setId(id); resume.setName(name); @@ -170,8 +289,99 @@ public class ResumeServiceImpl extends ServiceImpl impleme resume.setJobExpectation(jobExpectation); resume.setWorkExperience(workExperience); resume.setProjectExperience(projectExperience); + + //解析在校经历,计算出学历 + + JSONArray educationJSONArray= JSON.parseArray(education); + + 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 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",name); + result.put("userImgUrl",avatar); + result.put("eduBack",eduBack); + result.put("gender",sex); + result.put("school",school); + result.put("major",major); + result.put("phone",phone); + + + return result; } @Override