招聘会

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

@@ -4,11 +4,13 @@ package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.service.IFairCollectionService;
import com.ruoyi.cms.service.IJobFairService;
import com.ruoyi.cms.service.rc.IJobFairSignUpService;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
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.web.bind.annotation.*;
@@ -30,6 +32,8 @@ public class AppFairController extends BaseController
private IJobFairService jobFairService;
@Autowired
private IFairCollectionService fairCollectionService;
@Autowired
private IJobFairSignUpService jobFairSignUpService;
/**
* 招聘会列表
*/
@@ -71,4 +75,26 @@ public class AppFairController extends BaseController
{
return toAjax(fairCollectionService.cancel(fairId));
}
/**
* 报名招聘会
*/
@BussinessLog(title = "报名招聘会")
@ApiOperation("报名招聘会")
@PostMapping("/signUp/{fairId}")
public AjaxResult signUp(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(jobFairSignUpService.signUp(fairId));
}
/**
* 取消报名招聘会
*/
@BussinessLog(title = "取消报名招聘会")
@ApiOperation("取消报名招聘会")
@DeleteMapping("/signUp/{fairId}")
public AjaxResult cancelSignUp(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(jobFairSignUpService.cancelSignUp(fairId));
}
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.rc.PublicJobFairCompanyVO;
import com.ruoyi.cms.domain.rc.PublicJobFairDetail;
import com.ruoyi.cms.domain.rc.PublicJobFairQuery;
import com.ruoyi.cms.domain.rc.PublicJobFairResponse;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公共招聘会Controller石河子
*/
@Slf4j
@RestController
@RequestMapping("/app/jobfair/public/jobfair")
@Api(tags = "公共接口:招聘会(石河子)")
public class PublicJobFairController extends BaseController {
@Autowired
private IPublicJobFairService publicJobFairService;
/**
* 分页查询招聘会列表
*/
@BussinessLog(title = "公共招聘会列表")
@ApiOperation("分页查询招聘会列表")
@GetMapping("/page")
public PublicJobFairResponse page(PublicJobFairQuery query) {
return publicJobFairService.getJobFairPage(query);
}
/**
* 获取招聘会详情
*/
@BussinessLog(title = "公共招聘会详情")
@ApiOperation("获取招聘会详情")
@GetMapping("/detail")
public AjaxResult detail(@ApiParam("招聘会ID") @RequestParam String jobFairId) {
PublicJobFairDetail detail = publicJobFairService.getJobFairDetail(jobFairId);
return success(detail);
}
/**
* 获取招聘会企业及岗位列表
*/
@BussinessLog(title = "招聘会企业及岗位列表")
@ApiOperation("获取招聘会企业及岗位列表")
@GetMapping("/enterprises-with-jobs-by-job-fair-id")
public AjaxResult enterprisesWithJobs(@ApiParam("招聘会ID") @RequestParam String jobFairId) {
List<PublicJobFairCompanyVO> list = publicJobFairService.getEnterprisesWithJobs(jobFairId);
return success(list);
}
}

View File

@@ -0,0 +1,172 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.rc.*;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
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.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
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.*;
import java.util.List;
/**
* 公共招聘会管理ControllerCMS后台
*/
@RestController
@RequestMapping("/cms/publicJobFair")
@Api(tags = "后台:公共招聘会管理")
public class CmsPublicJobFairController extends BaseController {
@Autowired
private IPublicJobFairService publicJobFairService;
/**
* 查询招聘会列表
*/
@ApiOperation("查询招聘会列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:list')")
@GetMapping("/list")
public TableDataInfo list(PublicJobFairQuery query) {
startPage();
List<PublicJobFair> list = publicJobFairService.selectList(query);
return getDataTable(list);
}
/**
* 获取招聘会详情
*/
@ApiOperation("获取招聘会详情")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/{jobFairId}")
public AjaxResult getInfo(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
return success(publicJobFairService.selectById(jobFairId));
}
/**
* 新增招聘会
*/
@ApiOperation("新增招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:add')")
@Log(title = "公共招聘会", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody PublicJobFair publicJobFair) {
return toAjax(publicJobFairService.insert(publicJobFair));
}
/**
* 修改招聘会
*/
@ApiOperation("修改招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "公共招聘会", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody PublicJobFair publicJobFair) {
return toAjax(publicJobFairService.update(publicJobFair));
}
/**
* 删除招聘会
*/
@ApiOperation("删除招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:remove')")
@Log(title = "公共招聘会", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobFairIds}")
public AjaxResult remove(@ApiParam("招聘会ID数组") @PathVariable String[] jobFairIds) {
return toAjax(publicJobFairService.deleteByIds(jobFairIds));
}
/**
* 添加企业到招聘会
*/
@ApiOperation("添加企业到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会添加企业", businessType = BusinessType.INSERT)
@PostMapping("/company")
public AjaxResult addCompany(@RequestBody PublicJobFairCompany company) {
return toAjax(publicJobFairService.addCompany(company));
}
/**
* 批量添加企业到招聘会
*/
@ApiOperation("批量添加企业到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会批量添加企业", businessType = BusinessType.INSERT)
@PostMapping("/company/batch")
public AjaxResult addCompanyBatch(@RequestBody List<PublicJobFairCompany> companies) {
return toAjax(publicJobFairService.addCompanyBatch(companies));
}
/**
* 移除招聘会企业
*/
@ApiOperation("移除招聘会企业")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "移除招聘会企业", businessType = BusinessType.DELETE)
@DeleteMapping("/company/{id}")
public AjaxResult removeCompany(@ApiParam("关联ID") @PathVariable String id) {
return toAjax(publicJobFairService.removeCompany(id));
}
/**
* 添加岗位到招聘会
*/
@ApiOperation("添加岗位到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会添加岗位", businessType = BusinessType.INSERT)
@PostMapping("/job")
public AjaxResult addJob(@RequestBody PublicJobFairJob job) {
return toAjax(publicJobFairService.addJob(job));
}
/**
* 批量添加岗位到招聘会
*/
@ApiOperation("批量添加岗位到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会批量添加岗位", businessType = BusinessType.INSERT)
@PostMapping("/job/batch")
public AjaxResult addJobBatch(@RequestBody List<PublicJobFairJob> jobs) {
return toAjax(publicJobFairService.addJobBatch(jobs));
}
/**
* 移除招聘会岗位
*/
@ApiOperation("移除招聘会岗位")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "移除招聘会岗位", businessType = BusinessType.DELETE)
@DeleteMapping("/job/{id}")
public AjaxResult removeJob(@ApiParam("关联ID") @PathVariable String id) {
return toAjax(publicJobFairService.removeJob(id));
}
/**
* 查询招聘会报名列表
*/
@ApiOperation("查询招聘会报名列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/signups/{jobFairId}")
public TableDataInfo getSignUpList(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
startPage();
List<JobFairSignUpVO> list = publicJobFairService.selectSignUpList(jobFairId);
return getDataTable(list);
}
/**
* 查询招聘会关联的企业列表
*/
@ApiOperation("查询招聘会关联的企业列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/companies/{jobFairId}")
public AjaxResult getCompanyList(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
return success(publicJobFairService.getEnterprisesWithJobs(jobFairId));
}
}

View File

@@ -0,0 +1,38 @@
package com.ruoyi.cms.domain.rc;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 招聘会报名对象
*/
@Data
@ApiModel("招聘会报名")
@TableName("rc_job_fair_sign_up")
public class JobFairSignUp extends BaseEntity {
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("招聘会ID")
private Long jobFairId;
@ApiModelProperty("用户ID")
private Long userId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名时间")
private Date signUpTime;
@ApiModelProperty("状态 0正常 1已取消")
private String status;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会报名信息VO包含用户信息
*/
@Data
@ApiModel("招聘会报名信息")
public class JobFairSignUpVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("报名ID")
private Long id;
@ApiModelProperty("招聘会ID")
private Long jobFairId;
@ApiModelProperty("用户ID")
private Long userId;
@ApiModelProperty("用户名")
private String userName;
@ApiModelProperty("真实姓名")
private String realName;
@ApiModelProperty("手机号")
private String phone;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名时间")
private Date signUpTime;
@ApiModelProperty("状态 0正常 1已取消")
private String status;
}

View File

@@ -0,0 +1,162 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 公共招聘会信息对象(对接石河子/喀什地区)
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会信息")
public class PublicJobFair implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会地址")
private String jobFairAddress;
@ApiModelProperty("招聘会类型")
private String jobFairType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会开始时间")
private Date jobFairStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会结束时间")
private Date jobFairEndTime;
@ApiModelProperty("主办单位")
private String jobFairHostUnit;
@ApiModelProperty("协办单位")
private String jobFairHelpUnit;
@ApiModelProperty("承办单位")
private String jobFairOrganizeUnit;
@ApiModelProperty("招聘会简介")
private String jobFairIntroduction;
@ApiModelProperty("备注")
private String jobFairRemark;
@ApiModelProperty("联系电话")
private String jobFairPhone;
@ApiModelProperty("招聘会图片")
private String jobFairImage;
@ApiModelProperty("招聘会区域图片")
private String jobFairAreaImage;
@ApiModelProperty("创建人")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新人")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("招聘会场馆ID")
private String jobFairVenueId;
@ApiModelProperty("场馆区域展位信息")
private String jobFairVenueAreaAndBoothInfo;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名开始时间")
private Date jobFairSignUpStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名结束时间")
private Date jobFairSignUpEndTime;
@ApiModelProperty("是否报名")
private String isSignUp;
@ApiModelProperty("企业数量")
private String enterpriseNum;
@ApiModelProperty("区域展位信息")
private String jobFairAreaAndBoothInfo;
@ApiModelProperty("人员ID")
private String personId;
@ApiModelProperty("企业ID")
private String enterpriseId;
@ApiModelProperty("投递数量")
private String deliverNum;
@ApiModelProperty("企业审核状态")
private String enterpriseReviewStatus;
@ApiModelProperty("企业审核意见")
private String enterpriseReviewComments;
@ApiModelProperty("简历数量")
private String resumeCount;
@ApiModelProperty("展位数量")
private String boothNum;
@ApiModelProperty("区域展位名称")
private String jobFairAreaBoothName;
@ApiModelProperty("我的岗位数量")
private String myJobNum;
@ApiModelProperty("省份")
private String divisionProvince;
@ApiModelProperty("城市")
private String divisionCity;
@ApiModelProperty("区县")
private String divisionCounty;
@ApiModelProperty("区域名称")
private String divisionName;
@ApiModelProperty("校验码")
private String checkCode;
@ApiModelProperty("部门编码(末级)")
private String deptCodeLast;
@ApiModelProperty("部门编码(全部)")
private String deptCodeAll;
@ApiModelProperty("招聘会类别")
private String jobFairCategory;
@ApiModelProperty("纬度")
private java.math.BigDecimal latitude;
@ApiModelProperty("经度")
private java.math.BigDecimal longitude;
@ApiModelProperty("参加的企业及岗位列表")
private java.util.List<PublicJobFairCompanyVO> companyList;
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会-企业关联对象
*/
@Data
@ApiModel("招聘会-企业关联")
public class PublicJobFairCompany implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("创建者")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新者")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标志")
private String delFlag;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.cms.domain.rc;
import com.ruoyi.cms.domain.Job;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 招聘会企业VO
*/
@Data
@ApiModel("招聘会企业VO")
public class PublicJobFairCompanyVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("企业记录ID")
private String id;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("企业名称")
private String companyName;
@ApiModelProperty("企业规模")
private String scale;
@ApiModelProperty("所属行业")
private String industry;
@ApiModelProperty("企业类型")
private String companyType;
@ApiModelProperty("在招职位列表")
private List<Job> jobInfoList;
}

View File

@@ -0,0 +1,52 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公共招聘会详情
*/
@Data
@ApiModel("公共招聘会详情")
public class PublicJobFairDetail implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会地址")
private String jobFairAddress;
@ApiModelProperty("招聘会简介")
private String jobFairIntroduction;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会开始时间")
private Date jobFairStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会结束时间")
private Date jobFairEndTime;
@ApiModelProperty("招聘会类型 1-线上 2-线下")
private Integer jobFairType;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("是否已报名 0-未报名 1-已报名")
private Integer isSignUp;
}

View File

@@ -0,0 +1,48 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会-岗位关联对象
*/
@Data
@ApiModel("招聘会-岗位关联")
public class PublicJobFairJob implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("岗位ID")
private Long jobId;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("创建者")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新者")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标志")
private String delFlag;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.cms.domain.rc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 公共招聘会查询参数
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会查询参数")
public class PublicJobFairQuery implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("页码")
private Integer pageNum = 1;
@ApiModelProperty("每页数量")
private Integer pageSize = 10;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会类型")
private String jobFairType;
@ApiModelProperty("招聘会举办时间格式yyyy-MM-dd")
private String zphjbsj;
}

View File

@@ -0,0 +1,88 @@
package com.ruoyi.cms.domain.rc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 公共招聘会响应对象
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会响应")
public class PublicJobFairResponse implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("状态码")
private Integer code;
@ApiModelProperty("消息")
private String msg;
@ApiModelProperty("数据")
private PageData data;
@Data
public static class PageData implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("总数")
private Long total;
@ApiModelProperty("列表")
private List<PublicJobFair> list;
@ApiModelProperty("当前页码")
private Integer pageNum;
@ApiModelProperty("每页数量")
private Integer pageSize;
@ApiModelProperty("当前页数量")
private Integer size;
@ApiModelProperty("起始行")
private Integer startRow;
@ApiModelProperty("结束行")
private Integer endRow;
@ApiModelProperty("总页数")
private Integer pages;
@ApiModelProperty("上一页")
private Integer prePage;
@ApiModelProperty("下一页")
private Integer nextPage;
@ApiModelProperty("是否第一页")
private Boolean isFirstPage;
@ApiModelProperty("是否最后一页")
private Boolean isLastPage;
@ApiModelProperty("是否有上一页")
private Boolean hasPreviousPage;
@ApiModelProperty("是否有下一页")
private Boolean hasNextPage;
@ApiModelProperty("导航页数")
private Integer navigatePages;
@ApiModelProperty("导航页码")
private List<Integer> navigatepageNums;
@ApiModelProperty("导航第一页")
private Integer navigateFirstPage;
@ApiModelProperty("导航最后一页")
private Integer navigateLastPage;
}
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cms.mapper.rc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.rc.JobFairSignUp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 招聘会报名Mapper接口
*/
@Mapper
public interface JobFairSignUpMapper extends BaseMapper<JobFairSignUp> {
/**
* 检查是否已报名
*/
JobFairSignUp checkSignUp(@Param("jobFairId") Long jobFairId, @Param("userId") Long userId);
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.cms.mapper.rc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.rc.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 公共招聘会Mapper接口
*/
public interface PublicJobFairMapper extends BaseMapper<PublicJobFair> {
/**
* 分页查询招聘会列表
*/
List<PublicJobFair> selectPublicJobFairList(@Param("query") PublicJobFairQuery query);
/**
* 查询招聘会详情
*/
PublicJobFairDetail selectPublicJobFairDetailById(@Param("jobFairId") String jobFairId);
/**
* 查询招聘会关联的企业列表
*/
List<PublicJobFairCompanyVO> selectCompanyListByJobFairId(@Param("jobFairId") String jobFairId);
/**
* 查询招聘会关联的岗位列表
*/
List<Job> selectJobListByJobFairIdAndCompanyId(@Param("jobFairId") String jobFairId, @Param("companyId") Long companyId);
/**
* 检查用户是否已报名
*/
Integer checkUserSignUp(@Param("jobFairId") String jobFairId, @Param("personId") Long personId);
// ========== CMS后台管理接口 ==========
/**
* 根据ID查询招聘会
*/
PublicJobFair selectPublicJobFairById(@Param("jobFairId") String jobFairId);
/**
* 新增招聘会
*/
int insertPublicJobFair(PublicJobFair publicJobFair);
/**
* 修改招聘会
*/
int updatePublicJobFair(PublicJobFair publicJobFair);
/**
* 批量删除招聘会
*/
int deletePublicJobFairByIds(@Param("jobFairIds") String[] jobFairIds);
/**
* 添加企业到招聘会
*/
int insertJobFairCompany(PublicJobFairCompany company);
/**
* 批量添加企业到招聘会
*/
int insertJobFairCompanyBatch(@Param("list") List<PublicJobFairCompany> companies);
/**
* 删除招聘会企业关联
*/
int deleteJobFairCompanyById(@Param("id") String id);
/**
* 添加岗位到招聘会
*/
int insertJobFairJob(PublicJobFairJob job);
/**
* 批量添加岗位到招聘会
*/
int insertJobFairJobBatch(@Param("list") List<PublicJobFairJob> jobs);
/**
* 删除招聘会岗位关联
*/
int deleteJobFairJobById(@Param("id") String id);
/**
* 查询招聘会报名列表(包含用户信息)
*/
List<JobFairSignUpVO> selectSignUpListByJobFairId(@Param("jobFairId") String jobFairId);
}

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);
}
}