Pārlūkot izejas kodu

1、增加火苗儿相关接口

rayson 8 mēneši atpakaļ
vecāks
revīzija
1982371c35
29 mainītis faili ar 648 papildinājumiem un 27 dzēšanām
  1. 6 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/fair/AppJobFairController.java
  3. 18 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobAdvertisedRespVO.java
  4. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobController.java
  5. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobPageReqVO.java
  6. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobRespVO.java
  7. 57 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitJobFairController.java
  8. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/AppRecruitJobAdvertisedController.java
  9. 33 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobExtendRespVO.java
  10. 29 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobExtendSaveReqVO.java
  11. 24 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/joinJobFairReqVO.java
  12. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedExtendRespVO.java
  13. 7 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java
  14. 6 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobFairDO.java
  15. 3 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobFairDetailDO.java
  16. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobFairDetailMapper.java
  17. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/major/MajorMapper.java
  18. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java
  19. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobService.java
  20. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobServiceImpl.java
  21. 11 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  22. 28 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  23. 18 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java
  24. 99 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  25. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/fair/JobFairService.java
  26. 27 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/fair/JobFairServiceImpl.java
  27. 6 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  28. 6 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties
  29. 79 0
      menduner/menduner-system-biz/src/main/resources/mapper/job/JobFairDetailMapper.xml

+ 6 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -578,5 +578,11 @@ public interface ErrorCodeConstants {
 
     // ========== 招聘会 1_100_056_000 ==========
     ErrorCode JOB_FAIR_NOT_EXISTS = new ErrorCode(1_100_056_001, "招聘会不存在");
+    ErrorCode JOB_FAIR_JOB_ID_NOT_NULL = new ErrorCode(1_100_056_002, "招聘职位id不能为空");
+    ErrorCode JOB_FAIR_JOB_NAME_NOT_NULL = new ErrorCode(1_100_056_003, "招聘会名称不能为空");
+    ErrorCode JOB_FAIR_TIME_OVER = new ErrorCode(1_100_056_004, "招聘会时间已过,暂停招聘");
+
+    // ========== 招聘职位扩展 1_100_057_000 ==========
+    ErrorCode JOB_EXTEND_JOB_ID_NOT_NULL = new ErrorCode(1_100_057_001, "招聘职位id不能为空");
 
 }

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/fair/AppJobFairController.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.fair;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.base.job.fair.JobFairRespVO;
+import com.citu.module.menduner.system.service.job.fair.JobFairService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职端 - 招聘会")
+@RestController
+@RequestMapping("/menduner/system/job-fair")
+@Validated
+public class AppJobFairController {
+
+    @Resource
+    private JobFairService jobFairService;
+
+    @PreAuthenticated
+    @GetMapping("/list")
+    @Operation(summary = "获得招聘会列表")
+    public CommonResult<List<JobFairRespVO>> list() {
+        return success(BeanUtils.toBean(jobFairService.list(), JobFairRespVO.class));
+    }
+
+
+}

+ 18 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobAdvertisedRespVO.java

@@ -0,0 +1,18 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.flame;
+
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner -  火苗儿职位信息 Response VO")
+@Data
+public class AppFlameJobAdvertisedRespVO extends JobAdvertisedSimpleRespVO {
+
+
+    @Schema(description = "区域名称", example = "java")
+    private String areaName;
+
+    @Schema(description = "职位类型名称", example = "java")
+    private String positionName;
+
+}

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobController.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.flame;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.jobhunt.industry.vo.AppIndustryListReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.industry.vo.AppIndustrySimpleRespVO;
+import com.citu.module.menduner.system.service.job.JobIntegrationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职端 - 火苗儿")
+@RestController
+@RequestMapping("/menduner/system/flame-job")
+@Validated
+@Slf4j
+public class AppFlameJobController {
+
+    @Resource
+    private JobIntegrationService jobIntegrationService;
+
+    @GetMapping("/page")
+    @Operation(summary = "分页搜索职位")
+    public CommonResult<PageResult<AppFlameJobRespVO>> getFlameJobPage(@Valid AppFlameJobPageReqVO reqVO) {
+        return success(jobIntegrationService.getFlameJobPage(reqVO));
+    }
+}

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobPageReqVO.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.flame;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Schema(description = "menduner -  火苗儿职位搜索 Request VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppFlameJobPageReqVO extends PageParam {
+
+    @Schema(description = "搜索内容", example = "java")
+    private String content;
+
+    @Schema(description = "招聘会id", example = "1")
+    private Long jobFairId;
+
+    // ========== 职位条件 =========
+
+    @Schema(description = "职位id", example = "1")
+    private Long positionId;
+
+    @Schema(description = "地区id", example = "1")
+    private Long areaId;
+
+    @Schema(description = "职位类型", example = "1")
+    private Long jobType;
+
+    @Schema(description = "学历要求", example = "2")
+    private String eduType;
+
+    @Schema(description = "实习天数", example = "1")
+    private Integer internshipDay;
+
+    // ========== 公司条件 ==========
+    @Schema(description = "人员规模")
+    private String scale;
+
+    // 公司性质没有
+}

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/flame/AppFlameJobRespVO.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.flame;
+
+import com.citu.module.menduner.system.controller.base.enterprise.business.EnterpriseBusinessRespVO;
+import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseRespVO;
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedExtendRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner -  火苗儿职位信息 Response VO")
+@Data
+public class AppFlameJobRespVO {
+
+    @Schema(description = "职位信息", example = "16657")
+    private AppFlameJobAdvertisedRespVO job;
+
+    @Schema(description = "职位扩展信息", example = "16657")
+    private JobAdvertisedExtendRespVO jobExtend;
+
+    @Schema(description = "企业信息", example = "16657")
+    private EnterpriseRespVO enterprise;
+
+    @Schema(description = "企业工商信息", example = "16657")
+    private EnterpriseBusinessRespVO business;
+
+}

+ 57 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitJobFairController.java

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.system.controller.app.recruit.fair;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRenewalReqVO;
+import com.citu.module.menduner.system.controller.base.job.fair.JobFairRespVO;
+import com.citu.module.menduner.system.service.job.JobIntegrationService;
+import com.citu.module.menduner.system.service.job.fair.JobFairService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "招聘端 - 招聘会")
+@RestController
+@RequestMapping("/menduner/system/recruit/job-fair")
+@Validated
+public class AppRecruitJobFairController {
+
+    @Resource
+    private JobFairService jobFairService;
+
+    @Resource
+    private JobIntegrationService jobIntegrationService;
+
+    @PreAuthenticated
+    @GetMapping("/list")
+    @Operation(summary = "获得招聘会列表")
+    public CommonResult<List<JobFairRespVO>> list() {
+        return success(BeanUtils.toBean(jobFairService.list(), JobFairRespVO.class));
+    }
+
+    @PreAuthenticated
+    @PostMapping("/join")
+    @Operation(summary = "企业将职位加入招聘会")
+    public CommonResult<Boolean> joinJobFair(@RequestBody @Valid joinJobFairReqVO reqVO) {
+        jobIntegrationService.joinJobFair(reqVO);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @PostMapping("/quit")
+    @Operation(summary = "企业将职位加入招聘会")
+    public CommonResult<Boolean> quitJobFair(@RequestBody @Valid joinJobFairReqVO reqVO) {
+        jobIntegrationService.quitJobFair(reqVO);
+        return success(true);
+    }
+
+}

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/AppRecruitJobAdvertisedController.java

@@ -182,4 +182,19 @@ public class AppRecruitJobAdvertisedController {
     }
 
 
+    @PreAuthenticated
+    @GetMapping("/get/extend")
+    @Operation(summary = "获取招聘职位扩展信息")
+    public CommonResult<AppRecruitJobExtendRespVO> getExtend(@RequestParam("jobId") Long jobId) {
+        return success(jobAdvertisedService.getExtend(jobId));
+    }
+
+    @PreAuthenticated
+    @PostMapping("/save/extend")
+    @Operation(summary = "保存招聘职位扩展信息")
+    public CommonResult<Boolean> saveExtend(@RequestBody @Valid AppRecruitJobExtendSaveReqVO reqVO) {
+        jobAdvertisedService.saveExtend(reqVO);
+        return success(true);
+    }
+
 }

+ 33 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobExtendRespVO.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.system.controller.app.recruit.job.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "招聘端 -招聘职位扩展 Response VO")
+@Data
+public class AppRecruitJobExtendRespVO {
+
+    @Schema(description = "职位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17732")
+    private Long jobId;
+
+    @Schema(description = "专业要求", example = "19754")
+    private Long majorId;
+
+    @Schema(description = "0.非热门 1.热门")
+    private Integer hot;
+
+    @Schema(description = "招聘部门")
+    private String dept;
+
+    @Schema(description = "上班时间")
+    private Object frequency;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "修改时间")
+    private LocalDateTime updateTime;
+
+}

+ 29 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobExtendSaveReqVO.java

@@ -0,0 +1,29 @@
+package com.citu.module.menduner.system.controller.app.recruit.job.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "招聘端 - 招聘职位扩展新增/修改 Request VO")
+@Data
+public class AppRecruitJobExtendSaveReqVO {
+
+    @NotNull(message = "{1_100_057_001}")
+    @Schema(description = "职位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17732")
+    private Long jobId;
+
+    @Schema(description = "专业要求", example = "19754")
+    private Long majorId;
+
+    @Schema(description = "0.非热门 1.热门")
+    private Integer hot;
+
+    @Schema(description = "招聘部门")
+    private String dept;
+
+    @Schema(description = "上班时间")
+    private Object frequency;
+
+
+}

+ 24 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/joinJobFairReqVO.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.system.controller.app.recruit.job.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "招聘端 -加入招聘会 Request VO")
+@Data
+public class joinJobFairReqVO {
+
+    /**
+     * 招聘会id
+     */
+    @Schema(description = "招聘会id", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "{1_100_056_001}")
+    private Long jobFairId;
+    /**
+     * 职位id
+     */
+    @Schema(description = "职位id", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "{1_100_056_002}")
+    private Long jobId;
+}

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedExtendRespVO.java

@@ -25,6 +25,10 @@ public class JobAdvertisedExtendRespVO {
     @ExcelProperty("专业要求")
     private Long majorId;
 
+    @Schema(description = "专业要求", example = "19754")
+    @ExcelProperty("专业要求")
+    private String majorName;
+
     @Schema(description = "0.非热门 1.热门")
     @ExcelProperty("0.非热门 1.热门")
     private Integer hot;
@@ -35,7 +39,7 @@ public class JobAdvertisedExtendRespVO {
 
     @Schema(description = "上班时间")
     @ExcelProperty("上班时间")
-    private String frequency;
+    private Object frequency;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")

+ 7 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java

@@ -2,15 +2,13 @@ package com.citu.module.menduner.system.convert;
 
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobDetailRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.*;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.excel.RecruitJobAnalysisExcelRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedImportExcelVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedExtendDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
@@ -57,4 +55,9 @@ public interface JobAdvertisedConvert {
     List<JobAdvertisedRespVO> convertList7(List<JobAdvertisedDO> list);
 
     AppRecruitJobSaveReqVO convert8(JobAdvertisedImportExcelVO resp);
+
+    AppRecruitJobExtendRespVO convert9(JobAdvertisedExtendDO bean);
+
+    JobAdvertisedExtendDO convert10(AppRecruitJobExtendSaveReqVO bean);
+
 }

+ 6 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobFairDO.java

@@ -2,20 +2,22 @@ package com.citu.module.menduner.system.dal.dataobject.job;
 
 
 import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 招聘会 DO
  *
  * @author Rayson
  */
-@TableName("mde_job_fair")
+@TableName(value = "mde_job_fair",autoResultMap = true)
 @KeySequence("mde_job_fair_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -93,6 +95,7 @@ public class JobFairDO extends TenantBaseDO {
     /**
      * 什么等级的vip可以参与
      */
-    private String vipRequire;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> vipRequire;
 
 }

+ 3 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobFairDetailDO.java

@@ -1,13 +1,11 @@
 package com.citu.module.menduner.system.dal.dataobject.job;
 
 
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 招聘会详情 DO

+ 7 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobFairDetailMapper.java

@@ -1,9 +1,14 @@
 package com.citu.module.menduner.system.dal.mysql.job;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobPageReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobFairDetailDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 招聘会详情 Mapper
@@ -14,4 +19,6 @@ import org.apache.ibatis.annotations.Mapper;
 public interface JobFairDetailMapper extends BaseMapperX<JobFairDetailDO> {
 
 
+    IPage<AppFlameJobRespVO> search(Page<?> page, @Param("reqVO") AppFlameJobPageReqVO reqVO);
+
 }

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/major/MajorMapper.java

@@ -42,6 +42,8 @@ public interface MajorMapper extends BaseMapperX<MajorDO> {
                 .orderByAsc(MajorDO::getUpdater)
         );
     }
-
+   default MajorDO selectById(Long id) {
+        return selectOne(MajorDO::getId, id);
+    }
 
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java

@@ -81,4 +81,9 @@ public interface PositionMapper extends BaseMapperX<PositionDO> {
     default List<PositionDO> selectListByNameList(String name) {
         return selectList(PositionDO::getNameCn, name);
     }
+
+   default PositionDO selectById(Long id) {
+        return selectOne(PositionDO::getId, id);
+    }
+
 }

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobService.java

@@ -6,6 +6,8 @@ import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppE
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedDetailRespVO;
 
+import java.util.List;
+
 /**
  * 企业-职位 Service 接口
  **/
@@ -36,4 +38,5 @@ public interface EnterpriseJobService {
      * @return 分页简易企业对象
      **/
     PageResult<AppEnterpriseJobRespVO> search(AppEnterpriseSearchPageReqVO reqVO);
+
 }

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobServiceImpl.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.service.enterprisejob;
 
 import cn.hutool.core.collection.CollUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseSearchPageReqVO;
@@ -12,9 +13,13 @@ import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedExtendMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobFairDetailMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobFairMapper;
 import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import com.citu.module.menduner.system.service.job.fair.JobFairService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -118,5 +123,4 @@ public class EnterpriseJobServiceImpl implements EnterpriseJobService {
         });
         return result;
     }
-
 }

+ 11 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java

@@ -5,6 +5,8 @@ import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendSaveReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRenewalReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
@@ -189,6 +191,15 @@ public interface JobAdvertisedService {
      * 设置分享内容
      **/
     Long share(Map<String, Object> map);
+
+    /**
+     * 根据职位id获取职位扩展信息
+     **/
+    AppRecruitJobExtendRespVO getExtend(Long jobId);
+    /**
+     * 保存职位扩展信息
+     **/
+     void saveExtend(AppRecruitJobExtendSaveReqVO reqVO);
     // ========== 统计分析 ==========
 
     /**

+ 28 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -17,6 +17,8 @@ import com.citu.module.menduner.system.api.python.GraphQueryPageDTO;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
@@ -25,6 +27,8 @@ import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalys
 import com.citu.module.menduner.system.controller.base.job.*;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedExtendDO;
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedExtendMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.job.JobStatusEnum;
 import com.citu.module.menduner.system.enums.sync.SyncConstants;
@@ -70,6 +74,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Resource
     private JobAdvertisedMapper mapper;
     @Resource
+    private JobAdvertisedExtendMapper extendMapper;
+    @Resource
     private ESProducer esProducer;
     @Resource
     private GraphProducer producer;
@@ -482,7 +488,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 // 已经是开启状态
                 throw exception(MDE_JOB_ADVERTISED_STATUS_ENABLE_ERROR);
             }
-            vipEntitlementCheckAspect.validate(VipEntitlementCheck.OPERATE_PUBLISH_JOB,VipEntitlementCheck.OperationType.DEDUCT);
+            vipEntitlementCheckAspect.validate(VipEntitlementCheck.OPERATE_PUBLISH_JOB, VipEntitlementCheck.OperationType.DEDUCT);
             job.setStatus(JobStatusEnum.ENABLE.getStatus());
             mapper.updateById(job);
             jobDataSync(job, SyncConstants.UPDATE);
@@ -500,7 +506,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 // 已经是关闭状态
                 throw exception(MDE_JOB_ADVERTISED_STATUS_CLOSE_ERROR);
             }
-            vipEntitlementCheckAspect.validate(VipEntitlementCheck.OPERATE_PUBLISH_JOB,VipEntitlementCheck.OperationType.ADD);
+            vipEntitlementCheckAspect.validate(VipEntitlementCheck.OPERATE_PUBLISH_JOB, VipEntitlementCheck.OperationType.ADD);
             job.setStatus(JobStatusEnum.DISABLE.getStatus());
             mapper.updateById(job);
             jobDataSync(job, SyncConstants.UPDATE);
@@ -597,6 +603,26 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         return id;
     }
 
+    @Override
+    public AppRecruitJobExtendRespVO getExtend(Long jobId) {
+        return JobAdvertisedConvert.INSTANCE.convert9(extendMapper.selectOne(JobAdvertisedExtendDO::getJobId, jobId));
+    }
+
+    @Override
+    public void saveExtend(AppRecruitJobExtendSaveReqVO reqVO) {
+        JobAdvertisedExtendDO entity =
+                extendMapper.selectOne(JobAdvertisedExtendDO::getJobId, reqVO.getJobId());
+        JobAdvertisedExtendDO extendDO = JobAdvertisedConvert.INSTANCE.convert10(reqVO);
+        if (null == entity) {
+            // 新增
+            extendMapper.insert(extendDO);
+        } else {
+            // 修改
+            extendDO.setId(entity.getId());
+            extendMapper.updateById(extendDO);
+        }
+    }
+
     /**
      * 职位操作最后的操作
      *

+ 18 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java

@@ -2,12 +2,15 @@ package com.citu.module.menduner.system.service.job;
 
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobPageReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSearchPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobCvLookRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidatePageReqVO;
@@ -99,4 +102,19 @@ public interface JobIntegrationService {
      **/
     void importData(List<JobAdvertisedImportExcelVO> list);
 
+    /**
+     * 企业将职位加入招聘会
+     *
+     **/
+    void joinJobFair(joinJobFairReqVO reqVO);
+
+    /**
+     * 企业将职位退出招聘会
+     **/
+    void quitJobFair(joinJobFairReqVO reqVO);
+
+    /**
+     * 火苗儿职位分页查询
+     **/
+    PageResult<AppFlameJobRespVO> getFlameJobPage(AppFlameJobPageReqVO reqVO);
 }

+ 99 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

@@ -1,17 +1,20 @@
 package com.citu.module.menduner.system.service.job;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.dict.core.DictFrameworkUtils;
+import com.citu.framework.mybatis.core.util.MyBatisUtils;
 import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobPageReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSearchPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobCvLookRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.*;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecruitJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.unfit.AppRecruitUnfitCandidatePageReqVO;
@@ -26,17 +29,23 @@ import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobFairDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobFairDetailDO;
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobFairDetailMapper;
+import com.citu.module.menduner.system.dal.mysql.major.MajorMapper;
 import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
 import com.citu.module.menduner.system.dal.mysql.unfit.UnfitCandidateMapper;
 import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.interview.InterviewInviteService;
+import com.citu.module.menduner.system.service.job.fair.JobFairService;
 import com.citu.module.menduner.system.util.ESQueryBuildUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.elasticsearch.index.query.BoolQueryBuilder;
@@ -50,6 +59,7 @@ import org.springframework.data.elasticsearch.core.SearchHits;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
@@ -58,6 +68,8 @@ import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
+
 @Slf4j
 @Service
 @Validated
@@ -90,12 +102,21 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     private PositionMapper positionMapper;
 
+    @Resource
+    private MajorMapper majorMapper;
+
     @Resource
     private UnfitCandidateMapper unfitCandidateMapper;
 
     @Resource
     private ElasticsearchRestTemplate elasticsearchTemplate;
 
+    @Resource
+    private JobFairService jobFairService;
+
+    @Resource
+    private JobFairDetailMapper jobFairDetailMapper;
+
 
     /**
      * 包装职位发布联系人
@@ -352,7 +373,7 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
                 // 重复名字就取第一条
                 job.setPositionId(positionList.get(0).getId());
             }
-            List<AreaDO> areaList =  areaMapper.selectListByNameList(item.getArea());
+            List<AreaDO> areaList = areaMapper.selectListByNameList(item.getArea());
             if (CollUtil.isNotEmpty(areaList)) {
                 // 重复名字就取第一条
                 job.setAreaId(areaList.get(0).getId());
@@ -360,4 +381,77 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
             jobAdvertisedService.save(job);
         });
     }
+
+    @Override
+    public void joinJobFair(joinJobFairReqVO reqVO) {
+        JobFairDetailDO detailDO = jobFairDetailMapper
+                .selectOne(JobFairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
+                        JobFairDetailDO::getJobId, reqVO.getJobId());
+        if (null != detailDO) {
+            // 已经加入
+            return;
+        }
+        JobFairDO jobFairDO = jobFairService.getJobFair(reqVO.getJobFairId());
+        jobFairService.checkJobFairExpired(jobFairDO);
+
+        if (ObjectUtil.isNotEmpty(jobFairDO.getVipRequire())) {
+            // 效验是否符合会员要求
+            // 不符合抛出异常提示
+        }
+        JobFairDetailDO detail = JobFairDetailDO.builder()
+                .jobFairId(jobFairDO.getId())
+                .enterpriseId(LoginUserContext.getEnterpriseId())
+                .jobId(reqVO.getJobId())
+                .build();
+        jobFairDetailMapper.insert(detail);
+    }
+
+    @Override
+    public void quitJobFair(joinJobFairReqVO reqVO) {
+        JobFairDetailDO detailDO = jobFairDetailMapper
+                .selectOne(JobFairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
+                        JobFairDetailDO::getJobId, reqVO.getJobId());
+        if (null == detailDO) {
+            // 不在招聘会里面
+            return;
+        }
+        jobFairDetailMapper.deleteById(detailDO.getId());
+    }
+
+    @Override
+    public PageResult<AppFlameJobRespVO> getFlameJobPage(AppFlameJobPageReqVO reqVO) {
+        IPage<AppFlameJobRespVO> pageResult = jobFairDetailMapper.search(MyBatisUtils.buildPage(reqVO), reqVO);
+        PageResult<AppFlameJobRespVO> result = new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
+        for (AppFlameJobRespVO record : result.getList()) {
+            if (StringUtils.hasText(record.getJob().getPayUnit())) {
+                record.getJob().setPayUnit(DictFrameworkUtils.getDictDataLabel(MENDUNER_PAY_UNIT, record.getJob().getPayUnit()));
+            }
+            if (StringUtils.hasText(record.getJob().getExpType())) {
+                record.getJob().setExpType(DictFrameworkUtils.getDictDataLabel(MENDUNER_EXP_TYPE, record.getJob().getExpType()));
+            }
+            if (StringUtils.hasText(record.getJob().getEduType())) {
+                record.getJob().setEduType(DictFrameworkUtils.getDictDataLabel(MENDUNER_EDUCATION_TYPE, record.getJob().getEduType()));
+            }
+            if (null != record.getJob().getAreaId()) {
+                AreaDO area = areaService.getArea(record.getJob().getAreaId());
+                record.getJob().setAreaName(null != area ? area.getName() : null);
+            }
+            if (null != record.getJob().getPositionId()) {
+                PositionDO position = positionMapper.selectById(record.getJob().getPositionId());
+                record.getJob().setPositionName(null != position ? position.getNameCn() : null);
+            }
+            if (null != record.getJobExtend().getMajorId()) {
+                MajorDO major = majorMapper.selectById(record.getJobExtend().getMajorId());
+                record.getJobExtend().setMajorName(null != major ? major.getNameCn() : null);
+            }
+            if (StringUtils.hasText(record.getEnterprise().getFinancingStatus())) {
+                record.getEnterprise().setFinancingStatus(DictFrameworkUtils.getDictDataLabel(MENDUNER_FINANCING_STATUS, record.getEnterprise().getFinancingStatus()));
+            }
+            if (StringUtils.hasText(record.getEnterprise().getScale())) {
+                record.getEnterprise().setScale(DictFrameworkUtils.getDictDataLabel(MENDUNER_SCALE, record.getEnterprise().getScale()));
+            }
+            record.getJob().setStatus(DictFrameworkUtils.getDictDataLabel(MENDUNER_JOB_STATUS, record.getJob().getStatus()));
+        }
+        return result;
+    }
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/fair/JobFairService.java

@@ -7,6 +7,7 @@ import com.citu.module.menduner.system.controller.base.job.fair.JobFairSaveReqVO
 import com.citu.module.menduner.system.dal.dataobject.job.JobFairDO;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 招聘会 Service 接口
@@ -53,4 +54,9 @@ public interface JobFairService {
      */
     PageResult<JobFairDO> getJobFairPage(JobFairPageReqVO pageReqVO);
 
+    /** 效验招聘会是否过期 **/
+    void checkJobFairExpired(JobFairDO jobFairDO);
+
+    /** 获取在时间段内的招聘会列表 **/
+    List<JobFairDO> list();
 }

+ 27 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/fair/JobFairServiceImpl.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.service.job.fair;
 
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.controller.base.job.fair.JobFairPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.fair.JobFairSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobFairDO;
@@ -12,8 +13,13 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_FAIR_NOT_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_FAIR_TIME_OVER;
 
 /**
  * 招聘会 Service 实现类
@@ -53,15 +59,17 @@ public class JobFairServiceImpl implements JobFairService {
         jobFairMapper.deleteById(id);
     }
 
-    private void validateJobFairExists(Long id) {
-        if (jobFairMapper.selectById(id) == null) {
+    private JobFairDO validateJobFairExists(Long id) {
+        JobFairDO jobFair = jobFairMapper.selectById(id);
+        if (null == jobFair) {
             throw exception(JOB_FAIR_NOT_EXISTS);
         }
+        return jobFair;
     }
 
     @Override
     public JobFairDO getJobFair(Long id) {
-        return jobFairMapper.selectById(id);
+        return validateJobFairExists(id);
     }
 
     @Override
@@ -69,4 +77,20 @@ public class JobFairServiceImpl implements JobFairService {
         return jobFairMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public void checkJobFairExpired(JobFairDO jobFairDO) {
+        LocalDateTime now = LocalDateTime.now();
+        // 检查是否在时间范围内
+        if (now.isBefore(jobFairDO.getStartTime()) || now.isAfter(jobFairDO.getEndTime())) {
+            throw exception(JOB_FAIR_TIME_OVER);
+        }
+    }
+
+    @Override
+    public List<JobFairDO> list() {
+        LocalDate date = LocalDate.now();
+        return jobFairMapper.selectList(new LambdaQueryWrapperX<JobFairDO>()
+                .ge(JobFairDO::getEndTime, date.atStartOfDay())
+        );
+    }
 }

+ 6 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -405,4 +405,9 @@
 # ========== 早报资讯 1_100_055_000 ==========
 1_100_055_001=Morning News does not exist
 # ========== 招聘会 1_100_056_000 ==========
-1_100_056_001=The job fair does not exist
+1_100_056_001=The job fair does not exist
+1_100_056_002=Recruitment position ID cannot be empty
+1_100_056_003=The name of the job fair cannot be empty
+1_100_056_004=The job fair time has passed, recruitment is temporarily suspended,暂停招聘
+# ========== 招聘职位扩展 1_100_057_000 ==========
+1_100_057_001=Recruitment position ID cannot be empty

+ 6 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -405,4 +405,9 @@
 # ========== 早报资讯 1_100_055_000 ==========
 1_100_055_001=早报资讯不存在
 # ========== 招聘会 1_100_056_000 ==========
-1_100_056_001=招聘会不存在
+1_100_056_001=招聘会不存在
+1_100_056_002=招聘职位id不能为空
+1_100_056_003=招聘会名称不能为空
+1_100_056_004=招聘会时间已过,暂停招聘
+# ========== 招聘职位扩展 1_100_057_000 ==========
+1_100_057_001=招聘职位id不能为空

+ 79 - 0
menduner/menduner-system-biz/src/main/resources/mapper/job/JobFairDetailMapper.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.job.JobFairDetailMapper">
+
+
+    <resultMap id="AppFlameJobRespVOResultMap"
+               type="com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO"
+               autoMapping="true">
+
+        <association property="job"
+                     javaType="com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobAdvertisedRespVO"
+                     autoMapping="true">
+            <result property="tagList" column="tag_list"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        </association>
+
+
+        <association property="jobExtend"
+                     javaType="com.citu.module.menduner.system.controller.base.job.JobAdvertisedExtendRespVO"
+                     autoMapping="true">
+            <result property="frequency" column="frequency"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        </association>
+
+        <association property="enterprise"
+                     javaType="com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseRespVO"
+                     autoMapping="true">
+            <result property="welfareList" column="welfare_list"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+            <result property="tagList" column="tag_list"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+            <result property="albumList" column="album_list"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+            <result property="pubJobTypePerm" column="pub_job_type_perm"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        </association>
+
+        <association property="business"
+                     javaType="com.citu.module.menduner.system.controller.base.enterprise.business.EnterpriseBusinessRespVO"
+                     autoMapping="true">
+        </association>
+    </resultMap>
+
+    <select id="search"
+            resultMap="AppFlameJobRespVOResultMap" >
+        select
+        a.*,x.*,e.*,b.*
+        from
+        mde_job_fair as f
+        inner join mde_job_fair_detail as d on f.id = d.job_fair_id
+        inner join mde_job_advertised as a on d.job_id = a.id
+        inner join mde_job_advertised_extend as x on a.id = x.job_id
+        inner join mde_enterprise as e on a.enterprise_id = e.id
+        left join mde_enterprise_business as b on e.id = b.enterprise_id
+       <where>
+           (f.deleted=0 and f.end_time > now()) and d.deleted = 0 and a.deleted = 0 and e.deleted = 0
+           and a.status = 0
+           and (a.expire_time > now() or a.expire_time is null)
+           <if test="reqVO.jobFairId != null">
+               and f.id = #{jobFairId}
+           </if>
+           <if test="reqVO.content != null and reqVO.content != ''">
+               and (a.name like concat('%',#{content},'%') or e.name like concat('%',#{content},'%'))
+           </if>
+           <if test="reqVO.areaId != null">
+               and a.area_id = #{areaId}
+           </if>
+           <if test="reqVO.positionId != null">
+               and a.position_id = #{positionId}
+           </if>
+           <if test="reqVO.jobType != null">
+               and a.job_type = #{jobType}
+           </if>
+           <if test="reqVO.eduType != null">
+               and a.edu_type = #{eduType}
+           </if>
+           <if test="reqVO.internshipDay != null">
+               and a.internship_day = #{internshipDay}
+           </if>
+
+       </where>
+        ORDER BY d.create_time ,a.update_time DESC
+
+    </select>
+</mapper>