Java项目:小区物业管理系统(Java+Spring Boot + SpringMVC + MyBatis+ Layui+H-ui)

项目介绍 :

Spring Boot + SpringMVC + MyBatis+ Mysql+ Layui+H-ui开发的小区物业管理系统

项目演示:
小区物业管理系统

环境需要:

最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

IDE环境:

Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以

内置功能

管理员角色包含以下功能:

  1. 管理员登录
  2. 管理员信息管理
  3. 小区业主管理
  4. 楼栋信息管理
  5. 网站栏目管理
  6. 网站内容管理
  7. 停车位管理
  8. 收费类型管理
  9. 物业收费管理
  10. 业主报修管理
  11. 意见反馈管理

小区业主色包含以下功能

  1. 登录
  2. 新闻公告查看
  3. 收费规则查看
  4. 服务新闻查看
  5. 我的费用
  6. 我的停车位
  7. 业主报修
  8. 我的报修
  9. 意见反馈
  10. 我的意见反馈
项目预览

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用户管理控制层:

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">&#xe632;</i>提交保存</button>
                        <button class="btn btn-default radius" @click.prevent="reset()">
							<i class="Hui-iconfont">&#xe68f;</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>

创作不易,源码非无偿提供,需要获取源码的私信博主

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java水泥工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值