基于javaweb的SpringBoot人才求职招聘管理系统(java+springboot+freemarker+jpa+mysql+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

030023512402

040023512402

050023512402

060023512402

070023512402

090023512402

基于javaweb的SpringBoot人才求职招聘管理系统(java+springboot+freemarker+jpa+mysql+maven)

项目介绍

基于SpringBoot框架开发的求职招聘管理系统。 本项目分三种角色:管理员、招聘人员、求职者。 用户可以以两种身份注册登录,一种是求职者,另一种是招聘者。 求职者可以浏览查询公司信息、职位信息,并且可以填写自己的简历,然后给自己心仪的职位投递简历。招聘者可以填写自己公司的信息,然后进行认证申请, 申请通过后,就可以进行发布职位,接收求职者投递来简历,并且进行审核和通知。 除此之外,该项目还附带后台管理功能,管理员可以登录后台管系统,进行职位类别添加、管理用户信息、通过审核来更改公司、职位的状态等。 项目功能:注册(引入邮箱验证码功能)、登录、修改密码、按条件查询、填写我的简历、填写公司信息、投递简历、发布职位、接收简历等等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;  4.数据库:MySql 5.7版本; 5.是否Maven项目:是;

技术栈

SpringBoot + FreeMarker + JPA

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application-dev.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,项目运行成功后,在浏览器中输入网址: http://localhost:8082/home/index/index 访问的是网站首页面 http://localhost:8082/admin/system/login 访问的是后台管理页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
		if("effective".equals(findById.getState()) || "wait".equals(findById.getState())) {
position.setState("wait");
}else if("out".equals(findById.getState())) {
position.setState("out");
}
BeanUtils.copyProperties(position, findById, "id","createTime","updateTime","number");
if(positionService.save(findById) == null) {
return Result.error(CodeMsg.POSITION_SAVE_ERROR);
}
if("effective".equals(findById.getState()) || "wait".equals(findById.getState())) {
return Result.error(url_way_one); //前往待处理职位页面
}else{
return Result.error(url_way_two); //前往已下线职位页面
}
}else {
//添加
position.setState("wait");
if(positionService.save(position) == null) {
return Result.error(CodeMsg.POSITION_SAVE_ERROR);
}
return Result.error(url_way_one); //前往待处理职位页面
}

}

/**
* 删除职位信息
* @param id
* @param request
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> deletePosition(@RequestParam(name="id",required=true)Long id)
{
try {
List<Resume> findByPositionId = resumeService.findByPositionId(id);
//删除该职位下所有简历
for(Resume resume : findByPositionId)
{
resumeService.delete(resume.getId());
}
positionService.delete(id);
}catch(Exception e) {
e.printStackTrace();
return Result.error(CodeMsg.POSITION_SAVE_ERROR);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 * 删除简历
* @param request
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> delete(HttpServletRequest request,@RequestParam(name="id",required=true)Long id)
{
try {
resumeService.delete(id);
}catch(Exception e) {
return Result.error(CodeMsg.RESUME_DELETE_ERROR);
}
return Result.success(true);
}


/**
* 投递简历
* @param request
* @return
*/
@RequestMapping(value="/submit_resume",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> submitResume(HttpServletRequest request,@RequestParam(name="id",required=true)Long id)
{
User user = (User) request.getSession().getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
WorkExperience workExperience = workExperienceService.findWorkExperienceByUserId(user.getId());
ProjectExperience projectExperience = projectExperienceService.findProjectExperienceByUserId(user.getId());
EducationBackground educationBackground = educationBackgroundService.findEducationBackgroundByUserId(user.getId());
//判断简历必填部分是否填写了
if(workExperience != null && projectExperience != null && educationBackground != null) {
Position findById = positionService.findById(id);
Resume resume = new Resume();
resume.setPosition(findById);
Resume findByPositionIdAndUserId = resumeService.findByPositionIdAndUserId(user.getId(), findById.getId());
if(findByPositionIdAndUserId != null) {
return Result.error(CodeMsg.RESUME_ALREADY_SUBMIT);
}else {
resume.setUser(user);
resume.setCompany(findById.getCompany());
resume.setState("wait");
resumeService.save(resume);
findById.setNumber(findById.getNumber()+1);
positionService.save(findById);
}
}else {
return Result.error(CodeMsg.RESUME_WRITE_NOT_COMPLETE);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

/**
* 保存用户信息
* @param user
* @param request
* @return
*/
@RequestMapping(value="/save",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> saveUserForm(User user,HttpServletRequest request)
{
if(user == null){
return Result.error(CodeMsg.DATA_ERROR);
}
if(StringUtil.isEmpty(user.getUsername())) {
return Result.error(CodeMsg.USER_NAME_EMPTY);
}
if(StringUtil.isEmpty(user.getMobile())) {
return Result.error(CodeMsg.USER_MOBILE_EMPTY);
}
if(user.getMobile().length() != 11) {
return Result.error(CodeMsg.USER_MOBILE_NOT_CORRECT);
}
User session_user = (User) request.getSession().getAttribute("user");
User findById = userService.find(session_user.getId());
if(checkUsername(user,findById.getId())){
return Result.error(CodeMsg.USER_NAME_ALREADY_EXIST);
}
BeanUtils.copyProperties(user, findById, "id","createTime","updateTime","content","type","email","password");
findById.setUpdateTime(new Date());
if(userService.save(findById) == null){
return Result.error(CodeMsg.USER_SAVE_ERROR);
}
//更新权限
request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, userService.find(session_user.getId()));
return Result.success(true);
}

/**
* 保存自我描述信息
* @param content
* @param request
* @return
*/
@RequestMapping(value="/save_self_description",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> saveSelfDescription(String content,HttpServletRequest request)
{
User session_user = (User) request.getSession().getAttribute("user");
session_user.setContent(content);
session_user.setUpdateTime(new Date());
if(userService.save(session_user) == null){
return Result.error(CodeMsg.USER_SAVE_SELF_DESCRIPTION_ERROR);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public Result<Boolean> submitResume(HttpServletRequest request,@RequestParam(name="id",required=true)Long id)
{
User user = (User) request.getSession().getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
WorkExperience workExperience = workExperienceService.findWorkExperienceByUserId(user.getId());
ProjectExperience projectExperience = projectExperienceService.findProjectExperienceByUserId(user.getId());
EducationBackground educationBackground = educationBackgroundService.findEducationBackgroundByUserId(user.getId());
//判断简历必填部分是否填写了
if(workExperience != null && projectExperience != null && educationBackground != null) {
Position findById = positionService.findById(id);
Resume resume = new Resume();
resume.setPosition(findById);
Resume findByPositionIdAndUserId = resumeService.findByPositionIdAndUserId(user.getId(), findById.getId());
if(findByPositionIdAndUserId != null) {
return Result.error(CodeMsg.RESUME_ALREADY_SUBMIT);
}else {
resume.setUser(user);
resume.setCompany(findById.getCompany());
resume.setState("wait");
resumeService.save(resume);
findById.setNumber(findById.getNumber()+1);
positionService.save(findById);
}
}else {
return Result.error(CodeMsg.RESUME_WRITE_NOT_COMPLETE);
}
return Result.success(true);
}

/**
* 保存期望工作信息
* @param expectWork
* @param request
* @return
*/
@RequestMapping(value="/save_expect_work",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> saveExpectWorkForm(ExpectWork expectWork,HttpServletRequest request)
{
if(expectWork == null){
return Result.error(CodeMsg.DATA_ERROR);
}
User session_user = (User) request.getSession().getAttribute("user");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
	if(findCompany == null) {
//先让用户填写名称和价值观基本信息
return Result.error(CodeMsg.COMPANY_NAME_AND_VALUE_PRIORITY);
}else {
//进行修改操作
if("".equals(company.getIntroduction())){
company.setIntroduction(null);
}
company.setState("待审核");
BeanUtils.copyProperties(company, findCompany, "id","createTime","updateTime","tags","user","name","value","photo","productPhoto","productTitle","productContent","locale","territory","scale","url","finance","founderName","founderPosition","founderPhoto");
if(companyService.save(findCompany) == null){
return Result.error(CodeMsg.COMPANY_INTRODUCTION_SAVE_ERROR);
}
}
return Result.success(true);
}

/**
* 保存公司地点、领域、规模和网页信息
* @param company
* @param request
* @return
*/
@RequestMapping(value="/save_company_basic",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> saveCompanyBasic(Company company,HttpServletRequest request)
{
if(company == null){
return Result.error(CodeMsg.DATA_ERROR);
}
//检测公司地点是否为空
if(StringUtil.isEmpty(company.getLocale())) {
return Result.error(CodeMsg.COMPANY_LOCALE_EMPTY);
}
//检测公司领域是否为空
if(StringUtil.isEmpty(company.getTerritory())) {
return Result.error(CodeMsg.COMPANY_TERRITORY_EMPTY);
}
//检测公司规模是否为空
if(StringUtil.isEmpty(company.getScale())) {
return Result.error(CodeMsg.COMPANY_SCALE_EMPTY);
}
//检测公司网址是否为空
if(StringUtil.isEmpty(company.getUrl())) {
return Result.error(CodeMsg.COMPANY_URL_EMPTY);
}

User session_user = (User) request.getSession().getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
Company findCompany = companyService.findByUserId(session_user.getId());
if(findCompany == null) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* 后端职位管理控制器
*
*/
@RequestMapping("/admin/position")
@Controller
public class PositionController {

@Autowired
private PositionService positionService;

/**
* 后台职位管理信息页面
* @param model
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public String list(Model model){
return "admin/position/list";
}

/**
* 获取后台职位信息列表
* @param request
* @param page
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> list(@RequestParam(name="state",required=false,defaultValue="") String state,Page page){
Map<String, Object> ret = new HashMap<String, Object>();
if(!StringUtil.isEmpty(state)) {
//如果state不为空
List<Position> findPositionList = positionService.findPositionList(state, page.getOffset(), page.getRows());
ret.put("rows", findPositionList);
ret.put("total", positionService.getPositionTotal(state));
}else {
//如果state为空
List<Position> findAllPositionList = positionService.findAllPositionList(page.getOffset(), page.getRows());
ret.put("rows", findAllPositionList);
ret.put("total", positionService.total());
}

return ret;
}


项目链接:
https://javayms.github.io?id=511122512008200nh
https://javayms.pages.dev?id=511122512008200nh