招聘会

This commit is contained in:
2026-01-11 02:15:16 +08:00
parent e12d8157a7
commit 55eba88734
25 changed files with 2160 additions and 1 deletions

View File

@@ -67,7 +67,7 @@ public class ESJobSearchImpl implements IESJobSearchService
/**
* 项目启动时,初始化索引及数据
*/
@PostConstruct
// @PostConstruct
public void init()
{
boolean isLockAcquired = false;

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cms.service.rc;
/**
* 招聘会报名Service接口
*/
public interface IJobFairSignUpService {
/**
* 报名招聘会
*/
int signUp(Long jobFairId);
/**
* 取消报名
*/
int cancelSignUp(Long jobFairId);
}

View File

@@ -0,0 +1,88 @@
package com.ruoyi.cms.service.rc;
import com.ruoyi.cms.domain.rc.*;
import java.util.List;
/**
* 公共招聘会Service接口
*/
public interface IPublicJobFairService {
/**
* 分页查询招聘会列表APP端
*/
PublicJobFairResponse getJobFairPage(PublicJobFairQuery query);
/**
* 获取招聘会详情APP端
*/
PublicJobFairDetail getJobFairDetail(String jobFairId);
/**
* 获取招聘会企业及岗位列表
*/
List<PublicJobFairCompanyVO> getEnterprisesWithJobs(String jobFairId);
// ========== CMS后台管理接口 ==========
/**
* 查询招聘会列表CMS
*/
List<PublicJobFair> selectList(PublicJobFairQuery query);
/**
* 根据ID查询招聘会
*/
PublicJobFair selectById(String jobFairId);
/**
* 新增招聘会
*/
int insert(PublicJobFair publicJobFair);
/**
* 修改招聘会
*/
int update(PublicJobFair publicJobFair);
/**
* 批量删除招聘会
*/
int deleteByIds(String[] jobFairIds);
/**
* 添加企业到招聘会
*/
int addCompany(PublicJobFairCompany company);
/**
* 批量添加企业到招聘会
*/
int addCompanyBatch(List<PublicJobFairCompany> companies);
/**
* 移除招聘会企业
*/
int removeCompany(String id);
/**
* 添加岗位到招聘会
*/
int addJob(PublicJobFairJob job);
/**
* 批量添加岗位到招聘会
*/
int addJobBatch(List<PublicJobFairJob> jobs);
/**
* 移除招聘会岗位
*/
int removeJob(String id);
/**
* 查询招聘会报名列表
*/
List<JobFairSignUpVO> selectSignUpList(String jobFairId);
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.service.rc.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cms.domain.rc.JobFairSignUp;
import com.ruoyi.cms.mapper.rc.JobFairSignUpMapper;
import com.ruoyi.cms.service.rc.IJobFairSignUpService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 招聘会报名Service业务层处理
*/
@Service
public class JobFairSignUpServiceImpl extends ServiceImpl<JobFairSignUpMapper, JobFairSignUp> implements IJobFairSignUpService {
@Autowired
private JobFairSignUpMapper jobFairSignUpMapper;
@Override
public int signUp(Long jobFairId) {
Long userId = SiteSecurityUtils.getUserId();
// 检查是否已有报名记录
JobFairSignUp existSignUp = jobFairSignUpMapper.checkSignUp(jobFairId, userId);
if (existSignUp != null) {
// 已有记录
if ("0".equals(existSignUp.getStatus())) {
throw new ServiceException("您已报名该招聘会,请勿重复报名");
}
// 已取消的记录,重新激活
existSignUp.setStatus("0");
existSignUp.setSignUpTime(new Date());
return jobFairSignUpMapper.updateById(existSignUp);
}
// 新增报名记录
JobFairSignUp signUp = new JobFairSignUp();
signUp.setJobFairId(jobFairId);
signUp.setUserId(userId);
signUp.setSignUpTime(new Date());
signUp.setStatus("0");
return jobFairSignUpMapper.insert(signUp);
}
@Override
public int cancelSignUp(Long jobFairId) {
Long userId = SiteSecurityUtils.getUserId();
JobFairSignUp existSignUp = jobFairSignUpMapper.checkSignUp(jobFairId, userId);
if (existSignUp == null || "1".equals(existSignUp.getStatus())) {
throw new ServiceException("您未报名该招聘会");
}
existSignUp.setStatus("1"); // 已取消
return jobFairSignUpMapper.updateById(existSignUp);
}
}

View File

@@ -0,0 +1,207 @@
package com.ruoyi.cms.service.rc.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.rc.*;
import com.ruoyi.cms.mapper.rc.PublicJobFairMapper;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 公共招聘会Service实现
*/
@Slf4j
@Service
public class PublicJobFairServiceImpl implements IPublicJobFairService {
@Autowired
private PublicJobFairMapper publicJobFairMapper;
@Override
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
PageInfo<PublicJobFair> pageInfo = new PageInfo<>(list);
PublicJobFairResponse response = new PublicJobFairResponse();
response.setCode(200);
PublicJobFairResponse.PageData pageData = new PublicJobFairResponse.PageData();
pageData.setTotal(pageInfo.getTotal());
pageData.setList(list);
pageData.setPageNum(pageInfo.getPageNum());
pageData.setPageSize(pageInfo.getPageSize());
pageData.setSize(pageInfo.getSize());
pageData.setStartRow((int) pageInfo.getStartRow());
pageData.setEndRow((int) pageInfo.getEndRow());
pageData.setPages(pageInfo.getPages());
pageData.setPrePage(pageInfo.getPrePage());
pageData.setNextPage(pageInfo.getNextPage());
pageData.setIsFirstPage(pageInfo.isIsFirstPage());
pageData.setIsLastPage(pageInfo.isIsLastPage());
pageData.setHasPreviousPage(pageInfo.isHasPreviousPage());
pageData.setHasNextPage(pageInfo.isHasNextPage());
pageData.setNavigatePages(pageInfo.getNavigatePages());
pageData.setNavigatepageNums(Arrays.stream(pageInfo.getNavigatepageNums()).boxed().collect(Collectors.toList()));
pageData.setNavigateFirstPage(pageInfo.getNavigateFirstPage());
pageData.setNavigateLastPage(pageInfo.getNavigateLastPage());
response.setData(pageData);
return response;
}
@Override
public PublicJobFairDetail getJobFairDetail(String jobFairId) {
PublicJobFairDetail detail = publicJobFairMapper.selectPublicJobFairDetailById(jobFairId);
if (detail == null) {
return null;
}
// 获取当前登录用户ID
Long userId = null;
try {
if (SiteSecurityUtils.isLogin()) {
userId = SiteSecurityUtils.getUserId();
}
} catch (Exception e) {
// 未登录,忽略
}
// 检查用户是否已报名
if (userId != null) {
Integer count = publicJobFairMapper.checkUserSignUp(jobFairId, userId);
detail.setIsSignUp(count != null && count > 0 ? 1 : 0);
} else {
detail.setIsSignUp(0);
}
return detail;
}
@Override
public List<PublicJobFairCompanyVO> getEnterprisesWithJobs(String jobFairId) {
List<PublicJobFairCompanyVO> companyList = publicJobFairMapper.selectCompanyListByJobFairId(jobFairId);
if (companyList != null && !companyList.isEmpty()) {
for (PublicJobFairCompanyVO company : companyList) {
List<Job> jobList = publicJobFairMapper.selectJobListByJobFairIdAndCompanyId(jobFairId, company.getCompanyId());
company.setJobInfoList(jobList);
}
}
return companyList;
}
// ========== CMS后台管理接口实现 ==========
@Override
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
return publicJobFairMapper.selectPublicJobFairList(query);
}
@Override
public PublicJobFair selectById(String jobFairId) {
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
if (jobFair != null) {
// 查询关联的企业及岗位
List<PublicJobFairCompanyVO> companyList = getEnterprisesWithJobs(jobFairId);
jobFair.setCompanyList(companyList);
}
return jobFair;
}
@Override
@Transactional
public int insert(PublicJobFair publicJobFair) {
publicJobFair.setJobFairId(IdUtils.fastSimpleUUID());
publicJobFair.setCreateTime(new Date());
publicJobFair.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertPublicJobFair(publicJobFair);
}
@Override
@Transactional
public int update(PublicJobFair publicJobFair) {
publicJobFair.setUpdateTime(new Date());
publicJobFair.setUpdateBy(SecurityUtils.getUsername());
return publicJobFairMapper.updatePublicJobFair(publicJobFair);
}
@Override
@Transactional
public int deleteByIds(String[] jobFairIds) {
return publicJobFairMapper.deletePublicJobFairByIds(jobFairIds);
}
@Override
@Transactional
public int addCompany(PublicJobFairCompany company) {
company.setId(IdUtils.fastSimpleUUID());
company.setCreateTime(new Date());
company.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertJobFairCompany(company);
}
@Override
@Transactional
public int addCompanyBatch(List<PublicJobFairCompany> companies) {
String username = SecurityUtils.getUsername();
Date now = new Date();
for (PublicJobFairCompany company : companies) {
company.setId(IdUtils.fastSimpleUUID());
company.setCreateTime(now);
company.setCreateBy(username);
}
return publicJobFairMapper.insertJobFairCompanyBatch(companies);
}
@Override
@Transactional
public int removeCompany(String id) {
return publicJobFairMapper.deleteJobFairCompanyById(id);
}
@Override
@Transactional
public int addJob(PublicJobFairJob job) {
job.setId(IdUtils.fastSimpleUUID());
job.setCreateTime(new Date());
job.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertJobFairJob(job);
}
@Override
@Transactional
public int addJobBatch(List<PublicJobFairJob> jobs) {
String username = SecurityUtils.getUsername();
Date now = new Date();
for (PublicJobFairJob job : jobs) {
job.setId(IdUtils.fastSimpleUUID());
job.setCreateTime(now);
job.setCreateBy(username);
}
return publicJobFairMapper.insertJobFairJobBatch(jobs);
}
@Override
@Transactional
public int removeJob(String id) {
return publicJobFairMapper.deleteJobFairJobById(id);
}
@Override
public List<JobFairSignUpVO> selectSignUpList(String jobFairId) {
return publicJobFairMapper.selectSignUpListByJobFairId(jobFairId);
}
}