基于springboot的物业管理系统-老师满意

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

 

4 系统设计

4.1系统结构图

物业管理系统分为四个部分,即管理员管理、物业管理、业主管理和维修员管理。该系统是根据用户的实际需求开发的,贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限,其次是物业管理、业主和维修员。管理员一般负责整个系统的运行维护和总体协调。

系统结构如图4-1所示。

图4-1系统结构图

4.2数据库设计

所有的系统设计但凡有数据都离不开数据库,数据库是所有项目想实现如数据获取,数据传输等功能的基石。只有合理化的数据库设计才能满足商业化的要求,数据库的主键外键连接方式特别的重要,尽量避免多对多的复杂性,字段名合理规范,且通俗易懂等,字段应根据业务进行设定,不允许操作多字段而对系统产生占用多余的内存[12]。

4.2.1数据库设计原则

设计原则自然就是要符合范式的要求,多表之间的关系要合理,理应符合系统的实际情况。

4.2.2数据库的概念设计

概念设计是将整体分为在地面上表达出来的单个个体。E-R图形象的连接了实体模型和概念模型。因此,E-R图需要根据数据库表和表字段进行合理设计,表达的概念知识点用图形描述,可以直观地让相应人员清楚,并分解整个E-R图[13]。我们通常表达不清晰没有概念的东西。但是通过E-R之间的联系,E-R模型法是对这种模糊概念的事务最简单、最常用的设计方法。 

4.2.3数据库表设计

数据库表的设计通常是根据业务逻辑设置的。数据库模型在数据库中设计,并根据模型创建数据库表[14]。

4-1:投诉信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

tousufenlei

varchar

200

投诉分类

tousuneirong

longtext

4294967295

投诉内容

tousushijian

date

投诉时间

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

chulizhuangtai

varchar

200

处理状态

表4-2:报修信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

名称

baoxiuwupin

varchar

200

报修物品

baoxiuwenti

longtext

4294967295

报修问题

baoxiuriqi

date

报修日期

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

chulizhuangtai

varchar

200

处理状态

表4-3:投诉分类

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tousufenlei

varchar

200

投诉分类

表4-4:投诉处理

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

tousufenlei

varchar

200

投诉分类

chulijieguo

longtext

4294967295

处理结果

chulishijian

date

处理时间

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

表4-5token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-6:停车位

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

chechangmingcheng

varchar

200

车场名称

cheweiquhao

varchar

200

车位区号

cheweibianhao

varchar

200

车位编号

chechangleixing

varchar

200

车场类型

suoshuxiaoqu

varchar

200

所属小区

zhuangtai

varchar

200

状态

表4-7:缴费信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

dingdanbianhao

varchar

200

订单编号

jiaofeimingcheng

varchar

200

缴费名称

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

jiaofeileixing

varchar

200

缴费类型

jiaofeimingxi

longtext

4294967295

缴费明细

xujiaojine

float

需缴金额

fabushijian

datetime

发布时间

ispay

varchar

200

是否支付

未支付

表4-8:业主

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuming

varchar

200

用户名

mima

varchar

200

密码

yezhuxingming

varchar

200

业主姓名

xingbie

varchar

200

性别

nianling

varchar

200

年龄

suoshuxiaoqu

varchar

200

所属小区

youxiang

varchar

200

邮箱

shouji

varchar

200

手机

表4-9:活动信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

huodongmingcheng

varchar

200

活动名称

huodongleixing

varchar

200

活动类型

huodongshijian

varchar

200

活动时间

suoshuxiaoqu

varchar

200

所属小区

huodongdizhi

varchar

200

活动地址

huodongjieguo

longtext

4294967295

活动结果

表4-10:小区信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiaoqumingcheng

varchar

200

小区名称

xiaoquleixing

varchar

200

小区类型

wuyemingcheng

varchar

200

物业名称

xiaoqurenshu

int

小区人数

xiaoquweizhi

varchar

200

小区位置

xiaoqujianjie

longtext

4294967295

小区简介

表4-11:服务评价

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

名称

gonghao

varchar

200

工号

xingming

varchar

200

姓名

fuwupingjia

varchar

200

服务评价

yijianpingjia

longtext

4294967295

意见评价

pingjiashijian

datetime

评价时间

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

表4-12:小区公告

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

leixing

varchar

200

类型

tupian

longtext

4294967295

图片

suoshuxiaoqu

varchar

200

所属小区

gonggaoneirong

longtext

4294967295

公告内容

fabushijian

date

发布时间

表4-13:房产信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangwubianhao

varchar

200

房屋编号

fangchanming

varchar

200

房产名

fangwuleixing

varchar

200

房屋类型

danyuanhao

varchar

200

单元号

loudong

varchar

200

楼栋

shoujia

float

售价

jianzhunianfen

varchar

200

建筑年份

fengge

varchar

200

风格

fangwumianji

varchar

200

房屋面积

fangwuchaoxiang

varchar

200

房屋朝向

fangwudizhi

varchar

200

房屋地址

suoshuxiaoqu

varchar

200

所属小区

fangwuzhuangtai

varchar

200

房屋状态

表4-14:物业管理

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhanghao

varchar

200

账号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

nianling

varchar

200

年龄

suoshuxiaoqu

varchar

200

所属小区

youxiang

varchar

200

邮箱

dianhua

varchar

200

电话

表4-15:维修处理

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

名称

baoxiuwupin

varchar

200

报修物品

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

suoshuxiaoqu

varchar

200

所属小区

chulijieguo

longtext

4294967295

处理结果

chulishijian

date

处理时间

gonghao

varchar

200

工号

xingming

varchar

200

姓名

表4-16:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-17:维修员

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

gonghao

varchar

200

工号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

nianling

varchar

200

年龄

suoshuxiaoqu

varchar

200

所属小区

youxiang

varchar

200

邮箱

dianhua

varchar

200

电话

表4-18:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-19:车位信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

cheweiquhao

varchar

200

车位区号

cheweibianhao

varchar

200

车位编号

leixing

varchar

200

类型

yonghuming

varchar

200

用户名

yezhuxingming

varchar

200

业主姓名

cheweifei

float

车位费

suoshuxiaoqu

varchar

200

所属小区

beizhushuoming

longtext

4294967295

备注说明

5系统的实现

5.1系统登录实现

系统登录,在登录页面选择权限,在正确输入用户名、密码后,进入操作系统进行操作;如图5-1所示。                               

图5-1 系统登录界面

5.2后台模块实现

5.2.1管理员模块实现

管理员进入主页面,主要功能包括对系统首页、个人中心、物业管理、业主管理、维修员管理、小区公告管理、小区信息管理、房产信息管理、车位信息管理、停车位管理、停车信息管理、缴费信息管理、投诉分类管理、投诉信息管理、投诉处理管理、报修信息管理、维修处理管理、服务评价管理、活动信息管理等进行操作。管理员主界面如图5-2所示:

图5-2管理员主界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-16 16:40:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-16 16:40:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-16 16:40:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-16 16:40:01       20 阅读

热门阅读

  1. 【c/c++】获取时间

    2024-02-16 16:40:01       31 阅读
  2. LInux、源码编译安装

    2024-02-16 16:40:01       32 阅读
  3. Vue2源码梳理:关于vm.$mount的实现

    2024-02-16 16:40:01       28 阅读