diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java index a02398c..2449f1f 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFileController.java @@ -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; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java index 20df889..16578dd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java @@ -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)); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java index 7e99018..821ffb1 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java @@ -159,4 +159,12 @@ public class CmsJobController extends BaseController List jobList = jobService.sysRecommend(esJobSearch); return success(jobList); } + + @ApiOperation("获取所有岗位") + @GetMapping("/selectAllJob") + public AjaxResult selectAllJob() + { + List jobList = jobService.selectAllJob(); + return success(jobList); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobApplyController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobApplyController.java index 2c810f2..831bc80 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobApplyController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobApplyController.java @@ -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 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)); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java index bee6b12..f74a1a1 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java @@ -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 filesList; + + @TableField(exist = false) + @ApiModelProperty("公司信息") + private CompanyVo companyVo; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/CompanyVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/CompanyVo.java new file mode 100644 index 0000000..6a24871 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/CompanyVo.java @@ -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 companyContactList; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/FileMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/FileMapper.java index 2095ffc..6e0fbcb 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/FileMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/FileMapper.java @@ -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; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppUserService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppUserService.java index 7857e2a..66bd04b 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppUserService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IAppUserService.java @@ -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); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IFileService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IFileService.java index 40368a5..a24225d 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IFileService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IFileService.java @@ -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; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobApplyService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobApplyService.java index b2b7a99..b39504e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobApplyService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobApplyService.java @@ -65,4 +65,7 @@ public interface IJobApplyService List selectAppUserList(Job job); List selectApplyJobUserList(AppUser appUser); + + + public int applyComJob(JobApply jobApply); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java index 59f7b9c..e48c516 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java @@ -94,4 +94,6 @@ public interface IJobService List selectApplyJobUserList(Long jobId); List sysRecommend(ESJobSearch esJobSearch); + + List selectAllJob(); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppUserServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppUserServiceImpl.java index 329fc9b..cb1524c 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppUserServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AppUserServiceImpl.java @@ -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 imple private AppSkillMapper appSkillMapper; @Autowired private CompanyMapper companyMapper; + @Autowired + private FileMapper fileMapper; + /** * 查询APP用户 * @@ -118,6 +120,12 @@ public class AppUserServiceImpl extends ServiceImpl 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 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 experiencesList=userWorkExperiencesMapper.getWorkExperiencesList(parm); + appUser.setExperiencesList(experiencesList); + //查询用户技能 + AppSkill parmsk=new AppSkill(); + parmsk.setUserId(appUser.getUserId()); + List skillList=appSkillMapper.getList(parmsk); + appUser.setAppSkillsList(skillList); + + File fileParm=new File(); + fileParm.setBussinessId(appUser.getUserId()); + List files=fileMapper.selectFileList(fileParm); + appUser.setFileList(files); + } + return appUser; + } + + @Override + public int editRegisterUser(RegisterBody registerBody) { + //保存或修改工作经历 + List userWorkExperiencesList=registerBody.getExperiencesList(); + editUserWorkExperiences(userWorkExperiencesList); + //修改技能 + List 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 list){ + if(list!=null&&list.size()>0){ + List 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 list){ + if(list!=null&&list.size()>0){ + List add=new ArrayList<>(); + list.forEach(it->{ + if(it.getId()!=null){userWorkExperiencesMapper.updateById(it);}else{add.add(it);} + }); + if(add.size()>0){ + userWorkExperiencesMapper.batchInsert(add); + } + } + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/FileServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/FileServiceImpl.java index 6762867..22440bd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/FileServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/FileServiceImpl.java @@ -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; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobApplyServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobApplyServiceImpl.java index 6465d07..3dc8391 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobApplyServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobApplyServiceImpl.java @@ -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 im public List selectApplyJobUserList(AppUser appUser) { return jobApplyMapper.selectApplyJobUserList(appUser); } + + @Override + public int applyComJob(JobApply jobApply) { + //todo 计算匹配度 + jobApply.setMatchingDegree(1L); + List jobApplies = jobApplyMapper.selectList(Wrappers.lambdaQuery().eq(JobApply::getJobId, jobApply.getJobId()).eq(JobApply::getUserId, jobApply.getUserId())); + if(jobApplies.size()>0){ + List ids = jobApplies.stream().map(JobApply::getId).collect(Collectors.toList()); + jobApplyMapper.deleteBatchIds(ids); + } + jobApplyMapper.insert(jobApply); + return 0; + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java index 0968b2e..d5b96a0 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobServiceImpl.java @@ -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 implements IJobSe List esJobDocuments = sysUserCollection(jobListResult); return esJobDocuments; } + + public List selectAllJob(){ + int batchSize = 1000; // 每批次处理的数据量 + int offset = 0; + Map params=new HashMap<>(); + params.put("batchSize", batchSize); + params.put("offset", offset*batchSize); + return jobMapper.selectAllJob(params); + } } diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobMapper.xml index 9ab5d4c..58a73e1 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/JobMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobMapper.xml @@ -34,6 +34,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,9 +272,10 @@ WHERE b.name = company.name ) - + SELECT j.*,c.industry,c.scale,c.nature as company_nature,c.code,c.description as company_description,c.name,c.company_id,t.contact_person,t.contact_person_phone FROM job as j + left join company as c on c.company_id = j.company_id and j.del_flag='0' and c.del_flag='0' + left join company_contact as t on t.company_id=j.company_id and t.del_flag='0' where c.company_id='1' limit #{offset},#{batchSize}