lsw 10 ヶ月 前
コミット
2bdfa4ac85

+ 35 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/api/Api_ResumeDeliverController.java

@@ -1,13 +1,14 @@
 package com.ruoyi.web.work.api;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.web.work.api.config.BaseController;
 import com.ruoyi.web.work.domain.ResumeDeliver;
+import com.ruoyi.web.work.domain.dto.ResumeDeliverDto;
 import com.ruoyi.web.work.service.IResumeDeliverService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -23,10 +24,39 @@ public class Api_ResumeDeliverController extends BaseController {
     @Autowired
     private IResumeDeliverService resumeDeliverService;
 
-    @GetMapping("/list")
-    public TableDataInfo list(ResumeDeliver resumeDeliver) {
+    @GetMapping("/user/list")
+    public TableDataInfo userList(ResumeDeliver resumeDeliver) {
+        resumeDeliver.setUserId(getUser().getId());
         startPage();
         List<ResumeDeliver> list = resumeDeliverService.selectList(resumeDeliver);
         return getDataTable(list);
     }
+
+    @GetMapping("/position/list")
+    public TableDataInfo positionList(ResumeDeliver resumeDeliver) {
+        resumeDeliver.setEnterpriseId(getUser().getId());
+        startPage();
+        List<ResumeDeliver> list = resumeDeliverService.selectList(resumeDeliver);
+        return getDataTable(list);
+    }
+
+    @PostMapping("/detail/{id}")
+    public AjaxResult detail(@PathVariable("id") Long id) {
+        return resumeDeliverService.detail(id);
+    }
+
+    @PostMapping("/invite/{id}")
+    public AjaxResult invite(@PathVariable("id") Long id) {
+        return resumeDeliverService.invite(id);
+    }
+
+    @GetMapping("/send/{id}")
+    public AjaxResult send(@PathVariable("id") Long id) {
+        return resumeDeliverService.send(id);
+    }
+
+    @PostMapping("/agree")
+    public AjaxResult agree(@Validated @RequestBody ResumeDeliverDto dto) {
+        return resumeDeliverService.agree(dto);
+    }
 }

+ 10 - 12
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/ResumeDeliver.java

@@ -1,13 +1,14 @@
 package com.ruoyi.web.work.domain;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
-import lombok.Data;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import lombok.experimental.Accessors;
+
+import java.util.Date;
 /**
  * @author lsw
  * @date 2024-06-13
@@ -18,13 +19,16 @@ import lombok.experimental.Accessors;
 public class ResumeDeliver{
     private static final long serialVersionUID = 1L;
 
-    private String id;
+    private Long id;
 
     @ApiModelProperty(value = "关联账号")
-    private String userId;
+    private Long userId;
+
+    @ApiModelProperty(value = "企业id")
+    private Long enterpriseId;
 
     @ApiModelProperty(value = "职位id")
-    private String positionId;
+    private Long positionId;
 
     @ApiModelProperty(value = "投递状态:0=投递简历,1=面试邀请")
     private Integer state;
@@ -38,12 +42,6 @@ public class ResumeDeliver{
     @ApiModelProperty(value = "是否签订合同:0=未发送,1=已发送,2=已签订")
     private Integer isContract;
 
-    @ApiModelProperty(value = "是否查看-发送合同:0=待查看,1=已查看")
-    private Integer isReadContract;
-
-    @ApiModelProperty(value = "面试者是否已读 0未读 1已读")
-    private Integer viewerRead;
-
     @TableField(fill = FieldFill.INSERT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;

+ 20 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/ResumeDeliverDto.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.work.domain.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class ResumeDeliverDto {
+
+
+    @NotNull(message = "参数错误")
+    private Long id;
+
+    @NotNull(message = "参数错误")
+    @Min(value = 1, message = "面试邀请isAccept 只能是 1 或者 2")
+    @Max(value = 2, message = "面试邀请isAccept 只能是 1 或者 2")
+    private Integer isAccept;
+}

+ 40 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IResumeDeliverService.java

@@ -1,13 +1,50 @@
 package com.ruoyi.web.work.service;
 
-import java.util.List;
-import com.ruoyi.web.work.domain.ResumeDeliver;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.work.domain.ResumeDeliver;
+import com.ruoyi.web.work.domain.dto.ResumeDeliverDto;
+
+import java.util.List;
 
 /**
  * @author lsw
  * @date 2024-06-13
  */
-public interface IResumeDeliverService extends IService<ResumeDeliver>{
+public interface IResumeDeliverService extends IService<ResumeDeliver> {
     List<ResumeDeliver> selectList(ResumeDeliver resumeDeliver);
+
+    /**
+     * 投递简历
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult send(Long id);
+
+    /**
+     * 同意或拒绝面试邀请
+     *
+     * @param dto
+     * @return
+     */
+    AjaxResult agree(ResumeDeliverDto dto);
+
+
+    /**
+     * 企业邀请面试
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult invite(Long id);
+
+
+    /**
+     * 查看简历
+     *
+     * @param id
+     * @return
+     */
+    AjaxResult detail(Long id);
 }

+ 70 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/ResumeDeliverServiceImpl.java

@@ -1,12 +1,19 @@
 package com.ruoyi.web.work.service.impl;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.web.work.mapper.ResumeDeliverMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.web.work.api.util.AppUtil;
+import com.ruoyi.web.work.domain.Position;
 import com.ruoyi.web.work.domain.ResumeDeliver;
+import com.ruoyi.web.work.domain.dto.ResumeDeliverDto;
+import com.ruoyi.web.work.mapper.ResumeDeliverMapper;
+import com.ruoyi.web.work.service.IPositionService;
 import com.ruoyi.web.work.service.IResumeDeliverService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * @author lsw
@@ -17,8 +24,66 @@ public class ResumeDeliverServiceImpl extends ServiceImpl<ResumeDeliverMapper, R
     @Autowired
     private ResumeDeliverMapper resumeDeliverMapper;
 
+    @Autowired
+    private IPositionService positionService;
+
     @Override
     public List<ResumeDeliver> selectList(ResumeDeliver resumeDeliver) {
         return resumeDeliverMapper.selectList(resumeDeliver);
     }
+
+    @Override
+    public AjaxResult send(Long id) {
+        Position position = positionService.getById(id);
+        if (position == null || position.getState() != 0 || position.getAudit() != 1) {
+            return AjaxResult.error("该职位不存在或已下架");
+        }
+        ResumeDeliver resumeDeliver = new ResumeDeliver();
+        resumeDeliver.setUserId(AppUtil.getUser().getId());
+        resumeDeliver.setPositionId(position.getId());
+        resumeDeliver.setEnterpriseId(position.getUserId());
+        if (!save(resumeDeliver)) {
+            throw new ServiceException("投递简历失败");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult agree(ResumeDeliverDto dto) {
+        ResumeDeliver resumeDeliver = getById(dto.getId());
+        if (resumeDeliver == null || !resumeDeliver.getUserId().equals(AppUtil.getUser().getId())) {
+            return AjaxResult.error("面试不存在或非法操作");
+        }
+        resumeDeliver.setIsAccept(dto.getIsAccept());
+        if (!updateById(resumeDeliver)) {
+            throw new ServiceException("接受或拒绝面试邀请失败");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult invite(Long id) {
+        ResumeDeliver resumeDeliver = getById(id);
+        if (resumeDeliver == null || !resumeDeliver.getEnterpriseId().equals(AppUtil.getUser().getId())) {
+            return AjaxResult.error("简历不存在或非法操作");
+        }
+        resumeDeliver.setState(1);
+        if (!updateById(resumeDeliver)) {
+            throw new ServiceException("发生面试邀请失败");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult detail(Long id) {
+        ResumeDeliver resumeDeliver = getById(id);
+        if (resumeDeliver == null || !resumeDeliver.getEnterpriseId().equals(AppUtil.getUser().getId())) {
+            return AjaxResult.error("简历不存在或非法操作");
+        }
+        if (resumeDeliver.getIsRead() == 0) {
+            resumeDeliver.setIsRead(1);
+            updateById(resumeDeliver);
+        }
+        return AjaxResult.success(resumeDeliver);
+    }
 }

+ 20 - 10
ruoyi-admin/src/main/resources/mapper/work/ResumeDeliverMapper.xml

@@ -5,17 +5,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.ruoyi.web.work.mapper.ResumeDeliverMapper">
     
     <select id="selectList" resultType="com.ruoyi.web.work.domain.ResumeDeliver">
-        select * from tb_resume_deliver
-        <where>  
-            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
-            <if test="positionId != null  and positionId != ''"> and position_id = #{positionId}</if>
-            <if test="state != null "> and state = #{state}</if>
-            <if test="isAccept != null "> and is_accept = #{isAccept}</if>
-            <if test="isRead != null "> and is_read = #{isRead}</if>
-            <if test="isContract != null "> and is_contract = #{isContract}</if>
-            <if test="isReadContract != null "> and is_read_contract = #{isReadContract}</if>
-            <if test="viewerRead != null "> and viewer_read = #{viewerRead}</if>
+        SELECT
+        d.*,
+        p.title,
+        p.salary,
+        p.region_name,
+        p.address,
+        p.location
+        FROM
+        tb_resume_deliver d
+        LEFT JOIN tb_position p ON p.id = d.position_id
+        WHERE
+        <where>
+            <if test="userId != null "> and d.user_id = #{userId}</if>
+            <if test="enterpriseId != null "> and d.enterprise_id = #{enterpriseId}</if>
+            <if test="positionId != null "> and d.position_id = #{positionId}</if>
+            <if test="state != null "> and d.state = #{state}</if>
+            <if test="isAccept != null "> and d.is_accept = #{isAccept}</if>
+            <if test="isRead != null "> and d.is_read = #{isRead}</if>
+            <if test="isContract != null "> and d.is_contract = #{isContract}</if>
         </where>
+        ORDER BY d.id DESC
     </select>
 
 </mapper>