he2802 4 лет назад
Родитель
Сommit
7975548c0a

+ 88 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/recruit/RecruitInterviewController.java

@@ -0,0 +1,88 @@
+package com.zhongzheng.controller.recruit;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.recruit.bo.RecruitInterviewAddBo;
+import com.zhongzheng.modules.recruit.bo.RecruitInterviewEditBo;
+import com.zhongzheng.modules.recruit.bo.RecruitInterviewQueryBo;
+import com.zhongzheng.modules.recruit.service.IRecruitInterviewService;
+import com.zhongzheng.modules.recruit.vo.RecruitInterviewVo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 招聘面试关联Controller
+ *
+ * @author hjl
+ * @date 2021-08-20
+ */
+@Api(value = "投递简历控制器", tags = {"投递简历管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/interview")
+public class RecruitInterviewController extends BaseController {
+
+    private final IRecruitInterviewService iRecruitInterviewService;
+
+    private final WxTokenService wxTokenService;
+
+    /**
+     * 查询招聘面试关联列表
+     */
+    @ApiOperation("查询招聘面试关联列表")
+    @GetMapping("/list")
+    public TableDataInfo<RecruitInterviewVo> list(RecruitInterviewQueryBo bo) {
+        startPage();
+        List<RecruitInterviewVo> list = iRecruitInterviewService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取招聘面试关联详细信息
+     */
+    @ApiOperation("获取招聘面试关联详细信息")
+    @PreAuthorize("@ss.hasPermi('system:interview:query')")
+    @GetMapping("/{interviewId}")
+    public AjaxResult<RecruitInterviewVo> getInfo(@PathVariable("interviewId" ) Long interviewId) {
+        return AjaxResult.success(iRecruitInterviewService.queryById(interviewId));
+    }
+
+    /**
+     * 新增招聘面试关联
+     */
+    @ApiOperation("投递简历")
+    @Log(title = "投递简历", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody RecruitInterviewAddBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return toAjax(iRecruitInterviewService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/recruit/bo/RecruitInterviewAddBo.java

@@ -54,4 +54,7 @@ public class RecruitInterviewAddBo {
     /** 面试用户id */
     @ApiModelProperty("面试用户id")
     private Long userId;
+    /** 面试简历id */
+    @ApiModelProperty("面试简历id")
+    private Long resumeId;
 }

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/recruit/service/impl/RecruitInterviewServiceImpl.java

@@ -2,10 +2,18 @@ package com.zhongzheng.modules.recruit.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.course.domain.MajorCategory;
+import com.zhongzheng.modules.recruit.service.IRecruitNeedsService;
+import com.zhongzheng.modules.recruit.service.IRecruitResumeService;
 import com.zhongzheng.modules.recruit.vo.CalendarInterviewVo;
 import com.zhongzheng.modules.recruit.vo.DayInterviewVo;
+import com.zhongzheng.modules.recruit.vo.RecruitResumeVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -33,6 +41,9 @@ import java.util.stream.Collectors;
 @Service
 public class RecruitInterviewServiceImpl extends ServiceImpl<RecruitInterviewMapper, RecruitInterview> implements IRecruitInterviewService {
 
+    @Autowired
+    private IRecruitResumeService iRecruitResumeService;
+
     @Override
     public RecruitInterviewVo queryById(Long interviewId){
         RecruitInterview db = this.baseMapper.selectById(interviewId);
@@ -79,6 +90,14 @@ public class RecruitInterviewServiceImpl extends ServiceImpl<RecruitInterviewMap
     public Boolean insertByAddBo(RecruitInterviewAddBo bo) {
         RecruitInterview add = BeanUtil.toBean(bo, RecruitInterview.class);
         validEntityBeforeSave(add);
+        RecruitResumeVo recruitResumeVo = iRecruitResumeService.queryById(bo.getResumeId());
+        if(checkDelivery(add)){
+            throw new CustomException("你已投递该岗位");
+        }
+        if(recruitResumeVo==null){
+            throw new CustomException("简历不存在");
+        }
+        add.setResumeJson(JSONObject.toJSONString(recruitResumeVo));
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
         return this.save(add);
@@ -101,6 +120,17 @@ public class RecruitInterviewServiceImpl extends ServiceImpl<RecruitInterviewMap
         //TODO 做一些数据校验,如唯一约束
     }
 
+    private boolean checkDelivery(RecruitInterview entity) {
+        RecruitInterview info = getOne(new LambdaQueryWrapper<RecruitInterview>()
+                .eq(RecruitInterview::getUserId,entity.getUserId())
+                .eq(RecruitInterview::getNeedsId,entity.getNeedsId())
+                .last("limit 1"));
+        if (Validator.isNotNull(info)) {
+            return true;
+        }
+        return false;
+    }
+
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
         if(isValid){