项目介绍 :
Spring Boot + SpringMVC + MyBatis+ Mysql+ Layui+H-ui开发的小区物业管理系统
项目演示:
小区物业管理系统
环境需要:
最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
IDE环境:
Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
内置功能
管理员角色包含以下功能:
- 管理员登录
- 管理员信息管理
- 小区业主管理
- 楼栋信息管理
- 网站栏目管理
- 网站内容管理
- 停车位管理
- 收费类型管理
- 物业收费管理
- 业主报修管理
- 意见反馈管理
小区业主色包含以下功能
- 登录
- 新闻公告查看
- 收费规则查看
- 服务新闻查看
- 我的费用
- 我的停车位
- 业主报修
- 我的报修
- 意见反馈
- 我的意见反馈
项目预览
用户管理控制层:
package com.boot.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
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.alibaba.fastjson.JSONObject;
import com.boot.entity.Admin;
import com.boot.service.AdminService;
import com.boot.util.VeDate;
import com.github.pagehelper.Page;
@RestController //定义为控制器 返回JSON类型数据
@RequestMapping(value = "/admin", produces = "application/json; charset=utf-8")// 设置请求路径
@CrossOrigin // 允许跨域访问其资源
public class AdminController extends BaseController {
// TODO Auto-generated method stub
@Autowired // @Autowired的作用是自动注入依赖的ServiceBean
private AdminService adminService;
@PostMapping("editpwd.action") // 定义访问方法路径
@ResponseBody // 将java对象转为json格式的数据
public Map<String, Object> editpwd(@RequestBody String jsonStr) {
JSONObject obj = JSONObject.parseObject(jsonStr); // 将传递的Json参数 转换成对象类型
String adminid = obj.getString("adminid"); //主键
String password = obj.getString("password"); // 原密码
String repassword = obj.getString("repassword"); // 新密码
Map<String, Object> map = new HashMap<String, Object>(); // 定义Map 其为返回值
Admin admin = this.adminService.getAdminById(adminid); //
if (password.equals(admin.getPassword())) { // 校验原密码是否正确
admin.setPassword(repassword); // 重置密码
this.adminService.updateAdmin(admin); // 更新数据
map.put("success", true);
map.put("message", "修改成功");
} else {
map.put("success", false);
map.put("message", "旧密码错误");
}
return map;
}
// 预处理 获取基础参数
@GetMapping(value = "createAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> createAdmin() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("today", VeDate.getStringDateShort());
return map;
}
// 新增管理员
@PostMapping(value = "insertAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> insertAdmin(@RequestBody String jsonStr) {
Map<String, Object> map = new HashMap<String, Object>();
JSONObject obj = JSONObject.parseObject(jsonStr); // 将JSON字符串转换成object
Admin admin = new Admin();
admin.setUsername(obj.getString("username")); // 为用户名赋值
admin.setPassword(obj.getString("password")); // 为密码赋值
admin.setRealname(obj.getString("realname")); // 为姓名赋值
admin.setContact(obj.getString("contact")); // 为联系方式赋值
admin.setAddtime(VeDate.getStringDateShort()); // 为创建日期赋值
int num = this.adminService.insertAdmin(admin);
if (num > 0) {
map.put("success", true);
map.put("code", num);
map.put("message", "保存成功");
} else {
map.put("success", false);
map.put("code", num);
map.put("message", "保存失败");
}
return map;
}
// 按主键删除一个管理员
@GetMapping(value = "deleteAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> deleteAdmin(String id) {
Map<String, Object> map = new HashMap<String, Object>();
int num = this.adminService.deleteAdmin(id);
if (num > 0) {
map.put("success", true);
map.put("code", num);
map.put("message", "删除成功");
} else {
map.put("success", false);
map.put("code", num);
map.put("message", "删除失败");
}
return map;
}
// 按主键批量删除管理员
@PostMapping(value = "deleteAdminByIds.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> deleteAdminByIds(@RequestBody String[] ids) {
int num = 0;
for (String adminid : ids) {
num += this.adminService.deleteAdmin(adminid);
}
Map<String, Object> map = new HashMap<String, Object>();
if (num > 0) {
map.put("success", true);
map.put("code", num);
map.put("message", "删除成功");
} else {
map.put("success", false);
map.put("code", num);
map.put("message", "删除失败");
}
return map;
}
// 修改管理员
@PostMapping(value = "updateAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> updateAdmin(@RequestBody String jsonStr) {
JSONObject obj = JSONObject.parseObject(jsonStr); // 将JSON字符串转换成object
Admin admin = this.adminService.getAdminById(obj.getString("adminid")); // 获取object中adminid字段
admin.setUsername(obj.getString("username")); // 为用户名赋值
admin.setRealname(obj.getString("realname")); // 为姓名赋值
admin.setContact(obj.getString("contact")); // 为联系方式赋值
Map<String, Object> map = new HashMap<String, Object>();
int num = this.adminService.updateAdmin(admin);
if (num > 0) {
map.put("success", true);
map.put("code", num);
map.put("message", "修改成功");
} else {
map.put("success", false);
map.put("code", num);
map.put("message", "修改失败");
}
return map;
}
// 查询全部管理员数据 在下拉菜单中显示
@GetMapping(value = "getAllAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public List<Admin> getAllAdmin() {
return this.adminService.getAllAdmin();
}
// 查询全部管理员数据 在下拉菜单中显示
@GetMapping(value = "getAdminMap.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> getAdminMap(String keywords) {
Map<String, Object> map = new HashMap<String, Object>();
Admin admin = new Admin();
admin.setUsername(keywords);
List<Admin> list = this.adminService.getAdminByLike(admin);
map.put("data", list);
map.put("total", list.size());
return map;
}
// 通过AJAX在表格中显示管理员数据
@GetMapping(value = "getAdminByPage.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> getAdminByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit) {
// 定义一个Map对象 用来返回数据
Map<String, Object> map = new HashMap<String, Object>();
Page<Admin> pager = com.github.pagehelper.PageHelper.startPage(page, limit);// 定义当前页和分页条数
List<Admin> list = this.adminService.getAllAdmin();
// 返回的map中定义数据格式
map.put("count", pager.getTotal());
map.put("total", list.size());
map.put("data", list);
map.put("code", 0);
map.put("msg", "");
map.put("page", page);
map.put("limit", limit);
return map;
}
// 通过AJAX在表格中显示管理员数据
@GetMapping(value = "getAdmin.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Map<String, Object> getAdmin(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, String keywords) {
// 定义一个Map对象 用来返回数据
Map<String, Object> map = new HashMap<String, Object>();
Page<Admin> pager = com.github.pagehelper.PageHelper.startPage(page, limit);// 定义当前页和分页条数
Admin admin = new Admin();
admin.setUsername(keywords);
List<Admin> list = this.adminService.getAdminByLike(admin);
// 返回的map中定义数据格式
map.put("count", pager.getTotal());
map.put("total", list.size());
map.put("data", list);
map.put("code", 0);
map.put("msg", "");
map.put("page", page);
map.put("limit", limit);
return map;
}
// 按主键查询管理员数据
@GetMapping(value = "getAdminById.action")
@ResponseBody // 将java对象转为json格式的数据返回
public Admin getAdminById(String id) {
Admin admin = this.adminService.getAdminById(id);
return admin;
}
// TODO Auto-generated method stub
}
用户信息主页
<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>添加管理员信息</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="./hui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="./hui/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="./hui/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="./hui/layui/css/layui.css" />
</head>
<body>
<div id="app">
<article class="page-container">
<div class="form form-horizontal" id="form-admin-add">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3">用户名:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" id="username" v-model="username" placeholder="请输入用户名">
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3">密码:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="password" class="input-text" id="password" v-model="password" placeholder="请输入密码">
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3">姓名:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" id="realname" v-model="realname" placeholder="请输入姓名">
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3">联系方式:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" id="contact" v-model="contact" placeholder="请输入联系方式">
</div>
</div>
<div class="row cl">
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
<button class="btn btn-secondary radius" @click.prevent="save()"><i
class="Hui-iconfont"></i>提交保存</button>
<button class="btn btn-default radius" @click.prevent="reset()">
<i class="Hui-iconfont"></i>取消重置
</button>
</div>
</div>
</div>
</article>
</div>
<script type="text/javascript" src="./hui/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="./hui/js/H-ui.min.js"></script>
<script type="text/javascript" src="./hui/js/H-ui.admin.js"></script>
<!--此页面业务相关的脚本-->
<script type="text/javascript" src="./hui/layui/layui.js"></script>
<script type="text/javascript" src="./hui/js/axios.min.js"></script>
<script type="text/javascript" src="./hui/js/vue.js"></script>
<script type="text/javascript">
const vue = new Vue({ // 实例化Vue对象
el: '#app', // 绑定作用域
data: { //定义数据
username: '', // 定义用户名数据
password: '', // 定义密码数据
realname: '', // 定义姓名数据
contact: '', // 定义联系方式数据
},
methods: {
save: function() {
let _this = this;
var data = {
username: _this.username,
password: _this.password,
realname: _this.realname,
contact: _this.contact,
};
axios.post('http://127.0.0.1:8080/vue_wuye/admin/insertAdmin.action', data).then(result => {
if (result.data.code > 0) {
if (window.confirm('保存成功,是否继续添加?')) {
_this.reset();
} else {
var index = parent.layer.getFrameIndex(window.name);
parent.location.reload();
parent.layer.close(index);
}
} else {
console.log('保存失败,请稍后再试');
}
});
},
reset: function() {
this.pageLoad();
},
pageLoad: function() { // 页面加载
this.username = '';
this.password = '';
this.realname = '';
this.contact = '';
},
validate: function() { // 验证输入非空
},
},
created() { // 生命周期相关的函数
let _this = this;
_this.pageLoad();
},
})
</script>
<!--/ 此页面业务相关的脚本-->
</body>
</html>
创作不易,源码非无偿提供,需要获取源码的私信博主