基于SpringBoot+Vue的就业求职招聘信息平台

目录

一、项目介绍 

二、项目主要技术

三、系统分析

3.1 系统功能分析和描述

3.2 系统UML用例分析 

3.2.1 管理员用例

3.2.2 用户用例 

四、系统设计

4.1 系统体系结构 

4.2 数据库设计原则

五、系统实现

5.1 前端功能模块的实现

5.1.1 用户登录

5.1.2 首页

5.1.3 校园招聘

5.1.4 招聘信息详情

5.2 管理员功能模块

 5.2.1 用户管理基础数据功能模块 

 5.2.2 管理招聘类型模块

5.3 企业功能模块

5.3.1 招聘信息管理

5.3.2 应聘信息管理

六、实现代码

一、项目介绍 

随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于就业求职招聘信息平台当然也不能排除在外,随着网络技术的不断成熟,带动了就业求职招聘信息平台,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。就业求职招聘信息平台,主要的模块包括管理员;系统首页、个人中心、用户管理、企业管理、招聘类型管理、校园招聘管理、招聘信息管理、应聘信息管理、面试通知管理、求职人才管理、在线留言、系统管理,企业;系统首页、个人中心、校园招聘管理、招聘信息管理、应聘信息管理、面试通知管理,用户;系统首页、个人中心、应聘信息管理、面试通知管理、求职人才管理,前台系统首页;首页、校园招聘、招聘信息、求职人才、通知公告、在线留言、后台管理、个人中心等功能。系统中管理员主要是为了安全有效地存储和管理各类信息,还可以对系统进行管理与更新维护等操作,并且对系统管理有相应的操作权限。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对就业求职招聘信息平台而言非常有利。

本系统采用的数据库是Mysql,使用SpringBoot框架开发,运行环境使用Tomcat服务器,ECLIPSE是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

二、项目主要技术

开发语言:Java
 
使用框架:spring boot
 
前端技术:JavaScript、Vue 、css3
 
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
 
数据库:MySQL 5.7/8.0
 
数据库管理工具:phpstudy/Navicat
 
JDK版本:jdk1.8
 
Maven: apache-maven 3.8.1-bin

三、系统分析

3.1 系统功能分析和描述

使用就业求职招聘信息平台分为管理员、企业、用户三个角色的权限子模块。

管理员所能使用的功能主要有:系统首页、个人中心、用户管理、企业管理、招聘类型管理、校园招聘管理、招聘信息管理、应聘信息管理、面试通知管理、求职人才管理、在线留言、系统管理等。

企业可以实现系统首页、个人中心、校园招聘管理、招聘信息管理、应聘信息管理、面试通知管理等。

用户可以实现系统首页、个人中心、应聘信息管理、面试通知管理、求职人才管理等。

3.2 系统UML用例分析

3.2.1 管理员用例

管理员登录后可进行系统首页、个人中心、用户管理、企业管理、招聘类型管理、校园招聘管理、招聘信息管理、应聘信息管理、面试通知管理、求职人才管理、在线留言、系统管理,管理员的用例如图

3.2.2 用户用例

用户注册登录后可进行系统首页、个人中心、应聘信息管理、面试通知管理、求职人才管理,用户用例如图

四、系统设计

4.1 系统体系结构

这些功能可以充分满足就业求职招聘信息平台的需求。此系统功能较为全面如下图系统功能结构如图

4.2 数据库设计原则

每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。

就业求职招聘信息平台的数据流程:

数据库设计是开发中比较重要的一步,需要先设计整体的表,确定项目,必须要确定几张表,设计表的结构,表之间的关联关系等,只有这样才能保证系统的稳固性。数据库主要是为了存储整个项目的数据,确保数据的安全性。整个表都包含项目中实体的各个字段和属性,我们通常用概念性模型来设计即为E-R模型。

五、系统实现

5.1 前端功能模块的实现

5.1.1 用户登录

用户进入前端,输入自己的账号和密码,并选择对应的角色进行系统登录操作,如图

5.1.2 首页

用户登陆系统后,可以对首页、校园招聘、招聘信息、求职人才、通知公告、在线留言、后台管理、个人中心进行详细操作,如图所示。 

5.1.3 校园招聘

5.1.4 招聘信息详情

5.2 管理员功能模块

5.2.1 用户管理基础数据功能模块 

管理员登录系统之后,查看后端管理界面,可以选择用户管理信息,点击之后,网站会获取数据库查询的所有的用户的信息,选择某个用户信息并将此的信息返回给详情界面的HTML,展示和渲染出来。然后开源对用户的信息进行增删改查等操作。实现效果如图

5.2.2 管理招聘类型模块

5.3 企业功能模块

5.3.1 招聘信息管理

5.3.2 应聘信息管理

六、实现代码

/**
 * 用户账户:用于保存用户登录信息(User)表控制层
 */
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {
    /**
     * 服务对象
     */
    @Autowired
    public UserController(UserService service) {
        setService(service);
    }
 
    /**
     * Token服务
     */
    @Autowired
    private AccessTokenService tokenService;
 
    @Autowired
    private UserGroupService userGroupService;
 
    /**
     * 注册
     * @param user
     * @return
     */
    @PostMapping("register")
    public Map<String, Object> signUp(@RequestBody User user) {
        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",user.getUsername());
        List list = service.select(query, new HashMap<>()).getResultList();
        if (list.size()>0){
            return error(30000, "用户已存在");
        }
        user.setUserId(null);
        user.setPassword(service.encryption(user.getPassword()));
        service.save(user);
        return success(1);
    }
 
    /**
     * 找回密码
     * @param form
     * @return
     */
    @PostMapping("forget_password")
    public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        String username = form.getUsername();
        String code = form.getCode();
        String password = form.getPassword();
        // 判断条件
        if(code == null || code.length() == 0){
            return error(30000, "验证码不能为空");
        }
        if(username == null || username.length() == 0){
            return error(30000, "用户名不能为空");
        }
        if(password == null || password.length() == 0){
            return error(30000, "密码不能为空");
        }
 
        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",username);
        Query select = service.select(query, service.readConfig(request));
        List list = select.getResultList();
        if (list.size() > 0) {
            User o = (User) list.get(0);
            JSONObject query2 = new JSONObject();
            JSONObject form2 = new JSONObject();
            // 修改用户密码
            query2.put("user_id",o.getUserId());
            form2.put("password",service.encryption(password));
            service.update(query, service.readConfig(request), form2);
            return success(1);
        }
        return error(70000,"用户不存在");
    }
 
    /**
     * 登录
     * @param data
     * @param httpServletRequest
     * @return
     */
    @PostMapping("login")
    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
        log.info("[执行登录接口]");
 
        String username = data.get("username");
        String email = data.get("email");
        String phone = data.get("phone");
        String password = data.get("password");
 
        List resultList = null;
        Map<String, String> map = new HashMap<>();
        if(username != null && "".equals(username) == false){
            map.put("username", username);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(email != null && "".equals(email) == false){
            map.put("email", email);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(phone != null && "".equals(phone) == false){
            map.put("phone", phone);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }else{
            return error(30000, "账号或密码不能为空");
        }
        if (resultList == null || password == null) {
            return error(30000, "账号或密码不能为空");
        }
        //判断是否有这个用户
        if (resultList.size()<=0){
            return error(30000,"用户不存在");
        }
 
        User byUsername = (User) resultList.get(0);
 
 
        Map<String, String> groupMap = new HashMap<>();
        groupMap.put("name",byUsername.getUserGroup());
        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
        if (groupList.size()<1){
            return error(30000,"用户组不存在");
        }
 
        UserGroup userGroup = (UserGroup) groupList.get(0);
 
        //查询用户审核状态
        if (!StringUtils.isEmpty(userGroup.getSourceTable())){
            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
            String res = String.valueOf(service.runCountSql(sql).getSingleResult());
            if (res==null){
                return error(30000,"用户不存在");
            }
            if (!res.equals("已通过")){
                return error(30000,"该用户审核未通过");
            }
        }
 
        //查询用户状态
        if (byUsername.getState()!=1){
            return error(30000,"用户非可用状态,不能登录");
        }
 
        String md5password = service.encryption(password);
        if (byUsername.getPassword().equals(md5password)) {
            // 存储Token到数据库
            AccessToken accessToken = new AccessToken();
            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
            accessToken.setUser_id(byUsername.getUserId());
            tokenService.save(accessToken);
 
            // 返回用户信息
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
            user.put("token", accessToken.getToken());
            JSONObject ret = new JSONObject();
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(30000, "账号或密码不正确");
        }
    }
 
    /**
     * 修改密码
     * @param data
     * @param request
     * @return
     */
    @PostMapping("change_password")
    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
        // 根据Token获取UserId
        String token = request.getHeader("x-auth-token");
        Integer userId = tokenGetUserId(token);
        // 根据UserId和旧密码获取用户
        Map<String, String> query = new HashMap<>();
        String o_password = data.get("o_password");
        query.put("user_id" ,String.valueOf(userId));
        query.put("password" ,service.encryption(o_password));
        Query ret = service.count(query, service.readConfig(request));
        List list = ret.getResultList();
        Object s = list.get(0);
        int count = Integer.parseInt(list.get(0).toString());
        if(count > 0){
            // 修改密码
            Map<String,Object> form = new HashMap<>();
            form.put("password",service.encryption(data.get("password")));
            service.update(query,service.readConfig(request),form);
            return success(1);
        }
        return error(10000,"密码修改失败!");
    }
 
    /**
     * 登录态
     * @param request
     * @return
     */
    @GetMapping("state")
    public Map<String, Object> state(HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        // 获取状态
        String token = request.getHeader("x-auth-token");
 
        // 根据登录态获取用户ID
        Integer userId = tokenGetUserId(token);
 
        log.info("[返回userId] {}",userId);
        if(userId == null || userId == 0){
            return error(10000,"用户未登录!");
        }
 
        // 根据用户ID获取用户
        Map<String,String> query = new HashMap<>();
        query.put("user_id" ,String.valueOf(userId));
 
        // 根据用户ID获取
        Query select = service.select(query,service.readConfig(request));
        List resultList = select.getResultList();
        if (resultList.size() > 0) {
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
            user.put("token",token);
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(10000,"用户未登录!");
        }
    }
  
 
    /**
     * 获取登录用户ID
     * @param token
     * @return
     */
    public Integer tokenGetUserId(String token) {
        log.info("[获取的token] {}",token);
        // 根据登录态获取用户ID
        if(token == null || "".equals(token)){
            return 0;
        }
        Map<String, String> query = new HashMap<>(16);
        query.put("token", token);
        AccessToken byToken = tokenService.findOne(query);
        if(byToken == null){
            return 0;
        }
        return byToken.getUser_id();
    }
 
    /**
     * 重写add
     * @return
     */
    @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        Map<String,Object> map = service.readBody(request.getReader());
        map.put("password",service.encryption(String.valueOf(map.get("password"))));
        service.insert(map);
        return success(1);
    }
 
}

 

此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!

2600多套项目欢迎咨询

  • 38
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值