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

目录

一、前言介绍 

二、系统功能 

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系统功能结构图

三、系统详细设计

3.1前台首页模块

3.2报修申请模块

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

3.3投票中心模块

3.4投票详情模块

3.5反馈中心模块

四、管理员功能模块 

4.1轮播图模块

4.2业主模块

4.3来访人员管理模块

4.4投票中心模块

4.5反馈管理模块

五、部分核心代码 

5.1用户登录的逻辑代码

/**
 
     * 登录

     * @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, "账号或密码不正确");
 
        }
 
}

5.2投票中心关键代码

@PostMapping("/set")
 
@Transactional
 
    public Map<String, Object> set(HttpServletRequest request) throws IOException {
 
        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
 
        return success(1);
 
}
 
    public Map<String,String> readConfig(HttpServletRequest request){
 
        Map<String,String> 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<String,String> readQuery(HttpServletRequest request){
 
        String queryString = request.getQueryString();
 
        if (queryString != null && !"".equals(queryString)) {
 
            String[] querys = queryString.split("&");
 
            Map<String, String> 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<String,String> query,Map<String,String> config,Map<String,Object> body){
 
        StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
 
        for (Map.Entry<String,Object> 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<String,String> query, Boolean like) {
 
        if (query.size() > 0) {
 
            try {
 
                StringBuilder sql = new StringBuilder(" WHERE ");
 
                for (Map.Entry<String, String> 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<String, Object> add(HttpServletRequest request) throws IOException {
 
        service.insert(service.readBody(request.getReader()));
 
        return success(1);
 
    }
 
    @Transactional
 
    public Map<String, Object> addMap(Map<String,Object> map){
 
        service.insert(map);
 
        return success(1);
 
}
 
    public Map<String,Object> 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<String,Object> body){
 
        StringBuffer sql = new StringBuffer("INSERT INTO ");
 
        sql.append("`").append(table).append("`").append(" (");
 
        for (Map.Entry<String,Object> entry:body.entrySet()){
 
            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
 
        }
 
        sql.deleteCharAt(sql.length()-1);
 
        sql.append(") VALUES (");
 
        for (Map.Entry<String,Object> 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<String, Object> getList(HttpServletRequest request) {
 
        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
 
        return success(map);
 
}

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

@RequestMapping(value = {"/count_group", "/count"})
 
    public Map<String, Object> count(HttpServletRequest request) {
 
        Query count = service.count(service.readQuery(request), service.readConfig(request));
 
        return success(count.getResultList());
 
}

5.6投票添加关键代码如

@RequestMapping("/get_list")
 
    public Map<String, Object> getList(HttpServletRequest request) {
 
        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
 
        return success(map);
 
}

 

  此源码非开源,2600多套源码可扫码添加微信进行咨询!

  • 64
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源是一套基于SpringBootVue开发的小区物业管理系统,包含了源代码、部署说明和系统介绍等文件。该小区物业管理系统实现了业主信息管理、物业费用管理、报修管理、投诉建议等功能,并拥有管理员后台管理功能。网站采用前后端分离的方式开发,前端使用Vue框架,后端使用SpringBoot框架,代码规范、接口设计清晰。 在该小区物业管理系统中,业主可以进行业主信息管理、查询物业费用信息、进行报修、提交投诉建议等操作。物业管理员可以进行业主信息管理、物业费用管理、报修管理、投诉建议管理等操作,以保证小区物业的正常开展。管理员可以管理所有业主信息、查看数据统计、设置权限等操作,以确保系统的安全和运转。 该资源中的部署说明文件详细介绍了如何搭建该小区物业管理系统的环境和部署步骤,支持Windows和Linux两个平台,易于操作。系统介绍文件详细介绍了该小区物业管理系统的功能和特点,以及实现方式和使用效果,让用户可以更好地了解该项目小区物业管理系统主要面向小区业主和物业管理人员,为小区居民提供高效、便捷的物业管理服务,对保障小区居民的生活质量和小区物业的管理水平具有重要价值。此资源的开发具有很强的实用性和推广意义,对于学习前后端分离开发、小区物业管理相关项目的用户来说是一份不错的参考资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值