1.修改es(返回企业描述、企业联系人list)信息

2.添加pc端投简历接口
3.添加pc端查询简历、编辑简历接口
This commit is contained in:
sh
2025-10-29 19:10:46 +08:00
parent a592435926
commit a63bb88460
18 changed files with 290 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.File;
import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.cms.service.IFileService;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;

View File

@@ -2,6 +2,10 @@ package com.ruoyi.cms.controller.cms;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.domain.model.RegisterBody;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -111,4 +115,30 @@ public class CmsAppUserController extends BaseController
return toAjax(appUserService.deleteAppUserByUserIds(userIds));
}
/**
* 获取APP用户详细信息pc端获取移动端简历信息
*/
@ApiOperation("pc端个人简历信息-获取APP用户详细信息")
@GetMapping(value = "/getUserInfo")
public AjaxResult getUserInfo()
{
if(!SecurityUtils.isLogin()){
return AjaxResult.error("未登录!");
}
return success(appUserService.getUserInfo());
}
/**
* 修改用户简历信息-(技能信息、经历信息)
*/
@ApiOperation("修改用户简历信息")
@PostMapping("/editRegisterUser")
@BussinessLog(title = "保存简历")
public AjaxResult editRegisterUser(@RequestBody RegisterBody registerBody)
{
if (registerBody == null) {
throw new IllegalArgumentException("入参registerBody不能为空");
}
return AjaxResult.success(appUserService.editRegisterUser(registerBody));
}
}

View File

@@ -159,4 +159,12 @@ public class CmsJobController extends BaseController
List<ESJobDocument> jobList = jobService.sysRecommend(esJobSearch);
return success(jobList);
}
@ApiOperation("获取所有岗位")
@GetMapping("/selectAllJob")
public AjaxResult selectAllJob()
{
List<Job> jobList = jobService.selectAllJob();
return success(jobList);
}
}

View File

@@ -12,9 +12,11 @@ import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.Company;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -65,4 +67,20 @@ public class JobApplyController extends BaseController {
List<CandidateVO> list = iJobApplyService.selectApplyJobUserList(appUser);
return getDataTable(list);
}
@GetMapping("/apply/{jobId}")
@ApiOperation("用户申请岗位")
public AjaxResult apply(@ApiParam("岗位id") @PathVariable Long jobId)
{
if(jobId==null){
return AjaxResult.error("岗位id为空");
}
if(!SecurityUtils.isLogin()){
return AjaxResult.error("用户未登录!");
}
JobApply jobApply=new JobApply();
jobApply.setJobId(jobId);
jobApply.setUserId(SecurityUtils.getUserId());
return toAjax(iJobApplyService.applyComJob(jobApply));
}
}

View File

@@ -1,37 +0,0 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 文件对象 file
* @author ${author}
* @date 2025-03-18
*/
@Data
@ApiModel("文件")
@TableName(value = "file")
public class File extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
@Excel(name = "url")
@ApiModelProperty("url")
private String fileUrl;
@Excel(name = "业务id")
@ApiModelProperty("业务id")
private Long bussinessId;
}

View File

@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.cms.domain.vo.CompanyVo;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.Company;
import com.ruoyi.common.core.domain.entity.File;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -173,4 +175,8 @@ public class Job extends BaseEntity
@TableField(exist = false)
@ApiModelProperty("附件列表")
private List<File> filesList;
@TableField(exist = false)
@ApiModelProperty("公司信息")
private CompanyVo companyVo;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.cms.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.CompanyContact;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 公司对象 company
* @author lishundong
* @date 2024-09-04
*/
@Data
public class CompanyVo extends BaseEntity
{
@ApiModelProperty("公司id")
private Long companyId;
@Excel(name = "单位名称")
@ApiModelProperty("单位名称")
private String name;
@TableField(exist = false)
@ApiModelProperty("公司描述")
private String companyDescription;
@TableField(exist = false)
@ApiModelProperty("企业联系人列表")
private List<CompanyContact> companyContactList;
}

View File

@@ -1,7 +1,7 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.File;
import com.ruoyi.common.core.domain.entity.File;
import java.util.List;

View File

@@ -62,4 +62,8 @@ public interface IAppUserService
public AppUser selectAppuserByIdcard(String idCard);
public AppUserLky selectAppUserInfo(AppUser appUser);
public AppUser getUserInfo();
public int editRegisterUser(RegisterBody registerBody);
}

View File

@@ -1,6 +1,6 @@
package com.ruoyi.cms.service;
import com.ruoyi.cms.domain.File;
import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;

View File

@@ -65,4 +65,7 @@ public interface IJobApplyService
List<CandidateVO> selectAppUserList(Job job);
List<CandidateVO> selectApplyJobUserList(AppUser appUser);
public int applyComJob(JobApply jobApply);
}

View File

@@ -94,4 +94,6 @@ public interface IJobService
List<AppUser> selectApplyJobUserList(Long jobId);
List<ESJobDocument> sysRecommend(ESJobSearch esJobSearch);
List<Job> selectAllJob();
}

View File

@@ -1,18 +1,17 @@
package com.ruoyi.cms.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Arrays;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.cms.domain.vo.AppSkillVo;
import com.ruoyi.cms.mapper.*;
import com.ruoyi.cms.util.StringUtil;
import com.ruoyi.common.core.domain.entity.*;
import com.ruoyi.cms.domain.vo.AppUserLky;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.model.RegisterBody;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SiteSecurityUtils;
@@ -43,6 +42,9 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
private AppSkillMapper appSkillMapper;
@Autowired
private CompanyMapper companyMapper;
@Autowired
private FileMapper fileMapper;
/**
* 查询APP用户
*
@@ -118,6 +120,12 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
@Override
public int updateAppUser(AppUser appUser)
{
if(appUser.getExperiencesList()!=null&&appUser.getExperiencesList().size()>0){
userWorkExperiencesMapper.batchInsert(appUser.getExperiencesList());
}
if(appUser.getAppSkillsList()!=null&&appUser.getAppSkillsList().size()>0){
appSkillMapper.batchInsert(appUser.getAppSkillsList());
}
return appUserMapper.updateById(appUser);
}
@@ -236,4 +244,78 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
lky.setAppSkillsList(skillList);
return lky;
}
@Override
public AppUser getUserInfo() {
//查询用户信息
LoginUser loginUser=SecurityUtils.getLoginUser();
SysUser sysUser=loginUser.getUser();
AppUser appUser=selectAppuserByIdcard(sysUser.getIdCard());
if(appUser!=null&&appUser.getUserId()!=null){
//查询工作经历信息
UserWorkExperiences parm=new UserWorkExperiences();
parm.setUserId(appUser.getUserId());
List<UserWorkExperiences> experiencesList=userWorkExperiencesMapper.getWorkExperiencesList(parm);
appUser.setExperiencesList(experiencesList);
//查询用户技能
AppSkill parmsk=new AppSkill();
parmsk.setUserId(appUser.getUserId());
List<AppSkill> skillList=appSkillMapper.getList(parmsk);
appUser.setAppSkillsList(skillList);
File fileParm=new File();
fileParm.setBussinessId(appUser.getUserId());
List<File> files=fileMapper.selectFileList(fileParm);
appUser.setFileList(files);
}
return appUser;
}
@Override
public int editRegisterUser(RegisterBody registerBody) {
//保存或修改工作经历
List<UserWorkExperiences> userWorkExperiencesList=registerBody.getExperiencesList();
editUserWorkExperiences(userWorkExperiencesList);
//修改技能
List<AppSkill> skillList=registerBody.getAppSkillsList();
editSkill(skillList);
//修改用户信息
AppUser appUser=registerBody.getAppUser();
if(appUser!=null&&appUser.getUserId()!=null){
appUserMapper.updateById(appUser);
}
return 1;
}
/**
* 修改技能
* @param list
*/
public void editSkill(List<AppSkill> list){
if(list!=null&&list.size()>0){
List<AppSkill> add=new ArrayList<>();
list.forEach(it->{
if(it.getId()!=null){appSkillMapper.updateById(it);}else{add.add(it);}
});
if(add.size()>0){
appSkillMapper.batchInsert(add);
}
}
}
/**
* 修改工作经历
* @param list
*/
public void editUserWorkExperiences(List<UserWorkExperiences> list){
if(list!=null&&list.size()>0){
List<UserWorkExperiences> add=new ArrayList<>();
list.forEach(it->{
if(it.getId()!=null){userWorkExperiencesMapper.updateById(it);}else{add.add(it);}
});
if(add.size()>0){
userWorkExperiencesMapper.batchInsert(add);
}
}
}
}

View File

@@ -4,16 +4,12 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.cms.domain.File;
import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.cms.mapper.FileMapper;
import com.ruoyi.cms.service.IFileService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

View File

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* 岗位申请Service业务层处理
@@ -133,4 +134,17 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
public List<CandidateVO> selectApplyJobUserList(AppUser appUser) {
return jobApplyMapper.selectApplyJobUserList(appUser);
}
@Override
public int applyComJob(JobApply jobApply) {
//todo 计算匹配度
jobApply.setMatchingDegree(1L);
List<JobApply> jobApplies = jobApplyMapper.selectList(Wrappers.<JobApply>lambdaQuery().eq(JobApply::getJobId, jobApply.getJobId()).eq(JobApply::getUserId, jobApply.getUserId()));
if(jobApplies.size()>0){
List<Long> ids = jobApplies.stream().map(JobApply::getId).collect(Collectors.toList());
jobApplyMapper.deleteBatchIds(ids);
}
jobApplyMapper.insert(jobApply);
return 0;
}
}

View File

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.cms.domain.*;
import com.ruoyi.cms.domain.File;
import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.cms.domain.query.ESJobSearch;
import com.ruoyi.cms.domain.vo.CandidateVO;
import com.ruoyi.cms.mapper.*;
@@ -853,4 +853,13 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
List<ESJobDocument> esJobDocuments = sysUserCollection(jobListResult);
return esJobDocuments;
}
public List<Job> selectAllJob(){
int batchSize = 1000; // 每批次处理的数据量
int offset = 0;
Map<String,Object> params=new HashMap<>();
params.put("batchSize", batchSize);
params.put("offset", offset*batchSize);
return jobMapper.selectAllJob(params);
}
}