From cb38c9abd9b7a6081cf3ce9b714d3d2602d00fb4 Mon Sep 17 00:00:00 2001 From: chenshaohua <635616957@qq.com> Date: Sun, 12 Jul 2026 13:13:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=81=E4=B8=9A=E6=94=B6?= =?UTF-8?q?=E8=97=8F=E6=B1=82=E8=81=8C=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/HrCompanyTalentCollectController.java | 118 ++++++++++++++++++ .../cms/domain/msg/HrAgencyConsultMsg.java | 2 + .../domain/msg/HrCompanyTalentCollect.java | 53 ++++++++ .../domain/msg/HrCompanyTalentCollectDTO.java | 52 ++++++++ .../msg/HrCompanyTalentCollectMapper.java | 23 ++++ .../msg/IHCompanyTalentCollectService.java | 39 ++++++ .../HrCompanyTalentCollectServiceImpl.java | 91 ++++++++++++++ .../resources/mapper/app/CompanyMapper.xml | 2 +- .../msg/HrCompanyTalentCollectMapper.xml | 104 +++++++++++++++ .../com/ruoyi/common/utils/SecurityUtils.java | 15 +++ 10 files changed, 498 insertions(+), 1 deletion(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/HrCompanyTalentCollectController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollect.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollectDTO.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/msg/HrCompanyTalentCollectMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/IHCompanyTalentCollectService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/impl/HrCompanyTalentCollectServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/msg/HrCompanyTalentCollectMapper.xml diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/HrCompanyTalentCollectController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/HrCompanyTalentCollectController.java new file mode 100644 index 0000000..abe565a --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/HrCompanyTalentCollectController.java @@ -0,0 +1,118 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollect; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollectDTO; +import com.ruoyi.cms.service.ICompanyService; +import com.ruoyi.cms.service.msg.IHCompanyTalentCollectService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 企业人才库收藏管理 + */ +@RestController +@RequestMapping("/cms/hrTalentCollect") +public class HrCompanyTalentCollectController extends BaseController +{ + @Autowired + private IHCompanyTalentCollectService hrCompanyTalentCollectService; + @Autowired + private ICompanyService companyService; + + /** + * 人才库收藏列表分页 + */ + @PreAuthorize("@ss.hasPermi('cms:hrTalentCollect:list')") + @GetMapping("/list") + public TableDataInfo list(HrCompanyTalentCollectDTO hrCompanyTalentCollect) + { + //未登录 + if(!SecurityUtils.isLogin()){ + return getDataTable(new ArrayList<>()); + } + //未绑定 + Company company=companyService.queryCodeCompany(SecurityUtils.getIdcard()); + if(company==null){ + return getDataTable(new ArrayList<>()); + } + startPage(); + hrCompanyTalentCollect.setCompanyId(company.getCompanyId()); + List list=hrCompanyTalentCollectService.selectHrCompanyTalentCollectList(hrCompanyTalentCollect); + return getDataTable(list); + } + + /** + * 获取单条详情 + */ + @PreAuthorize("@ss.hasPermi('cms:hrTalentCollect:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable Long id) + { + return AjaxResult.success(hrCompanyTalentCollectService.selectHrCompanyTalentCollectById(id)); + } + + /** + * 收藏求职者(加入人才库) + */ + @PreAuthorize("@ss.hasPermi('cms:hrTalentCollect:add')") + @Log(title = "收藏人才", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody HrCompanyTalentCollect hrCompanyTalentCollect) + { + if(!SecurityUtils.isLogin()){ + return error("未登录!"); + } + Company company=companyService.queryCodeCompany(SecurityUtils.getIdcard()); + if(company==null){ + return error("未查询到当前企业信息!"); + } + hrCompanyTalentCollect.setCompanyId(company.getCompanyId()); + int res = hrCompanyTalentCollectService.insertHrCompanyTalentCollect(hrCompanyTalentCollect); + if (res == 2) + { + return AjaxResult.error("该求职者已加入人才库,请勿重复收藏"); + } + return AjaxResult.success(); + } + + /** + * 修改收藏信息(意向等级、标签、备注等) + */ + @PreAuthorize("@ss.hasPermi('cms:hrTalentCollect:edit')") + @Log(title = "编辑人才收藏", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody HrCompanyTalentCollect hrCompanyTalentCollect) + { + if(!SecurityUtils.isLogin()){ + return error("未登录!"); + } + Company company=companyService.queryCodeCompany(SecurityUtils.getIdcard()); + if(company==null){ + return error("未查询到当前企业信息!"); + } + hrCompanyTalentCollect.setCompanyId(company.getCompanyId()); + return toAjax(hrCompanyTalentCollectService.updateHrCompanyTalentCollect(hrCompanyTalentCollect)); + } + + /** + * 移出人才库(逻辑删除) + */ + @PreAuthorize("@ss.hasPermi('cms:hrTalentCollect:remove')") + @Log(title = "移出人才库", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(hrCompanyTalentCollectService.deleteHrCompanyTalentCollectByIds(ids)); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrAgencyConsultMsg.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrAgencyConsultMsg.java index 9317937..a5584f9 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrAgencyConsultMsg.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrAgencyConsultMsg.java @@ -3,6 +3,7 @@ package com.ruoyi.cms.domain.msg; 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; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -16,6 +17,7 @@ import lombok.Data; */ @Data @ApiModel("人力中介咨询消息实体") +@TableName(value = "hr_agency_consult_msg") public class HrAgencyConsultMsg extends BaseEntity { @TableField(exist = false) diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollect.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollect.java new file mode 100644 index 0000000..f850539 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollect.java @@ -0,0 +1,53 @@ +package com.ruoyi.cms.domain.msg; + +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.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 企业人才库收藏记录表 hr_company_talent_collect + */ +@Data +@ApiModel("企业人才库收藏记录表") +@TableName(value = "hr_company_talent_collect") +public class HrCompanyTalentCollect extends BaseEntity +{ + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + /** 主键ID */ + @TableId(type = IdType.AUTO) + @ApiModelProperty("主键ID") + private Long id; + + /** 企业后台用户ID */ + @ApiModelProperty("企业后台用户ID") + private Long companyId; + + /** 求职者简历ID */ + @ApiModelProperty("用户ID") + private Long userId; + + /** 意向等级 1高 2中 3低 */ + @ApiModelProperty("意向等级 1=高意向,2=中等意向,3=低意向") + private String intentionLevel; + + /** 意向岗位ID 逗号分隔 */ + @Excel(name = "意向岗位ID") + @ApiModelProperty("意向岗位ID") + private String intendJobIds; + + /** 自定义标签 逗号分隔 */ + @ApiModelProperty("人才标签") + private String collectTags; + + /** 收藏来源 1简历搜索 2投递 3面试邀约 4手动新增 */ + @ApiModelProperty("收藏来源 1=简历搜索,2=投递记录,3=邀约面试,4=手动录入") + private String sourceType; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollectDTO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollectDTO.java new file mode 100644 index 0000000..6ef9fc1 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/msg/HrCompanyTalentCollectDTO.java @@ -0,0 +1,52 @@ +package com.ruoyi.cms.domain.msg; + +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.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.domain.entity.AppUser; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 企业人才库收藏记录表 hr_company_talent_collect + */ +@Data +public class HrCompanyTalentCollectDTO extends AppUser +{ + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + /** 主键ID */ + @TableId(type = IdType.AUTO) + @ApiModelProperty("主键ID") + private Long id; + + /** 企业后台用户ID */ + @ApiModelProperty("企业后台用户ID") + private Long companyId; + + /** 求职者简历ID */ + @ApiModelProperty("用户ID") + private Long userId; + + /** 意向等级 1高 2中 3低 */ + @ApiModelProperty("意向等级 1=高意向,2=中等意向,3=低意向") + private String intentionLevel; + + /** 意向岗位ID 逗号分隔 */ + @Excel(name = "意向岗位ID") + @ApiModelProperty("意向岗位ID") + private String intendJobIds; + + /** 自定义标签 逗号分隔 */ + @ApiModelProperty("人才标签") + private String collectTags; + + /** 收藏来源 1简历搜索 2投递 3面试邀约 4手动新增 */ + @ApiModelProperty("收藏来源 1=简历搜索,2=投递记录,3=邀约面试,4=手动录入") + private String sourceType; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/msg/HrCompanyTalentCollectMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/msg/HrCompanyTalentCollectMapper.java new file mode 100644 index 0000000..e33eefc --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/msg/HrCompanyTalentCollectMapper.java @@ -0,0 +1,23 @@ +package com.ruoyi.cms.mapper.msg; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollect; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollectDTO; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * 企业人才收藏Mapper + */ +public interface HrCompanyTalentCollectMapper extends BaseMapper +{ + /** + * 查询收藏列表(企业人才库分页) + */ + List selectHrCompanyTalentCollectList(HrCompanyTalentCollectDTO hrCompanyTalentCollect); + + /** + * 查询企业是否已收藏该简历(防重复) + */ + HrCompanyTalentCollect selectExistCollect(@Param("companyId") Long companyUserId, @Param("userId") Long userId); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/IHCompanyTalentCollectService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/IHCompanyTalentCollectService.java new file mode 100644 index 0000000..854d020 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/IHCompanyTalentCollectService.java @@ -0,0 +1,39 @@ +package com.ruoyi.cms.service.msg; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollect; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollectDTO; + +import java.util.List; + +/** + * 企业人才收藏Service接口 + */ +public interface IHCompanyTalentCollectService extends IService +{ + /** + * 查询人才收藏列表(分页) + */ + List selectHrCompanyTalentCollectList(HrCompanyTalentCollectDTO hrCompanyTalentCollect); + + /** + * 根据ID获取详情 + */ + HrCompanyTalentCollectDTO selectHrCompanyTalentCollectById(Long id); + + /** + * 新增收藏(收藏求职者进人才库,校验重复) + * @return 0成功 1已收藏 + */ + int insertHrCompanyTalentCollect(HrCompanyTalentCollect hrCompanyTalentCollect); + + /** + * 修改收藏信息 + */ + int updateHrCompanyTalentCollect(HrCompanyTalentCollect hrCompanyTalentCollect); + + /** + * 批量移出人才库 + */ + int deleteHrCompanyTalentCollectByIds(Long[] ids); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/impl/HrCompanyTalentCollectServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/impl/HrCompanyTalentCollectServiceImpl.java new file mode 100644 index 0000000..24f37ef --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/msg/impl/HrCompanyTalentCollectServiceImpl.java @@ -0,0 +1,91 @@ +package com.ruoyi.cms.service.msg.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollect; +import com.ruoyi.cms.domain.msg.HrCompanyTalentCollectDTO; +import com.ruoyi.cms.mapper.AppSkillMapper; +import com.ruoyi.cms.mapper.AppUserMapper; +import com.ruoyi.cms.mapper.UserWorkExperiencesMapper; +import com.ruoyi.cms.mapper.msg.HrCompanyTalentCollectMapper; +import com.ruoyi.cms.service.msg.IHCompanyTalentCollectService; +import com.ruoyi.common.core.domain.entity.AppSkill; +import com.ruoyi.common.core.domain.entity.AppUser; +import com.ruoyi.common.core.domain.entity.UserWorkExperiences; +import com.ruoyi.common.utils.bean.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; + +/** + * 企业人才收藏Service实现 + */ +@Service +public class HrCompanyTalentCollectServiceImpl extends ServiceImpl implements IHCompanyTalentCollectService +{ + @Autowired + private HrCompanyTalentCollectMapper hrCompanyTalentCollectMapper; + @Autowired + private AppSkillMapper skillMapper; + @Autowired + private UserWorkExperiencesMapper userWorkExperiencesMapper; + @Autowired + private AppUserMapper appUserMapper; + + @Override + public List selectHrCompanyTalentCollectList(HrCompanyTalentCollectDTO hrCompanyTalentCollect) + { + return hrCompanyTalentCollectMapper.selectHrCompanyTalentCollectList(hrCompanyTalentCollect); + } + + @Override + public HrCompanyTalentCollectDTO selectHrCompanyTalentCollectById(Long id) + { + HrCompanyTalentCollect talentCollect=hrCompanyTalentCollectMapper.selectById(id); + if(talentCollect==null){ + return null; + } + HrCompanyTalentCollectDTO dto=new HrCompanyTalentCollectDTO(); + AppUser appUser=appUserMapper.selectById(talentCollect.getUserId()); + BeanUtils.copyProperties(talentCollect, dto); + if(appUser!=null){ + BeanUtils.copyProperties(appUser, dto); + } + if(talentCollect.getUserId()!=null){ + //获取技能信息 + AppSkill appSkill=new AppSkill(); + appSkill.setUserId(talentCollect.getUserId()); + List skills=skillMapper.getList(appSkill); + UserWorkExperiences userWorkExperiences=new UserWorkExperiences(); + userWorkExperiences.setUserId(talentCollect.getUserId()); + List userWorkExperiencesList=userWorkExperiencesMapper.getWorkExperiencesList(userWorkExperiences); + dto.setAppSkillsList(skills); + dto.setExperiencesList(userWorkExperiencesList); + } + return dto; + } + + @Override + public int insertHrCompanyTalentCollect(HrCompanyTalentCollect collect) + { + // 校验是否已收藏 + HrCompanyTalentCollect exist = hrCompanyTalentCollectMapper.selectExistCollect(collect.getCompanyId(), collect.getUserId()); + if (exist != null) + { + return 2; + } + return hrCompanyTalentCollectMapper.insert(collect); + } + + @Override + public int updateHrCompanyTalentCollect(HrCompanyTalentCollect collect) + { + return hrCompanyTalentCollectMapper.updateById(collect); + } + + @Override + public int deleteHrCompanyTalentCollectByIds(Long[] ids) + { + return hrCompanyTalentCollectMapper.deleteBatchIds(Arrays.asList(ids)); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml index 5d1f809..249d7a4 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml @@ -180,7 +180,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" then t.update_time else null end reject_time,t.is_imp_company,t.imp_company_type,t.enterprise_type,t.legal_person,t.legal_id_card,t.legal_phone,t.is_hrs, su.lc_userid from company t left join sys_user su on t.code=su.id_card - t.del_flag = '0' + t.del_flag = '0' and su.lc_userid is not null and t.name like concat('%', cast(#{name, jdbcType=VARCHAR} as varchar), '%') and t.scale = #{scale} and t.nature = #{nature} diff --git a/ruoyi-bussiness/src/main/resources/mapper/msg/HrCompanyTalentCollectMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/msg/HrCompanyTalentCollectMapper.xml new file mode 100644 index 0000000..e5f378b --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/msg/HrCompanyTalentCollectMapper.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, company_id, user_id, intention_level, intend_job_ids, collect_tags, remark, + source_type, del_flag, create_by, create_time, update_by, update_time + from hr_company_talent_collect + + + + select htc.id, htc.company_id, htc.user_id, htc.intention_level, htc.intend_job_ids, htc.collect_tags, htc.remark, + htc.source_type, htc.del_flag, htc.create_by, htc.create_time, htc.update_by, htc.update_time, + au.name, au.age, au.sex, au.birth_date, au.education, au.political_affiliation, au.phone, au.avatar, au.salary_min, + au.salary_max, au.area, au.status, au.login_ip, au.login_date,au.job_title_id,au.is_recommend,au.id_card,au.work_experience, + au.is_company_user,au.lc_userid,au.email + from hr_company_talent_collect htc + left join app_user au on htc.user_id=au.user_id + + + + + + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java index 64a39a7..e0843ff 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java @@ -218,4 +218,19 @@ public class SecurityUtils throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); } } + + /** + * 获取企业社会信用代码 + * @return + */ + public static String getIdcard(){ + try + { + return getLoginUser().getUser().getIdCard(); + } + catch (Exception e) + { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + } }