基于Java+SpringBoot+Vue求职招聘系统设计与实现(有50页论文)

您所在的位置:网站首页 滨州网页设计招聘 基于Java+SpringBoot+Vue求职招聘系统设计与实现(有50页论文)

基于Java+SpringBoot+Vue求职招聘系统设计与实现(有50页论文)

2024-01-23 13:19| 来源: 网络整理| 查看: 265

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用ChatGPT,微信支付,扫码加群

点击这里预览

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.htmluniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!!

目录

一、前言

二、系统设计

1、系统运行环境

2、系统架构设计

三、需求分析简介

1、个人用户

2、企业用户

3、管理员

四、功能截图

1、系统首页

2、求职用户功能界面

2.1、首页

2.2、我的收藏

2.3、我的简历

2.4、简历投递状态

3、企业用户功能界面

3.1、首页 

3.2、企业信息维护与认证

3.3、发布职位

3.4、约面试

4、管理员功能界面

4.1、首页

4.2、企业认证审核

4.3、职位认证审核

4.4、权限管理

五、代码实现 

1、ApplicationController控制类

2、ApplicationServiceImpl实现类

六、源码获取

一、前言

    招聘系统将为招聘者和求职者构建一个功能齐全、方便快捷的招聘平台,减少双方投入招聘活动的成本,为招聘求职双方带来便利,系统将实现如下目标: (1)针对系统内的不同角色,系统能够赋予其不同的操作权限。招聘者和求职者可以通过此系统进行招聘和求职工作。招聘者可以在系统进行职位的发布和下架,同时可以查看收到的投递简历,对应聘简历进行筛选,对于符合招聘需求的求职者预约面试;求职者可以通过此系统进行职位查看、收藏、简历制作和投递、查看投递状况和面试情况等操作;平台管理员能够管理职位类别和对企业信息、职位进行审核。

二、系统设计 1、系统运行环境

开发系统:Windows10

架构模式:MVC/前后端分离

JDK版本:Java JDK1.8

开发工具:IDEA

数据库版本: mysql5.7

数据库可视化工具: SQL yog或Navicat for MySQL

服务器:SpringBoot自带 apache tomcat

主要技术:Java、SpringBoot、MyBatis-plus、MySQL、Html、Vue、Elementui等

2、系统架构设计

三、需求分析简介

    招聘平台系统的用户共分为三类:个人用户、企业用户、管理员。

1、个人用户

    求职用户首先完成注册登录,维护自己的简历信息,也可以实时浏览企业发布的招聘信息,按自己的要求筛选出合适的企业从而决定投递简历、可以收藏职位、关注企业,并可以在企业应答之后收到相应的回复、查看面试信息等。求职用户的用例图如图3-1所示。

                                图3-1 个人用户用例图

2、企业用户

    企业用户首先注册将用户信息录入系统,登录后先完成企业认证等待系统管理员审核,审核通过后发布招聘岗位,也可以实时浏览求职者投递的简历进行筛选,简历通过的就可以发送面试通知。企业用户的用例图如图3-2所示。

                                  图3-2 企业用户用例图

3、管理员

    管理员首先完成注册登录,可以进行用户管理、角色管理以及授予系统权限,手动操作企业认证审核的流程、手动操作职位认证审核以及职位分类的管理维护。管理员的用例图如图3-3所示。

                                 图3-3 管理员用例图

四、功能截图

注意:这里只是展示部分功能界面。

项目演示:

点击这里查看

1、系统首页

 注意:部分截图。

2、求职用户功能界面 2.1、首页

2.2、我的收藏

2.3、我的简历

    求职者填写完简历信息后,点击简历预览系统自动组装成简历,求职者可以点击导出简历按钮获取自己的简历去打印。

2.4、简历投递状态

3、企业用户功能界面 3.1、首页 

3.2、企业信息维护与认证

3.3、发布职位

3.4、约面试

4、管理员功能界面 4.1、首页

4.2、企业认证审核

4.3、职位认证审核

4.4、权限管理

五、代码实现  1、ApplicationController控制类 @RestController @RequestMapping("/recruit/application") @PermissionModule(value = "申请") public class ApplicationController { @Autowired private ApplicationService applicationService; @Autowired private InterviewService interviewService; /** * 投递简历——添加申请 * @return CreatedVO */ @Logger(template = "投递简历") @PostMapping("") @GroupRequired @PermissionMeta(value = "投递简历") public CreatedVO create(@RequestBody ApplicationDO applicationDO) { applicationService.create(applicationDO); return new CreatedVO(7000); } /** * 根据申请id修改状态state * @param id id * @param state state * @return UpdatedVO */ @Logger(template = "处理简历") @PutMapping("/state/{id}") @GroupRequired @PermissionMeta(value = "申请审核") public UpdatedVO update(@PathVariable @Positive(message = "{id.positive}") Integer id, @RequestParam Integer state) { // 根据id查找申请 ApplicationDO applicationDO = applicationService.getById(id); if (applicationDO == null) { throw new NotFoundException(70000); } // 更新申请状态 applicationService.updateState(id, state); // 若简历通过则插入面试表,初始状态为0,未面试 if(state==1){ InterviewDO interviewDO=new InterviewDO(); interviewDO.setResumeId(applicationDO.getResumeId()); interviewDO.setHrId(applicationDO.getHrId()); interviewDO.setUserId(applicationDO.getUserId()); interviewDO.setCompanyId(applicationDO.getCompanyId()); interviewDO.setPositionId(applicationDO.getPositionId()); interviewDO.setStatus(0); interviewService.getBaseMapper().insert(interviewDO); } return new UpdatedVO(7100); } /** * 根据id撤销申请(只有未处理的申请才可以撤销,即state=0的申请才可以撤销) * @param id id * @return DeletedVO */ @Logger(template = "撤销职位申请") @DeleteMapping("/{id}") @GroupRequired @PermissionMeta(value = "撤销申请") public DeletedVO delete(@PathVariable @Positive(message = "{id.positive}") Integer id) { // 根据id查找申请 ApplicationDO applicationDO = applicationService.getById(id); if (applicationDO == null) { throw new NotFoundException(70000); } applicationService.removeById(id); return new DeletedVO(7200); } /** * 根据用户id和职位id查询申请表,避免重复投递同个岗位 * @param positionId positionId * @param userId userId * @return Boolean */ @GetMapping("") public Boolean get(@RequestParam Integer positionId, @RequestParam Integer userId) { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("position_id", positionId).eq("user_id", userId); ApplicationDO applicationDO = applicationService.getOne(wrapper); if (applicationDO == null) { return true; } return false; } /** * 根据hr_id查询该hr接收到的所有简历,并且根据state区分申请的状态 * @param count count * @param page page * @param hrID hrID * @param state state * @return 应聘简历 */ @Logger(template = "查看应聘简历") @GetMapping("/page/{hrID}") @GroupRequired @PermissionMeta(value = "简历管理") public PageResponseVO page( @RequestParam(name = "count", required = false, defaultValue = "10") @Min(value = 1, message = "{page.count.min}") @Max(value = 30, message = "{page.count.max}") Integer count, @RequestParam(name = "page", required = false, defaultValue = "0") @Min(value = 0, message = "{page.number.min}") Integer page, @PathVariable(value = "hrID") @Positive(message = "{id.positive}") Integer hrID, @RequestParam Integer state ) { return applicationService.getByHrId(count, page, hrID, state); } /** * 根据hr_id查询该hr接收到的所有简历,并且根据简历的分数进行排序 * @param count count * @param page page * @param hrID hrID * @return 简历排序 */ @GroupRequired @PermissionMeta(value = "简历排序") @GetMapping("/sort/{hrID}") public PageResponseVO sort( @RequestParam(name = "count", required = false, defaultValue = "10") @Min(value = 1, message = "{page.count.min}") @Max(value = 30, message = "{page.count.max}") Integer count, @RequestParam(name = "page", required = false, defaultValue = "0") @Min(value = 0, message = "{page.number.min}") Integer page, @PathVariable(value = "hrID") @Positive(message = "{id.positive}") Integer hrID ) { return applicationService.sort(count, page, hrID); } /** * 根据user_id查询用户的所有申请,并且根据state区分申请的状态 * @param count count * @param page page * @param userId userId * @return 我的投递箱 */ @Logger(template = "查看简历投递状况") @GetMapping("/page/find/{userId}") @GroupRequired @PermissionMeta(value = "我的投递箱") public PageResponseVO pageByUserId( @RequestParam(name = "count", required = false, defaultValue = "10") @Min(value = 1, message = "{page.count.min}") @Max(value = 30, message = "{page.count.max}") Integer count, @RequestParam(name = "page", required = false, defaultValue = "0") @Min(value = 0, message = "{page.number.min}") Integer page, @PathVariable(value = "userId") @Positive(message = "{id.positive}") Integer userId ) { PageResponseVO res = applicationService.getByUserId(count, page, userId); return res; } } 2、ApplicationServiceImpl实现类 @Slf4j @Service public class ApplicationServiceImpl extends ServiceImpl implements ApplicationService { @Resource private ApplicationMapper applicationMapper; @Autowired private ResumeService resumeService; @Override public boolean create(ApplicationDO applicationDO) { UserDO localUser = LocalUser.getLocalUser(); if (localUser == null) { throw new RuntimeException("用户信息为空"); } applicationDO.setUserId(localUser.getId()); applicationDO.setState(1); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(ResumeDO::getUserId, localUser.getId()); ResumeDO resumeDO = this.resumeService.getBaseMapper().selectOne(queryWrapper); if (resumeDO == null) { throw new RuntimeException("求职者简历信息不存在,请先填写简历!!!"); } applicationDO.setResumeId(resumeDO.getId()); return applicationMapper.insert(applicationDO) > 0; } @Override public PageResponseVO getByHrId(Integer count, Integer page, Integer hrID, Integer state) { Page pager = new Page(page, count); IPage paging = applicationMapper.getByHrId(pager, hrID, state); return PageUtil.build(paging); } @Override public boolean updateState(Integer id, Integer state) { return applicationMapper.updateState(id, state); } @Override public PageResponseVO sort(Integer count, Integer page, Integer hrID) { Page pager = new Page(page, count); IPage paging = applicationMapper.sortByGrade(pager, hrID); return PageUtil.build(paging); } @Override public PageResponseVO getByUserId(Integer count, Integer page, Integer userId) { Page pager = new Page(page, count); IPage paging = applicationMapper.getByUserId(pager, userId); return PageUtil.build(paging); } } 六、源码获取

 大家点赞、收藏、关注、评论啦 、关注下方公众号获取联系方式👇🏻👇🏻



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3