Java项目:人才求职招聘管理系统(java+SpringBoot+FreeMarker+JPA+Mysql)

源码获取:俺的博客首页 "资源" 里下载!

项目介绍

基于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 访问的是后台管理页面

 

 

 

 

 

管理员控制类:

/**
 * 管理员控制类
 *
 */
@RequestMapping("/admin/admin")
@Controller
public class AdminController {

	@Autowired 
	private AdminService adminService; 
	
	@Autowired
	private OperaterLogService  operaterLogService; 
	
	
	
	/**
	 * 后台管理员管理
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/my_info",method=RequestMethod.GET)
	public String myInfo(Model model){
		return "admin/admin/my_info";
	}
	
	/**
	 * 后台管理员信息列表
	 * @param request
	 * @param page
	 * @return
	 */
	@RequestMapping(value="/my_info_list",method=RequestMethod.POST)
	@ResponseBody
	public  Map<String, Object>  myInfoList(HttpServletRequest request,Page page){
		Map<String, Object> ret = new HashMap<String, Object>();
		Admin admin = (Admin) request.getSession().getAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY);
		List<Admin> findList = adminService.findAdminList(admin.getId(),page.getOffset(), page.getRows());
		ret.put("rows", findList);
		ret.put("total", 1);
		return ret; 
	}
	
	/**
	 * 管理员信息修改处理
	 * @param admin
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(Admin admin)
	{
		if(admin == null)
		{
			return Result.error(CodeMsg.DATA_ERROR);
		}
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(admin);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//判断有无接收到对应管理员的id
		if(admin.getId() == null || admin.getId().longValue() <= 0)
		{
			return Result.error(CodeMsg.USER_EDIT_ID_EMPTY);
		}
		
		Admin findAdmin = adminService.find(admin.getId());
		//将提交的管理员信息指定字段复制到已存在的admin对象findAdmin中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(admin, findAdmin, "id","createTime","updateTime");
		
		//进行修改操作
		if(adminService.save(findAdmin) == null)
		{
			return Result.error(CodeMsg.USER_EDIT_ERROR);
		}
		//添加操作日志
		OperaterLog operaterLog  = new OperaterLog();
		operaterLog.setOperator("【"+findAdmin.getAdminName()+"】:");
		operaterLog.setContent("修改了管理员信息:【"+findAdmin+"】。");
		operaterLogService.save(operaterLog);
		
		return Result.success(true);
	}
	
}

用户管理控制层:

/**
 * 后端用户管理控制器
 *
 */
@RequestMapping("/admin/user")
@Controller
public class UserController {

	@Autowired
	private UserService userService;
	
	@Autowired
	private ResumeService resumeService;
	
	@Autowired
	private WorkExperienceService workExperienceService;
	
	@Autowired
	private WorkShowService workShowService;
	
	@Autowired 
	private ProjectExperienceService projectExperienceService;
	
	@Autowired
	private ExpectWorkService expectWorkService;
	
	@Autowired
	private EducationBackgroundService educationBackgroundService;
	
	@Autowired 
	private CompanyService companyService;
	
	@Autowired
	private PositionService PositionService;
	
	/**
	 * 后台用户管理信息页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/user_info",method=RequestMethod.GET)
	public String myInfo(Model model){
		return "admin/admin/user_info";
	}
	

	/**
	 * 后台用户信息列表
	 * @param request
	 * @param page
	 * @return
	 */
	@RequestMapping(value="/user_info_list",method=RequestMethod.POST)
	@ResponseBody
	public  Map<String, Object>  userInfoList(HttpServletRequest request,Page page){
		Map<String, Object> ret = new HashMap<String, Object>();
		List<User> findAllUserList = userService.findAllUserList(page.getOffset(), page.getRows());
		ret.put("rows", findAllUserList);
		ret.put("total", userService.total());
		return ret; 
	}
	
	
	/**
	 * 删除用户
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		User user = userService.find(id);
		try {
			if(user.getType() == 1) {
				//如果用户身份是招聘者
				Company findCompany = companyService.findByUserId(id);
				if(findCompany != null) {
					//删除该用户认证的公司下所有简历
					List<Resume> findResumeList = resumeService.findByCompanyId(findCompany.getId());
					for(Resume resume : findResumeList) {
						resumeService.delete(resume.getId());
					}
					//删除该用户认证的公司下所有职位
					List<Position> findPositionList = PositionService.findPositionByCompanyId(findCompany.getId());
					for(Position position : findPositionList) {
						PositionService.delete(position.getId());
					}
					//删除该用户所属公司
					companyService.delete(findCompany.getId());
				}
			}
			if(user.getType() == 0) {
				//如果用户身份是应聘者
				//删除该用户的所有简历
				List<Resume> findResume = resumeService.findByUserId(id);
				for(Resume resume : findResume) {
					resumeService.delete(resume.getId());
				}
				//删除该用户的工作经验
				WorkExperience findWorkExperience = workExperienceService.findWorkExperienceByUserId(id);
				if(findWorkExperience != null) {
					workExperienceService.delete(findWorkExperience.getId());
				}
				//删除该用户的作品展示
				WorkShow findWorkShow = workShowService.findWorkShowByUserId(id);
				if(findWorkShow != null) {
					workShowService.delete(findWorkShow.getId());
				}
				//删除该用户的项目经验
				ProjectExperience findProjectExperience = projectExperienceService.findProjectExperienceByUserId(id);
				if(findProjectExperience != null) {
					projectExperienceService.delete(findProjectExperience.getId());
				}
				//删除该用户的期望工作
				ExpectWork findExpectWork = expectWorkService.findExpectWorkByUserId(id);
				if(findExpectWork != null) {
					expectWorkService.delete(findExpectWork.getId());
				}
				//删除该用户的教育背景
				EducationBackground findEducationBackground = educationBackgroundService.findEducationBackgroundByUserId(id);
				if(findEducationBackground != null) {
					educationBackgroundService.delete(findEducationBackground.getId());
				}
			}
			//最后删除该用户
			userService.delete(id);
		}catch(Exception e){
			e.printStackTrace();
			return Result.error(CodeMsg.FOREIGN_KEY_RESTRAIN);
		}
		
		return Result.success(true);
	}
}

后端公司管理控制器:

/**
 *后端公司管理控制器
 *
 */
@RequestMapping("/admin/company")
@Controller
public class CompanyController {

	@Autowired
	private CompanyService companyService;
	
	@Autowired
	private ResumeService resumeService;
	
	@Autowired
	private PositionService positionService;
	
	/**
	 * 后台公司管理信息页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public String list(Model model){
		return "admin/company/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<Company> findCompanyList = companyService.findCompanyList(state, page.getOffset(), page.getRows());
			ret.put("rows", findCompanyList);
			ret.put("total", companyService.getCompanyTotal(state));
		}else {
			//如果state为空
			List<Company> findAllCompanyList = companyService.findAllCompanyList(page.getOffset(), page.getRows());
			ret.put("rows", findAllCompanyList);
			ret.put("total", companyService.total());
		}
		
		return ret; 
	}
	
	/**
	 * 改变公司状态
	 * @param request
	 * @param page
	 * @return
	 */
	@RequestMapping(value="/change_state",method=RequestMethod.POST)
	@ResponseBody
	public  Result<Boolean> changeState(Company company){
		if(company == null) {
			return Result.error(CodeMsg.DATA_ERROR);
		}
		Company findCompany = companyService.find(company.getId());
		findCompany.setState(company.getState());
		if(companyService.save(findCompany) == null) {
			return Result.error(CodeMsg.COMPANY_CHANGE_STATE_ERROR);
		}
		return Result.success(true); 
	}
	
	/**
	 *删除公司
	 * @param request
	 * @param page
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public  Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			List<Resume> findResumeList = resumeService.findByCompanyId(id);
			//先删除该公司所有的简历
			for(Resume resume : findResumeList) {
				resumeService.delete(resume.getId());
			}
			//再删除该公司所有职位
			List<Position> findPositionList = positionService.findPositionByCompanyId(id);
			for(Position position : findPositionList) {
				positionService.delete(position.getId());
			}
			//最后删除公司
			companyService.delete(id);
		}catch(Exception e) {
			e.printStackTrace();
			return Result.error(CodeMsg.FOREIGN_KEY_RESTRAIN);
		}
	
		return Result.success(true); 
	}
	
}

源码获取:俺的博客首页 "资源" 里下载!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Boot是一个基于Spring框架的快速开发脚手架,它可以帮助开发者更快速地构建独立可执行的、生产级的Spring应用程序。FreeMarker是一个模板引擎,它与Spring Boot的集成可以方便地生成动态HTML页面。Bootstrap是一个响应式的前端开发框架,它可以提供丰富的CSS样式和JavaScript组件,使得界面开发更加简洁美观。 在使用Spring BootFreeMarker搭建项目时,可以利用FreeMarker的模板引擎特性快速生成动态HTML页面,同时使用Bootstrap提供的样式和组件可以使得页面更加美观。在项目中,可以利用Spring Boot的注解驱动特性方便地开发后端业务逻辑,同时集成MySql数据库实现数据的持久化存储和管理。 通过Spring Boot的自动配置特性,我们可以使用简单的配置即可集成MySql数据库,通过JPA或MyBatis等持久化框架可以方便地实现对数据库的操作。在项目中,可以实现用户的增删改查等功能,通过自定义的Controller接口可以响应前端的请求,并进行相应的数据处理和返回。 总而言之,使用Spring BootFreeMarkerBootstrap搭建的项目可以快速实现Web应用的开发和管理。Spring Boot提供了丰富的特性和自动配置,使得项目开发更加简单高效;FreeMarkerBootstrap相结合可以实现动态和美观的前端页面;而MySql数据库的集成则可以方便地实现数据的持久化存储和管理。这样的项目结构和技术栈可以在实际开发中提高开发效率,并且具备良好的扩展性和维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值