SSM酒店管理系统项目Day13


建议配合视频学习食用(9-3~10-3):
https://www.bilibili.com/video/BV1rr4y1F7Y2?p=1

17.房间管理

17.1 去到房间管理页面

在这里插入图片描述
1.添加jsp文件 roomManager.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <!-- 获取CSRF Token -->
    <meta name="_csrf" content="${_csrf.token}"/>
    <!-- 获取CSRF头,默认为X-CSRF-TOKEN -->
    <meta name="_csrf_header" content="${_csrf.headerName}"/>
    <meta charset="utf-8">
    <title>layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/layui/lib/layui-v2.5.5/css/layui.css"
          media="all">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/layui/css/public.css" media="all">
    <style>
        .thumbBox{ height:200px; overflow:hidden; border:1px solid #e6e6e6; border-radius:2px; cursor:pointer; position:relative; text-align:center; line-height:200px;width: 210px;}
        .thumbImg{ max-width:100%; max-height:100%; border:none;}
        .thumbBox:after{ position:absolute; width:100%; height:100%;line-height:200px; z-index:-1; text-align:center; font-size:20px; content:"缩略图"; left:0; top:0; color:#9F9F9F;}
    </style>
</head>
<body>
<div class="layuimini-container">
    <div class="layuimini-main">

        <%-- 搜索条件 --%>
        <fieldset class="table-search-fieldset">
            <legend>搜索信息</legend>
            <div style="margin: 10px 10px 10px 10px">
                <form class="layui-form layui-form-pane" action="">
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">房间名称</label>
                            <div class="layui-input-inline">
                                <input type="text" name="title" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">房间编号</label>
                            <div class="layui-input-inline">
                                <input type="text" name="roomNum" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">房间类型</label>
                            <div class="layui-input-inline">
                                <select name="roomTypeId" id="s_roomTypeId" autocomplete="off" class="layui-input">
                                    <option value="">全部</option>
                                </select>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">所属楼层</label>
                            <div class="layui-input-inline">
                                <select name="floorId" id="s_floorId" autocomplete="off" class="layui-input">
                                    <option value="">全部</option>
                                </select>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">房间状态</label>
                            <div class="layui-input-inline">
                                <select name="status" id="s_status" autocomplete="off" class="layui-input">
                                    <option value="">全部</option>
                                    <option value="1">可预订</option>
                                    <option value="2">已预订</option>
                                    <option value="3">入住中</option>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block" style="text-align: center">
                            <button type="submit" class="layui-btn" lay-submit lay-filter="data-search-btn"><i
                                    class="layui-icon layui-icon-search"></i>搜索
                            </button>
                            <button type="reset" class="layui-btn layui-btn-warm"><i
                                    class="layui-icon layui-icon-refresh-1"></i>重置
                            </button>
                        </div>
                    </div>
                </form>
            </div>
        </fieldset>

        <%-- 表格工具栏 --%>
        <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"><i
                        class="layui-icon layui-icon-add-1"></i>添加
                </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-xs data-count-edit" lay-event="edit"><i
                    class="layui-icon layui-icon-edit"></i>编辑</a>
            <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete"><i
                    class="layui-icon layui-icon-close"></i>删除</a>
        </script>

        <%-- 添加和修改窗口 --%>
        <div style="display: none;padding: 5px" id="addOrUpdateWindow">
            <form class="layui-form" style="width:90%;" id="dataFrm" lay-filter="dataFrm">
                <!-- 隐藏域,保存房型id -->
                <input type="hidden" name="id">
                <div class="layui-col-md12 layui-col-xs12">
                    <div class="layui-row layui-col-space10">
                        <div class="layui-col-md9 layui-col-xs7">
                            <div class="layui-form-item magt3" style="margin-top: 8px;">
                                <label class="layui-form-label">房间名称</label>
                                <div class="layui-input-block">
                                    <input type="text" class="layui-input" name="title" lay-verify="required"  placeholder="请输入房间名称">
                                </div>
                            </div>
                            <div class="layui-form-item magt3" style="margin-top: 8px;">
                                <label class="layui-form-label">房间编号</label>
                                <div class="layui-input-block">
                                    <input type="text" class="layui-input" name="roomNum" lay-verify="required"  placeholder="请输入房间编号">
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">房间类型</label>
                                <div class="layui-input-block">
                                    <select name="roomTypeId" id="roomTypeId" lay-verify="required">
                                        <option value="">请选择房型</option>
                                    </select>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">房间备注</label>
                                <div class="layui-input-block">
                                    <textarea class="layui-textarea" name="remark" id="remark"></textarea>
                                </div>
                            </div>
                        </div>
                        <div class="layui-col-md3 layui-col-xs5">
                            <div class="layui-upload-list thumbBox mag0 magt3">
                                <input type="hidden" name="photo" id="photo" value="/statics/images/defaultimg.jpg">
                                <img class="layui-upload-img thumbImg" src="/statics/images/defaultimg.jpg">
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item magb0">
                        <div class="layui-inline">
                            <label class="layui-form-label">所属楼层</label>
                            <div class="layui-input-inline">
                                <select name="floorId" id="floorId" lay-verify="required">
                                    <option value="">请选择楼层</option>
                                </select>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">房间状态</label>
                            <div class="layui-input-inline">
                                <select name="status" id="status" lay-verify="required">
                                    <option value="">请选择房间状态</option>
                                    <option value="1">可预订</option>
                                    <option value="2">已预订</option>
                                    <option value="3">入住中</option>
                                </select>
                            </div>
                        </div>

                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">房间要求</label>
                        <div class="layui-input-block" >
                            <textarea id="roomRequirement" name="roomRequirement" class="layui-textarea"></textarea>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">房间详情</label>
                        <div class="layui-input-block" >
                            <textarea id="roomDesc" name="roomDesc" style="display: none;"></textarea>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block" style="text-align: center;">
                            <button type="button" class="layui-btn" lay-submit lay-filter="doSubmit" id="doSubmit"><span
                                    class="layui-icon layui-icon-add-1"></span>提交
                            </button>
                            <button type="reset" class="layui-btn layui-btn-warm"><span
                                    class="layui-icon layui-icon-refresh-1"></span>重置
                            </button>
                        </div>
                    </div>
                </div>
            </form>
        </div>

    </div>
</div>
<script src="${pageContext.request.contextPath}/statics/layui/lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
    layui.use(['form', 'table', 'laydate', 'jquery', 'layer','upload','layedit'], function () {
        var $ = layui.jquery,
            form = layui.form,
            laydate = layui.laydate,
            upload = layui.upload,
            layedit = layui.layedit,
            layer = layui.layer,
            table = layui.table;

        //获取<meta>标签中封装的CSRF Token
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        //将头中的CSRF Token信息进行发送
        $(document).ajaxSend(function (e,xhr,options) {
            xhr.setRequestHeader(header,token);
        });

        //渲染表格组件
        var tableIns = table.render({
            elem: '#currentTableId',
            url: '${pageContext.request.contextPath}/admin/room/list',
            toolbar: '#toolbarDemo',
            cols: [[
                {field: 'id', width: 60, title: '编号', align: "center"},
                {field: 'title', minWidth: 150, title: '房间标题', align: "center"},
                {field: 'roomNum', minWidth: 120, title: '房间编号', align: "center"},
                {field: 'roomType', minWidth: 100, title: '房间类型', align: "center",templet:function (d) {
                        return d.roomType.typeName;
                    }},
                {field: 'floor', minWidth: 100, title: '所属楼层', align: "center",templet:function (d) {
                        return d.floor.floorName;
                    }},
                {field: 'status', minWidth: 100, title: '房间状态', align: "center",templet:function (d) {
                        if(d.status==1){
                            return "<font color='blue'>可预订</font>";
                        }else if(d.status==2){
                            return "<font color='orange'>已预订</font>";
                        }else{
                            return "<font color='red'>入住中</font>";
                        }
                    }},
                {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
            ]],
            page: true,
            done: function (res, curr, count) {
                //判断当前页码是否是大于1并且当前页的数据量为0
                if (curr > 1 && res.data.length == 0) {
                    var pageValue = curr - 1;
                    //刷新数据表格的数据
                    tableIns.reload({
                        page: {curr: pageValue}
                    });
                }
            }
        });

        // 监听搜索操作
        form.on('submit(data-search-btn)', function (data) {
            tableIns.reload({
                where: data.field,
                page: {
                    curr: 1
                }
            });
            return false;
        });

        //查询楼层列表
        $.get("/admin/floor/floorList",function(result){
            var html = "";
            //循环遍历数据
            for (let i = 0; i <result.length; i++) {
                html +="<option value='"+result[i].id+"'>"+result[i].floorName+"</option>"
            }
            //将数据追加到下拉列表中
            $("[name='floorId']").append(html);
            //重新渲染下拉列表
            form.render("select");
        },"json");

        //查询房型列表
        $.get("/admin/roomType/roomTypeList",function(result){
            var html = "";
            //循环遍历数据
            for (let i = 0; i <result.length; i++) {
                html +="<option value='"+result[i].id+"'>"+result[i].typeName+"</option>"
            }
            //将数据追加到下拉列表中
            $("[name='roomTypeId']").append(html);
            //重新渲染下拉列表
            form.render("select");
        },"json");

        //监听表格头部工具栏事件
        table.on("toolbar(currentTableFilter)",function (obj) {
            switch (obj.event) {
                case 'add':
                    openAddWindow();
                    break;
            }
        });

        //监听表格行工具栏事件
        table.on("tool(currentTableFilter)",function (obj) {
            switch (obj.event) {
                case 'edit':
                    openUpdateWindow(obj.data);
                    break;
                case 'delete':
                    deleteById(obj.data);
                    break;
            }
        });


        //渲染文件上传组件
        upload.render({
            elem:".thumbBox",//绑定元素
            url:"/admin/room/uploadFile",//提交地址
            acceptMime: 'image/*',//规定打开文件选择框时,筛选出的文件类型
            field: 'attach',//文件上传的字段值,等同于input标签的name属性值,该值必须与控制器中的方法参数名一致
            method: "post",//提交方式
            //文件上传成功后的回调函数
            done:function (res, index, upload) {
                //图片回显
                $(".thumbImg").attr("src",res.data.src);
                $('.thumbBox').css("background", "#fff");
                //隐藏域赋值
                $("#photo").val(res.imagePath);
            }
        });

        //定义变量,分别保存提交地址和窗口索引
        var url,mainIndex,detailIndex;

        /**
         * 打开添加窗口
         */
        function openAddWindow() {
            mainIndex = layer.open({
                type:1,
                title:"添加房间",
                area: ["800px", "500px"],//窗口宽高
                content: $("#addOrUpdateWindow"),//引用的内容窗口
                maxmin: true,//窗口显示最大最小化
                success:function () {
                    //提交地址
                    url = "/admin/room/addRoom";
                    //清空表单数据
                    $("#dataFrm")[0].reset();
                    //设置隐藏域默认值
                    $("#photo").val("images/defaultimg.jpg");
                    //设置默认图片
                    $(".thumbImg").attr("src","/hotel/show/images/defaultimg.jpg");
                }
            });
            //设置窗口打开时最大化显示
            layer.full(mainIndex);
            //渲染富文本编辑器
            detailIndex = layedit.build("roomDesc",{
                uploadImage:{
                    url:"/admin/room/detailUpload",//提交地址
                    type:"post"//提交方式
                }
            });//其中roomDesc是<textarea>文本域的id值
        }

        /**
         * 打开修改窗口
         * @param data
         */
        function openUpdateWindow(data) {
            mainIndex = layer.open({
                type:1,
                title:"修改房间",
                area: ["800px", "500px"],//窗口宽高
                content: $("#addOrUpdateWindow"),//引用的内容窗口
                maxmin: true,//窗口显示最大最小化
                success:function () {
                    //提交地址
                    url = "/admin/room/updateRoom";
                    //数据回显
                    form.val("dataFrm",data);
                    //图片回显
                    $(".thumbImg").attr("src","/hotel/show/room-pic/main/"+data.photo);
                }
            });
            //设置窗口打开时最大化显示
            layer.full(mainIndex);
            //渲染富文本编辑器
            detailIndex = layedit.build("roomDesc",{
                uploadImage:{
                    url:"/admin/room/detailUpload",//提交地址
                    type:"post"//提交方式
                }
            });//其中roomDesc是<textarea>文本域的id值
        }

        //监听表单提交事件
        form.on("submit(doSubmit)",function (data) {
            //将富文本编辑器的内容同步到文本域textarea中
            layedit.sync(detailIndex);
            //$("#dataFrm").serialize():一次性获取表单的数据,要求表单标签必须有name属性值
            //发送请求
            $.post(url,$("#dataFrm").serialize(),function(result){
                if(result.success){
                    //提示
                    layer.alert(result.message,{icon:1});
                    //刷新当前数据表格
                    tableIns.reload();
                    //关闭当前窗口
                    layer.close(mainIndex);
                }else{
                    //提示
                    layer.alert(result.message,{icon:2});
                }
            },"json");
            return false;
        });

        /**
         * 删除
         * @param data
         */
        function deleteById(data) {
            //判断当前房间状态是否为可预订
            if(data.status!=1){ //1为可预订
                layer.alert("只能删除状态为可预订的房间",{icon:0});
            }else{
                layer.confirm("确定要删除[<font color=red>"+data.title+"("+data.roomNum+")"+"</font>]房间吗",{icon:3,title:"提示"},function (index) {
                    //发送删除请求
                    $.post("/admin/room/deleteById",{"id":data.id},function(result){
                        if(result.success){
                            layer.alert(result.message,{icon:1});
                            tableIns.reload();
                        }else{
                            layer.alert(result.message,{icon:2});
                        }
                    },"json");

                    layer.close(index);
                });
            }
        }

    });
</script>

</body>
</html>

2.PageController.java

   /**
     * 去到房间管理页面
     * @return
     */
    @RequestMapping("/toRoomManager")
    public String toRoomManager(){
        return "room/roomManager";
    }

3.添加“房间管理”并修改超级管理员权限
在这里插入图片描述
在这里插入图片描述

17.2 实现房间管理的增删改查及文件上传

17.2.1 实体类

Room.java

package com.manong.entity;

import lombok.Data;

@Data
public class Room {
    private Integer id;
    private String title;
    private String photo;
    private String roomNum;
    private Integer roomTypeId;
    private Integer floorId;
    private Integer status;//状态(1-可预订 2-已预订 3-已入住)
    private String roomRequirement;
    private String remark;
    private String roomDesc;

    //房型对象
    private RoomType roomType;
    //楼层对象
    private Floor floor;

}

RoomVo.java

package com.manong.vo;

import com.manong.entity.Room;
import lombok.Data;

@Data
public class RoomVo extends Room {

    private Integer page;//当前页码
    private Integer limit;//每页显示数量

}

17.2.2 数据层

RoomMapper.java

package com.manong.dao;

import com.manong.entity.Room;
import com.manong.vo.RoomVo;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface RoomMapper {

    /**
     * 查询房间列表
     * @param roomVo
     * @return
     */
    List<Room> findRoomList(RoomVo roomVo);

    /**
     * 添加房间
     * @param room
     * @return
     */
    int addRoom(Room room);

    /**
     * 修改房间
     * @param room
     * @return
     */
    int updateRoom(Room room);

    /**
     * 删除房间
     * @param id
     * @return
     */
    int deleteById(Integer id);


  
}

RoomMapper.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.manong.dao.RoomMapper">

    <!-- 基础、公共字段配置 -->
    <resultMap id="BaseResultMap" type="com.manong.entity.Room">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="title" jdbcType="VARCHAR" property="title" />
        <result column="photo" jdbcType="VARCHAR" property="photo" />
        <result column="roomNum" jdbcType="VARCHAR" property="roomNum" />
        <result column="roomTypeId" jdbcType="INTEGER" property="roomTypeId" />
        <result column="floorId" jdbcType="INTEGER" property="floorId" />
        <result column="status" jdbcType="INTEGER" property="status" />
        <result column="roomRequirement" jdbcType="VARCHAR" property="roomRequirement" />
        <result column="remark" jdbcType="VARCHAR" property="remark" />
    </resultMap>

    <!-- 配置关联关系 -->
    <resultMap id="roomResultMap" type="com.manong.entity.Room" extends="BaseResultMap">
        <!-- 房型 -->
        <association property="roomType" javaType="com.manong.entity.RoomType">
            <id column="id" jdbcType="INTEGER" property="id" />
            <result column="typeName" jdbcType="VARCHAR" property="typeName" />
            <result column="photo" jdbcType="VARCHAR" property="photo" />
            <result column="price" jdbcType="DECIMAL" property="price" />
            <result column="roomNumber" property="roomNum" />
        </association>
        <!-- 楼层 -->
        <association property="floor" javaType="com.manong.entity.Floor">
            <id column="id" jdbcType="INTEGER" property="id" />
            <result column="floorName" jdbcType="VARCHAR" property="floorName" />
            <result column="remark" jdbcType="VARCHAR" property="remark" />
        </association>
    </resultMap>
    <insert id="addRoom">
        insert into t_room (title, photo,
          roomNum, roomTypeId, floorId,
          status, roomRequirement, remark,
          roomDesc)
        values (#{title,jdbcType=VARCHAR}, #{photo,jdbcType=VARCHAR},
          #{roomNum,jdbcType=VARCHAR}, #{roomTypeId,jdbcType=INTEGER}, #{floorId,jdbcType=INTEGER},
          #{status,jdbcType=INTEGER}, #{roomRequirement,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
          #{roomDesc,jdbcType=LONGVARCHAR})
    </insert>

    <update id="updateRoom">
        update t_room
        <set>
            <if test="title != null">
                title = #{title,jdbcType=VARCHAR},
            </if>
            <if test="photo != null">
                photo = #{photo,jdbcType=VARCHAR},
            </if>
            <if test="roomNum != null">
                roomNum = #{roomNum,jdbcType=VARCHAR},
            </if>
            <if test="roomTypeId != null">
                roomTypeId = #{roomTypeId,jdbcType=INTEGER},
            </if>
            <if test="floorId != null">
                floorId = #{floorId,jdbcType=INTEGER},
            </if>
            <if test="status != null">
                status = #{status,jdbcType=INTEGER},
            </if>
            <if test="roomRequirement != null">
                roomRequirement = #{roomRequirement,jdbcType=VARCHAR},
            </if>
            <if test="remark != null">
                remark = #{remark,jdbcType=VARCHAR},
            </if>
            <if test="roomDesc != null">
                roomDesc = #{roomDesc,jdbcType=LONGVARCHAR},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>

    <delete id="deleteById">
        delete from t_room where id = #{id}
    </delete>


    <select id="findRoomList" resultMap="roomResultMap">
        select t1.*,t2.`typeName`,t2.price,t3.`floorName`,t2.roomNum as roomNumber from t_room t1
        inner join t_room_type t2 on t2.id = t1.`roomTypeId`
        inner join t_floor t3 on t3.id = t1.`floorId`
        <where>
            <if test="roomNum!=null and roomNum!=''">
                and t1.roomNum like concat('%',#{roomNum},'%')
            </if>
            <if test="title!=null and title!=''">
                and t1.title like concat('%',#{title},'%')
            </if>
            <if test="floorId!=null">
                and t1.floorId = #{floorId}
            </if>
            <if test="roomTypeId!=null">
                and t1.roomTypeId = #{roomTypeId}
            </if>
            <if test="status!=null">
                and t1.status = #{status}
            </if>
        </where>
    </select>
 

</mapper>

17.2.3 业务层

RoomService.java

package com.manong.service;

import com.manong.entity.Room;
import com.manong.vo.RoomVo;

import java.util.List;

public interface RoomService {
    /**
     * 查询房间列表
     * @param roomVo
     * @return
     */
    List<Room> findRoomList(RoomVo roomVo);

    /**
     * 添加房间
     * @param room
     * @return
     */
    int addRoom(Room room);

    /**
     * 修改房间
     * @param room
     * @return
     */
    int updateRoom(Room room);

    /**
     * 删除房间
     * @param id
     * @return
     */
    int deleteById(Integer id);
}

RoomServiceImpl.java

package com.manong.service.impl;

import com.manong.dao.RoomMapper;
import com.manong.entity.Room;
import com.manong.service.RoomService;
import com.manong.vo.RoomVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Transactional
@Service
public class RoomServiceImpl implements RoomService {

    @Resource
    private RoomMapper roomMapper;

    /**
     * 查询房间列表
     *
     * @param roomVo
     * @return
     */
    public List<Room> findRoomList(RoomVo roomVo) {
        return roomMapper.findRoomList(roomVo);
    }

    public int addRoom(Room room) {
        return roomMapper.addRoom(room);
    }

    public int updateRoom(Room room) {
        return roomMapper.updateRoom(room);
    }

    public int deleteById(Integer id) {
        return roomMapper.deleteById(id);
    }


}

17.2.4 控制层

RoomController.java

package com.manong.controller;

import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.manong.entity.Room;
import com.manong.service.RoomService;
import com.manong.utils.DataGridViewResult;
import com.manong.utils.SystemConstants;
import com.manong.utils.UUIDUtils;
import com.manong.vo.RoomVo;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/admin/room")
public class RoomController {


    @Resource
    private RoomService roomService;

    /**
     * 查询房屋列表
     * @param roomVo
     * @return
     */
    @RequestMapping("/list")
    public DataGridViewResult list(RoomVo roomVo){
        //设置分页信息
        PageHelper.startPage(roomVo.getPage(),roomVo.getLimit());
        //调用查询的方法
        List<Room> roomList = roomService.findRoomList(roomVo);
        //创建分页对象
        PageInfo<Room> pageInfo = new PageInfo<Room>(roomList);
        //返回数据
        return new DataGridViewResult(pageInfo.getTotal(),pageInfo.getList());
    }

    /**
     * 文件上传
     * @param attach
     * @return
     */
    @RequestMapping("/uploadFile")
    public String uploadFile(MultipartFile attach){
        //创建Map集合保存数据(响应到前台页面的数据)
        Map<String,Object> map = new HashMap<String,Object>();
        //判断是否有选中文件
        if(!attach.isEmpty()){
            //获取文件上传地址
            String path = "E:/ssm_hotel/upload/room-pic/main/";
            //获取源文件名称
            String oldName = attach.getOriginalFilename();
            //获取文件后缀名
            String extension = FilenameUtils.getExtension(oldName);
            //重命名文件名称
            String newFileName = UUIDUtils.randomUUID()+"."+extension;
            //为了解决同一个文件夹下文件过多的问题,使用日期作为文件夹管理
            String datePath = new SimpleDateFormat("yyyyMMdd").format(new Date());
            //组装最终的文件名
            String finalName = datePath + "/" + newFileName;
            //创建文件对象
            File destFile = new File(path,finalName);
            //判断文件夹是否存在,文件夹不存在则创建该文件夹
            if(!destFile.getParentFile().exists()){
                destFile.getParentFile().mkdirs();
            }
            try {
                //将文件保存到硬盘
                attach.transferTo(destFile);
                //保存响应的数据
                map.put("code",0);
                map.put("msg","");
                Map<String,Object> dataMap = new HashMap<String,Object>();
                dataMap.put("src","/hotel/show/room-pic/main/"+finalName);//文件上传成功的回显地址
                map.put("data",dataMap);
                map.put("imagePath",finalName);//图片名称,目的是给photo隐藏域赋值
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return JSON.toJSONString(map);
    }


    /**
     * 添加房间
     * @param room
     * @return
     */
    @RequestMapping("/addRoom")
    public String addRoom(Room room){
        Map<String,Object> map = new HashMap<String,Object>();
        if(roomService.addRoom(room)>0){
            map.put(SystemConstants.SUCCESS,true);
            map.put(SystemConstants.MESSAGE,"添加成功");
        }else{
            map.put(SystemConstants.SUCCESS,false);
            map.put(SystemConstants.MESSAGE,"添加失败");
        }
        return JSON.toJSONString(map);
    }

    @RequestMapping("/detailUpload")
    public String detailUpload(MultipartFile file){
        //创建Map集合保存返回的JSON数据
        Map<String,Object> map = new HashMap<String,Object>();
        //判断是否有选中文件
        if(!file.isEmpty()){
            //文件上传提交地址
            String path = "E:/ssm_hotel/upload/room-pic/detail/";
            //获取源文件的名称
            String oldFileName = file.getOriginalFilename();
            //获取文件的后缀名
            String extension = FilenameUtils.getExtension(oldFileName);
            //重命名旧文件
            String newFileName = UUIDUtils.randomUUID()+"."+extension;
            //为了解决同一个文件夹下文件过多的问题,使用日期作为文件夹管理
            String datePath = new SimpleDateFormat("yyyyMMdd").format(new Date());
            //组装最终的文件名
            String finalName = datePath + "/" + newFileName;
            //创建文件对象
            //参数1:文件上传的地址  参数2:文件名称
            File dest = new File(path,finalName);
            //判断该文件夹是否存在,不存在则创建文件夹
            if(!dest.getParentFile().exists()){
                dest.getParentFile().mkdirs();//创建文件夹
            }

            try {
                //进行文件上传
                file.transferTo(dest);
                map.put("code",0);//状态码
                map.put("msg","上传成功");//执行消息
                Map<String,Object> dataMap = new HashMap<String,Object>();
                dataMap.put("src","/hotel/show/room-pic/detail/"+finalName);
                map.put("data",dataMap);//文件数据
                map.put("imagePath",finalName);//隐藏域的值,只保留日期文件夹+重命名后的文件名

            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return JSON.toJSONString(map);
    }

    /**
     * 修改房间
     * @param room
     * @return
     */
    @RequestMapping("/updateRoom")
    public String updateRoom(Room room){
        Map<String,Object> map = new HashMap<String,Object>();
        if(roomService.updateRoom(room)>0){
            map.put(SystemConstants.SUCCESS,true);
            map.put(SystemConstants.MESSAGE,"修改成功");
        }else{
            map.put(SystemConstants.SUCCESS,false);
            map.put(SystemConstants.MESSAGE,"修改失败");
        }
        return JSON.toJSONString(map);
    }

    /**
     * 删除房间
     * @param id
     * @return
     */
    @RequestMapping("/deleteById")
    public String deleteById(Integer id){
        Map<String,Object> map = new HashMap<String,Object>();
        if(roomService.deleteById(id)>0){
            map.put(SystemConstants.SUCCESS,true);
            map.put(SystemConstants.MESSAGE,"删除成功");
        }else{
            map.put(SystemConstants.SUCCESS,false);
            map.put(SystemConstants.MESSAGE,"删除失败");
        }
        return JSON.toJSONString(map);
    }

}

17.3 实现搜索和增加房间弹窗中对于楼层和房型下拉列表

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

1. 控制层
FloorController.java

    /**
     * 查询楼层列表数据
     * @return
     */
    @RequestMapping("/floorList")
    public String floorList(){
        return JSON.toJSONString(floorService.findFloorList(null));
    }

RoomTypeController.java

    /**
     * 查询房型列表
     * @return
     */
    @RequestMapping("/roomTypeList")
    public String roomTypeList(){
        return JSON.toJSONString(roomTypeService.findRoomTypeList(null));
    }
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值