SpringBoot+Vue 招聘网站:简历附件上传与投递实现详解

本文将详细介绍如何使用 SpringBoot 和 Vue 开发招聘网站,并实现用户在个人中心上传简历附件以及在招聘信息处投递简历的功能。

底层逻辑

  1. 简历附件上传:

    • 用户在个人中心上传简历附件时,前端将文件通过 formData 的形式发送到后端。
    • 后端接收到文件后,保存到服务器本地,同时将文件路径和用户 ID 存储到数据库中。
  2. 简历投递:

    • 用户在招聘信息处投递简历时,前端将简历 ID 和招聘信息 ID 发送到后端。
    • 后端查询数据库获取简历路径和招聘信息,将简历文件通过邮件或其他方式发送给招聘人员。

代码实现

1. 后端实现文件上传

@PostMapping("/upload")
public Result upload(@RequestParam("file") MultipartFile file, @RequestParam("userId") Long userId) {
    if (file.isEmpty()) {
        return Result.fail("文件为空");
    }
    String fileName = file.getOriginalFilename();
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    String filePath = "E:/upload/";
    fileName = UUID.randomUUID() + suffixName;
    File dest = new File(filePath + fileName);
    try {
        file.transferTo(dest);
        // 将文件路径和用户ID存储到数据库中
        Resume resume = new Resume();
        resume.setUserId(userId);
        resume.setFilePath(filePath + fileName);
        resumeService.save(resume);
        return Result.success("上传成功");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return Result.fail("上传失败");
}

2. 后端实现简历投递

@PostMapping("/apply")
public Result apply(@RequestParam("resumeId") Long resumeId, @RequestParam("jobId") Long jobId) {
    Resume resume = resumeService.getById(resumeId);
    Job job = jobService.getById(jobId);
    if (resume == null || job == null) {
        return Result.fail("简历或招聘信息不存在");
    }
    String to = job.getEmail();
    String subject = "简历投递";
    String content = "有人投递了简历,请查收";
    // 发送邮件
    mailService.sendSimpleMail(to, subject, content, resume.getFilePath());
    return Result.success("投递成功");
}

3. 前端实现文件上传和简历投递

<!-- 上传文件 -->
<el-upload
  action="/api/resume/upload"
  :data="{ userId: userInfo.id }"
  :show-file-list="false"
  :on-success="handleUploadSuccess"
  :on-error="handleUploadError">
  <el-button size="small" type="primary">点击上传简历</el-button>
</el-upload>

<!-- 投递简历 -->
<el-button type="primary" size="small" @click="handleApply">投递简历</el-button>

<script>
export default {
  data() {
    return {
      resumeId: null,
      jobId: null,
      userInfo: {}
    }
  },
  methods: {
    // 上传成功回调
    handleUploadSuccess(response) {
      if (response.code === 0) {
        this.resumeId = response.data;
        this.$message.success(response.message);
      } else {
        this.$message.error(response.message);
      }
    },
    // 上传失败回调
    handleUploadError(error) {
      this.$message.error(error.message);
    },
    // 投递简历
    handleApply() {
      if (!this.resumeId || !this.jobId) {
        this.$message.error('简历或招聘信息不存在');
        return;
      }
      this.$axios.post('/api/job/apply', {
        resumeId: this.resumeId,
        jobId: this.jobId
      }).then(response => {
        if (response.code === 0) {
          this.$message.success(response.message);
        } else {
          this.$message.error(response.message);
        }
      }).catch(error => {
        this.$message.error(error.message);
      });
    }
  }
}
</script>

总结

本文详细介绍了使用 SpringBoot 和 Vue 开发招聘网站时,实现用户在个人中心上传简历附件以及在招聘信息处投递简历的完整流程。包括底层逻辑、代码示例以及前后端交互细节,帮助开发者快速构建功能完善的招聘网站。

SpringBoot+Vue 招聘网站:简历附件上传与投递实现详解

原文地址: https://www.cveoy.top/t/topic/n1vc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录