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

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

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

2023-12-02 15:02| 来源: 网络整理| 查看: 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

目录

一、前言

二、系统设计

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