基于SpringBoot的社区物业管理系统(2)---楼宇管理

前言

我们先来写基础信息管理中的楼宇管理
在这里插入图片描述
后面的直接在Gitee上更新代码
https://gitee.com/yx5411648

功能实现

首先从dao写起

BuildingMapper.java

package com.yx.dao;

import com.yx.pojo.Building;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author yx
 * @since 2021-04-09
 */
@Component("buildingDao")
public interface BuildingMapper extends BaseMapper<Building> {

    /**
     * 查询所有记录信息
     * @param numbers
     * @return
     */
    List<Building> queryBuildAll(@Param("numbers")String numbers);

}

其实现BuildingMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yx.dao.BuildingMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.yx.pojo.Building">
                <id column="id" property="id"/>
                <result column="numbers" property="numbers"/>
                <result column="uints" property="uints"/>
                <result column="remarks" property="remarks"/>
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, numbers, uints, remarks
    </sql>

    <select id="queryBuildAll" parameterType="String" resultType="com.yx.pojo.Building">
        select * from building
        <where>
            <if test="numbers!=null and numbers!=''">
                and numbers like '%${numbers}%'
            </if>
        </where>
        order by id desc
    </select>
</mapper>

BudilingSerivce,BuildingServiceImpl
在这里插入图片描述
在这里插入图片描述

BuildingController.java

package com.yx.controller;

import com.github.pagehelper.PageInfo;
import com.yx.util.JsonObject;
import com.yx.util.R;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;
import com.yx.service.IBuildingService;
import com.yx.pojo.Building;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baomidou.mybatisplus.core.metadata.IPage;

import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author yx
 * @since 2021-04-09
 */
@Api(tags = {""})
@RestController
@RequestMapping("/building")
public class BuildingController {

    private Logger log = LoggerFactory.getLogger(getClass());

    @Resource
    private IBuildingService buildingService;

    /**
     * 查询所有楼宇记录
     */
    @RequestMapping("/queryBuildAll")
    public JsonObject queryBuildAll(@RequestParam(defaultValue = "1") Integer pageNum,
                                    @RequestParam(defaultValue = "15") Integer limit,
                                    String numbers){
        JsonObject jsonObject = new JsonObject();
        PageInfo<Building> buildingPageInfo = buildingService.queryBuildAll(pageNum, limit, numbers);
        jsonObject.setCode(0);
        jsonObject.setMsg("ok");
        jsonObject.setCount(buildingPageInfo.getTotal());
        jsonObject.setData(buildingPageInfo.getList());
        return jsonObject;
    }

    /**
     * 下拉框,查询所有楼宇信息
     * @return
     */
    @RequestMapping("/queryBuild")
    public List<Building> queryBuild(){
        PageInfo<Building> pageInfo = buildingService.queryBuildAll(1, 100, null);
        return pageInfo.getList();
    }

    @ApiOperation(value = "新增")
    @PostMapping("/add")
    public R add(@RequestBody Building building){
        int num = buildingService.add(building);
        if (num > 0){
            return R.ok();
        }else{
            return R.fail("添加失败");
        }
    }

    @ApiOperation(value = "删除")
    @RequestMapping("/deleteByIds")
    public R delete(String ids){
        List<String> list = Arrays.asList(ids.split(","));
        for (String id : list) {
            buildingService.delete(Long.parseLong(id));//这里必须接收long类型,所以转成long
        }
        return R.ok();
    }

    @ApiOperation(value = "更新")
    @RequestMapping("/update")
    public R update(@RequestBody Building building){
        int num = buildingService.updateData(building);
        if (num > 0){
            return R.ok();
        }else{
            return R.fail("修改失败");
        }
    }

    @ApiOperation(value = "查询分页数据")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "page", value = "页码"),
        @ApiImplicitParam(name = "pageCount", value = "每页条数")
    })
    @GetMapping()
    public IPage<Building> findListByPage(@RequestParam Integer page,
                                   @RequestParam Integer pageCount){
        return buildingService.findListByPage(page, pageCount);
    }

    @ApiOperation(value = "id查询")
    @GetMapping("{id}")
    public Building findById(@PathVariable Long id){
        return buildingService.findById(id);
    }

}

在这里插入图片描述
先是首页
BuildIndex.html

<div class="layuimini-container layuimini-page-anim">
    <div class="layuimini-main">

        <div class="demoTable">
            楼号:
            <div class="layui-inline">
                <input class="layui-input" name="numbers"  id="numbers" autocomplete="off">
            </div>
            <button class="layui-btn" data-type="reload">搜索</button>
        </div>

        <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container">
                <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
                <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button>
            </div>
        </script>

        <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>

        <script type="text/html" id="currentTableBar">
            <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
            <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
        </script>

    </div>
</div>

<script>
    layui.use(['form', 'table','miniPage','element'], function () {
        var $ = layui.jquery,
            form = layui.form,
            table = layui.table,
            miniPage = layui.miniPage;

        table.render({
            elem: '#currentTableId',
            url: 'building/queryBuildAll',
            toolbar: '#toolbarDemo',
            defaultToolbar: ['filter', 'exports', 'print', {
                title: '提示',
                layEvent: 'LAYTABLE_TIPS',
                icon: 'layui-icon-tips'
            }],
            cols: [[
                {type: "checkbox", width: 50},
                //{field: 'id', width: 80, title: 'ID', sort: true},
                {field: 'numbers', width: 80, title: '楼号'},
                {field: 'uints', width: 80, title: '单元'},
                {field: 'remarks', width: 80, title: '备注'},
                {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
            ]],
            limits: [10, 15, 20, 25, 50, 100],
            limit: 15,
            page: true,
            skin: 'line',
            id: 'testReload'
        });


        var $ = layui.$, active = {
            reload: function(){
                var numbers = $('#numbers');

                //执行重载
                table.reload('testReload', {
                    page: {
                        curr: 1 //重新从第 1 页开始
                    }
                    ,where: {
                        numbers:numbers.val()
                    }
                }, 'data');
            }
        };

        $('.demoTable .layui-btn').on('click', function(){
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });

        // 监听搜索操作
        form.on('submit(data-search-btn)', function (data) {
            var result = JSON.stringify(data.field);
            layer.alert(result, {
                title: '最终的搜索信息'
            });

            //执行搜索重载
            table.reload('currentTableId', {
                page: {
                    curr: 1
                }
                , where: {
                    searchParams: result
                }
            }, 'data');

            return false;
        });

        /**
         * toolbar事件监听
         */
        table.on('toolbar(currentTableFilter)', function (obj) {
            if (obj.event === 'add') {   // 监听添加操作

                var content = miniPage.getHrefContent('page/base/build/addBuild.html');
                var index=openPage(content,"添加楼宇",'60%','60%');//title,width,height
                $(window).on("resize", function () {
                    layer.full(index);//显示
                });
            } else if (obj.event === 'delete') {  // 监听删除操作
                /*
                  1、判断是否有选择记录 如果没有提示
                  2、获取要删除的id集合
                  3、发送请求 实现删除功能
                  4、提示成功 并刷新主页
                 */
                var checkStatus=table.checkStatus(obj.config.id);
                var data =checkStatus.data;
                if(data.length==0){
                    layer.msg("请选择要删除的记录信息");
                }else{
                    //获取要删除id的集合
                    var ids =getCheckId(data);
                    layer.confirm('你确定要删除吗?',function (index) {
                        //执行删除功能
                        deleteByIds($,"building/deleteByIds",ids,index);
                    })

                }

            }
        });



        //监听表格复选框选择
        table.on('checkbox(currentTableFilter)', function (obj) {
            console.log(obj)
        });

        /**
         * 设计渲染form中的信息值,也就是点编辑后出现页面的文本框
         * 以前是用jsp中jstl实现,现在直接用js实现,文本框中会出现渲染后的信息
         */
        function setFormValues(data){
            form.val("updateSubmit",{
                id:data.id,
                "numbers":data.numbers,
                "uints":data.uints,
                "remarks":data.remarks
            });
        };

        table.on('tool(currentTableFilter)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {
                var content = miniPage.getHrefContent('page/base/build/editBuild.html');
                var index=openPage(content,"编辑楼宇",'60%','60%');

                //渲染数据
                setFormValues(data);
                $(window).on("resize", function () {
                    layer.full(index);//转圈圈UI效果,意思是全屏使用index
                });
                return false;
            } else if (obj.event === 'delete') {
                layer.confirm('确定是否删除', function (index) {
                    deleteByIds($,"building/deleteByIds",data.id,index)
                });
            }
        });

    });
</script>

addBuild.html 添加

<div class="layuimini-main">

    <div class="layui-form layuimini-form">
        <div class="layui-form-item">
            <label class="layui-form-label required">楼栋号</label>
            <div class="layui-input-block">
                <input type="text" name="numbers" lay-verify="required" lay-reqtext="楼栋号不能为空" placeholder="请输入楼栋号,如16栋" value="" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label required">所属单元</label>
            <div class="layui-input-block">
                <select name="uints" lay-verify="required">
                    <option value="">请选择单元</option>
                    <option value="1单元">1单元</option>
                    <option value="2单元">2单元</option>
                </select>
            </div>
        </div>

        <div class="layui-form-item layui-form-text">
            <label class="layui-form-label">备注信息</label>
            <div class="layui-input-block">
                <textarea name="remarks" class="layui-textarea" placeholder="请输入备注信息,没有填无"></textarea>
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
            </div>
        </div>
    </div>
</div>
<script>
    layui.use(['form', 'table'], function () {
        var form = layui.form,
            layer = layui.layer,
            table = layui.table,
            $ = layui.$;

        /**
         * 初始化表单,要加上,不然刷新部分组件可能会不加载
         */
        form.render();

        // 当前弹出层,防止ID被覆盖
        var parentIndex = layer.index;

        //监听提交
        form.on('submit(saveBtn)', function (data) {
            //获取表单中的数据信息
            var datas=data.field;
            addOrUpdateSubmit($,"building/add",datas);
            return false;
        });

    });
</script>

editBuild.html 编辑(修改)

<div class="layuimini-main">

    <div class="layui-form layuimini-form " lay-filter="updateSubmit">
        <input type="hidden" name="id">
        <div class="layui-form-item">
            <label class="layui-form-label required">楼栋号</label>
            <div class="layui-input-block">
                <input type="text" name="numbers" lay-verify="required" lay-reqtext="楼宇编号不能为空" placeholder="请输入楼宇编号" value="" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label required">所属单元</label>
            <div class="layui-input-block">
                <select name="uints" lay-verify="required">
                    <option value="">请选择单元</option>
                    <option value="1单元">1单元</option>
                    <option value="2单元">2单元</option>
                </select>
            </div>
        </div>

        <div class="layui-form-item layui-form-text">
            <label class="layui-form-label">备注信息</label>
            <div class="layui-input-block">
                <textarea name="remarks" class="layui-textarea" placeholder="请输入备注信息"></textarea>
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn layui-btn-normal" lay-submit lay-filter="updateSubmit">确认修改</button>
            </div>
        </div>
    </div>
</div>
<script>
    layui.use(['form', 'table'], function () {
        var form = layui.form,
            layer = layui.layer,
            table = layui.table,
            $ = layui.$;

        /**
         * 初始化表单,要加上,不然刷新部分组件可能会不加载
         */
        form.render();

        // 当前弹出层,防止ID被覆盖
        var parentIndex = layer.index;

        //监听提交
        form.on('submit(updateSubmit)', function (data) {
            //获取表单中的数据信息,注意获取的是name,不是id
            var datas=data.field;
            //向后台发送请求 添加
            addOrUpdateSubmit($,"building/update",datas);
            return false;
        });

    });
</script>

后面直接git上更新吧,有兴趣可以关注一下
https://gitee.com/yx5411648

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小样x

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

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

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

打赏作者

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

抵扣说明:

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

余额充值