SpringBoot+Vue项目小区物业管理系统

文末获取源码

开发语言:Java

框架:springboot+vue

Node:node.js

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/idea,Visual 

Maven包:Maven3.3.9

浏览器:谷歌浏览器

目录

一、前言介绍 

二、系统功能 

2.1业主模块

2.2来访人员模块

2.3管理员模块

2.4系统功能结构图

三、系统详细设计 

3.1前台首页模块

3.2报修申请模块

3.3投票中心模块

3.4投票详情模块

3.5反馈中心模块

四、管理员功能模块 

4.1轮播图模块

4.2业主模块

4.3来访人员管理模块

4.4投票中心模块

4.5反馈管理模块

五、部分核心代码 

5.1用户登录的逻辑代码

5.2投票中心关键代码

5.3报修申请添加关键代码

5.4系统业主管理关键代码

5.5来访人员信息添加关键代码

5.6投票添加关键代码如


一、前言介绍 

本次设计基于B/S 模式下,运用Java技术采用的是MySQL数据库和IDEA实现。本设计主要实现集人性化、高效率、便捷等优点于一身的小区物业管理系统,完成用户管理、来访人员管理、设备管理、投票中心、投票管理、反馈管理等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。小区物业管理系统使用Java语言,采用基于 MVC模式的SpringBoot技术进行开发,使用 IDEA编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介。

二、系统功能 

小区物业管理系统整个系统主要分为两个部分:管理员和业主、来访人员,每个模块下的分支功能不一样。对功能做出如下说明:

2.1业主模块

账号注册。

账号登录认证。

管理个人资料信息,修改可修改的信息项。

提交报修申请,同时查看历史已提交的报修申请记录。

投票查询,同时查看历史已录入投票的记录。

反馈中心查询,同时查看历史已反馈的记录。

2.2来访人员模块

报修申请查询,查询当前小区的报修申请的信息。

投票中心,对当前小区的业主录入每个月的投票情况。

2.3管理员模块

来访人员管理:对来访人员进行维护,添加、删除、修改信息。

设备信息管理:对设备信息进行维护,添加、删除、修改信息。

投票中心信息管理:对投票中心信息进行维护,添加、删除、修改信息。

对反馈信息进行处理:办理反馈信息审核等。

查看业主提交的报修申请数据,管理员有权利维护它。

2.4系统功能结构图

SpringBoot+Vue项目小区物业管理系统_第1张图片 

三、系统详细设计 

3.1前台首页模块

3.2报修申请模块

业主提交报修申请,可以进行新增、查看、修改以及删除等相应的报修申请管理操作。当点击"新增报修申请"的按钮时,在报修申请添加界面进行详细信息的添加操作。当点击"查看报修申请"超级链接时,会显示所选的报修申请的信息,然后点击"返回"再返回到其主页面。 

SpringBoot+Vue项目小区物业管理系统_第2张图片

3.3投票中心模块

SpringBoot+Vue项目小区物业管理系统_第3张图片

3.4投票详情模块

SpringBoot+Vue项目小区物业管理系统_第4张图片

3.5反馈中心模块

SpringBoot+Vue项目小区物业管理系统_第5张图片

四、管理员功能模块 

4.1轮播图模块

SpringBoot+Vue项目小区物业管理系统_第6张图片

4.2业主模块

SpringBoot+Vue项目小区物业管理系统_第7张图片

4.3来访人员管理模块

SpringBoot+Vue项目小区物业管理系统_第8张图片

4.4投票中心模块

SpringBoot+Vue项目小区物业管理系统_第9张图片

4.5反馈管理模块

SpringBoot+Vue项目小区物业管理系统_第10张图片

五、部分核心代码 

5.1用户登录的逻辑代码

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map login(@RequestBody Map 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 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 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, "账号或密码不正确");

        }

}

5.2投票中心关键代码

@PostMapping("/set")

@Transactional

    public Map set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

}

    public Map readConfig(HttpServletRequest request){

        Map map = new HashMap<>();

        map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));

        map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));

        map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));

        map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));

        map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));

        map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));

        map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));

        map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));

        return map;

}

    public Map readQuery(HttpServletRequest request){

        String queryString = request.getQueryString();

        if (queryString != null && !"".equals(queryString)) {

            String[] querys = queryString.split("&");

            Map map = new HashMap<>();

            for (String query : querys) {

                String[] q = query.split("=");

                map.put(q[0], q[1]);

            }

            map.remove(FindConfig.PAGE);

            map.remove(FindConfig.SIZE);

            map.remove(FindConfig.LIKE);

            map.remove(FindConfig.ORDER_BY);

            map.remove(FindConfig.FIELD);

            map.remove(FindConfig.GROUP_BY);

            map.remove(FindConfig.MAX_);

            map.remove(FindConfig.MIN_);

            return map;

        }else {

            return new HashMap<>();

        }

}

    @Transactional

    public void update(Map query,Map config,Map body){

        StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");

        for (Map.Entry entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");

            }else {

                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");

            }

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));

        log.info("[{}] - 更新操作:{}",table,sql);

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

}

    public String toWhereSql(Map query, Boolean like) {

        if (query.size() > 0) {

            try {

                StringBuilder sql = new StringBuilder(" WHERE ");

                for (Map.Entry entry : query.entrySet()) {

                    if (entry.getKey().contains(FindConfig.MIN_)) {

                        String min = humpToLine(entry.getKey()).replace("_min", "");

                        sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");

                        continue;

                    }

                    if (entry.getKey().contains(FindConfig.MAX_)) {

                        String max = humpToLine(entry.getKey()).replace("_max", "");

                        sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");

                        continue;

                    }

                    if (like == true) {

                        sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");

                    } else {

                        sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");

                    }

                }

                sql.delete(sql.length() - 4, sql.length());

                sql.append(" ");

                return sql.toString();

            } catch (UnsupportedEncodingException e) {

                log.info("拼接sql 失败:{}", e.getMessage());

            }

        }

        return "";

    }

5.3报修申请添加关键代码

 @PostMapping("/add")

    @Transactional

    public Map add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map addMap(Map map){

        service.insert(map);

        return success(1);

}

    public Map readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

}

    public void insert(Map body){

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

        log.info("[{}] - 插入操作:{}",table,sql);

        Query query = runCountSql(sql.toString());

        query.executeUpdate();

    }

5.4系统业主管理关键代码

@RequestMapping("/get_list")

    public Map getList(HttpServletRequest request) {

        Map map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

}

5.5来访人员信息添加关键代码

@RequestMapping(value = {"/count_group", "/count"})

    public Map count(HttpServletRequest request) {

        Query count = service.count(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

5.6投票添加关键代码如

@RequestMapping("/get_list")

    public Map getList(HttpServletRequest request) {

        Map map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

}

你可能感兴趣的:(毕业设计,课程设计,spring,boot,vue.js,java,小区物业管理系统,后端)