• N-128基于springboot,vue酒店管理系统


    开发工具:IDEA

    服务器:Tomcat9.0, jdk1.8

    项目构建:maven

    数据库:mysql5.7

    系统分前后台,项目采用前后端分离

    前端技术:vue+elementUI

    服务端技术:springboot+mybatis

    本系统功能包括: 

    一、前台功能: 

    1、用户注册模块:用户可以输入用户名、密码、昵称、姓名、手机来 进行注册。

    2、用户登录模块:用户可以根据用户名、密码进行登录。

    3、前台首页模块:包括广告、房间信息、酒店新闻。

    4、酒店新闻模块:展示酒店标题,创建时间,详情。

    5、酒店预订模块:展示了客房的详情以及评价,用户输入入住日期以及入住天数进行预订。

    6、用户信息模块:展示了用户的头像、昵称、姓名、手机号码、性别并可进行修改。

    7、个人订单模块:展示了全部订单、待付款订单、待入住、已入住,已退房的客房信息。

    二、后台功能: 

    1、管理员登录模块:管理员可以根据用户名、密码进行登录。

    2、统计分析模块:管理员可以直观的查看近一周的客房数量、订单数量、用户数量。

    3、会员管理模块:管理员可以查看用户的基本信息。

    4、广告管理模块:管理员可以对酒店广告进行新增修改删除。

    5、分类管理模块:管理员可以对客房的分类进行新增修改删除。

    6、客房管理模块: 管理员可以对客房信息行增删改查。

    7、房间管理模块:管理员可以查看目前所有房间的状态并对其进行增删改查。

    8、订单管理模块:管理员可以找到用户提交的预订信息并进行开房和退房、查看的操作。

    9、评价管理模块:管理员可以对用户的评价进行查询删除。

    10、新闻管理模块:管理员可以对用户端新闻进行增删改查。

    11、管理员管理模块:管理员可以对管理员的账号行增删改查。

    文档截图: 

    N-128基于springboot,vue酒店管理系统

    前台截图: 

    后台截图:

    1. package com.wfuhui.modules.order.service.impl;
    2. import java.util.Date;
    3. import java.util.HashMap;
    4. import java.util.List;
    5. import java.util.Map;
    6. import com.wfuhui.modules.room.dao.HouseDao;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.stereotype.Service;
    9. import org.springframework.transaction.annotation.Transactional;
    10. import com.wfuhui.common.utils.NumberUtil;
    11. import com.wfuhui.modules.member.dao.MemberDao;
    12. import com.wfuhui.modules.order.dao.OrderDao;
    13. import com.wfuhui.modules.order.dao.OrderHouseDao;
    14. import com.wfuhui.modules.order.entity.OrderEntity;
    15. import com.wfuhui.modules.order.entity.OrderHouseEntity;
    16. import com.wfuhui.modules.order.service.OrderService;
    17. import com.wfuhui.modules.room.dao.RoomDao;
    18. import com.wfuhui.modules.room.dao.RoomRecordDao;
    19. import com.wfuhui.modules.room.entity.RoomEntity;
    20. import com.wfuhui.modules.room.entity.RoomRecordEntity;
    21. @Service("orderService")
    22. public class OrderServiceImpl implements OrderService {
    23. @Autowired
    24. private OrderDao orderDao;
    25. @Autowired
    26. private OrderHouseDao orderHouseDao;
    27. @Autowired
    28. private RoomDao roomDao;
    29. @Autowired
    30. private RoomRecordDao roomRecordDao;
    31. @Autowired
    32. private MemberDao memberDao;
    33. @Autowired
    34. private HouseDao houseDao;
    35. @Override
    36. public OrderEntity queryObject(Integer id){
    37. OrderEntity order = orderDao.queryObject(id);
    38. order.setMember(memberDao.queryObject(order.getMemberId()));
    39. Map params = new HashMap();
    40. params.put("orderId", order.getId());
    41. List orderHouseList = orderHouseDao.queryList(params);
    42. order.setOrderHouseList(orderHouseList);
    43. return order;
    44. }
    45. @Override
    46. public List queryList(Map map){
    47. List orderList = orderDao.queryList(map);
    48. for (OrderEntity orderEntity : orderList) {
    49. Map params = new HashMap();
    50. params.put("orderId", orderEntity.getId());
    51. List orderHouseList = orderHouseDao.queryList(params);
    52. orderEntity.setOrderHouseList(orderHouseList);
    53. }
    54. return orderList;
    55. }
    56. @Override
    57. public int queryTotal(Map map){
    58. return orderDao.queryTotal(map);
    59. }
    60. @Override
    61. public void save(OrderEntity order){
    62. orderDao.save(order);
    63. }
    64. @Override
    65. public void update(OrderEntity order){
    66. orderDao.update(order);
    67. }
    68. @Override
    69. public void delete(Integer orderId){
    70. orderDao.delete(orderId);
    71. }
    72. @Override
    73. public void deleteBatch(Integer[] orderIds){
    74. orderDao.deleteBatch(orderIds);
    75. }
    76. @Override
    77. @Transactional
    78. public void createOrder(OrderEntity order) {
    79. order.setOrderNumber(NumberUtil.getOrderNumber());
    80. orderDao.save(order);
    81. List orderHouseList = order.getOrderHouseList();
    82. for (OrderHouseEntity orderHouseEntity : orderHouseList) {
    83. orderHouseEntity.setOrderId(order.getId());
    84. orderHouseDao.save(orderHouseEntity);
    85. }
    86. }
    87. @Override
    88. public void updateByOrderNumber(OrderEntity order) {
    89. orderDao.updateByOrderNumber(order);
    90. }
    91. @Override
    92. public List> queryOrderCount() {
    93. return orderDao.queryOrderCount();
    94. }
    95. @Override
    96. @Transactional
    97. public void orderRoom(OrderEntity order) {
    98. orderDao.update(order);
    99. RoomEntity room = new RoomEntity();
    100. room.setRoomNumber(order.getRoomNumber());
    101. room.setStatus(2);
    102. roomDao.updateByRoomNumber(room);
    103. RoomRecordEntity roomRecord = new RoomRecordEntity();
    104. roomRecord.setCreateTime(new Date());
    105. roomRecord.setRoomNumber(order.getRoomNumber());
    106. roomRecord.setMemberId(orderDao.queryObject(order.getId()).getMemberId());
    107. roomRecord.setStartTime(new Date());
    108. roomRecord.setOrderId(order.getId());
    109. roomRecordDao.save(roomRecord);
    110. }
    111. @Override
    112. @Transactional
    113. public void returnRoom(OrderEntity order) {
    114. orderDao.update(order);
    115. RoomEntity room = new RoomEntity();
    116. room.setRoomNumber(order.getRoomNumber());
    117. room.setStatus(1);
    118. RoomRecordEntity roomRecord = roomRecordDao.queryByOrderId(order.getId());
    119. room.setRoomNumber(roomRecord.getRoomNumber());
    120. roomDao.updateByRoomNumber(room);
    121. roomRecord.setEndTime(new Date());
    122. roomRecordDao.update(roomRecord);
    123. }
    124. @Override
    125. public void delHouseVolume(Integer oid) {
    126. Map map = new HashMap();
    127. map.put("orderId", oid);
    128. List orderHouseList = orderHouseDao.queryList(map);
    129. if(orderHouseList!=null && !orderHouseList.isEmpty()){
    130. OrderHouseEntity houseEntity = orderHouseList.get(0);
    131. Integer houseId = houseEntity.getHouseId();
    132. houseDao.delVolume(houseId,1);
    133. }
    134. }
    135. }

    1. <template>
    2. <div>
    3. <el-container>
    4. <el-header><mainHeader>mainHeader>
    5. el-header>
    6. <el-container>
    7. <mainSidebar :active="active">mainSidebar>
    8. <el-main>
    9. <el-row :gutter="12">
    10. <el-col :span="8">
    11. <el-card shadow="always">
    12. 客房数量
    13. <div class="statistics">{{statistics.houseTotal}}div>
    14. el-card>
    15. el-col>
    16. <el-col :span="8">
    17. <el-card shadow="always">
    18. 用户数量
    19. <div class="statistics">{{statistics.userTotal}}div>
    20. el-card>
    21. el-col>
    22. <el-col :span="8">
    23. <el-card shadow="always">
    24. 订单数量
    25. <div class="statistics">{{statistics.orderTotal}}div>
    26. el-card>
    27. el-col>
    28. el-row>
    29. <el-row>
    30. <div id="main" style="width: 100%;height:400px;">div>
    31. el-row>
    32. el-main>
    33. el-container>
    34. el-container>
    35. div>
    36. template>
    37. <script>
    38. import echarts from 'echarts'
    39. import mainHeader from '../../components/admin-main-header'
    40. import mainSidebar from '../../components/admin-main-sidebar'
    41. export default {
    42. name: "AdminIndex",
    43. data() {
    44. return {
    45. statistics: {},
    46. user: null,
    47. asideStyle: {
    48. height: '500px'
    49. },
    50. active: '1'
    51. };
    52. },
    53. components: {
    54. mainHeader,
    55. mainSidebar
    56. },
    57. methods:{
    58. logout: function(){
    59. localStorage.removeItem("auser");
    60. this.$router.push("admin_login");
    61. },
    62. query: function() {
    63. var that = this;
    64. this.$axios.get(this.domain + "/statistics/query", {headers: {
    65. 'token': localStorage.getItem("atoken")
    66. }}).then(
    67. function(res){
    68. var r = res.data;
    69. //console.log(r)
    70. if(r.code == 0){
    71. that.statistics = r.statistics;
    72. // 基于准备好的dom,初始化echarts实例
    73. var myChart = echarts.init(document.getElementById('main'));
    74. // 指定图表的配置项和数据
    75. var option = {
    76. title: {
    77. text: ''
    78. },
    79. tooltip: {},
    80. legend: {
    81. data:['销量']
    82. },
    83. xAxis: {
    84. data: r.statistics.orderCountList.map(function(v){return v.createTime})
    85. },
    86. yAxis: {
    87. minInterval: 1,
    88. },
    89. series: [{
    90. name: '订单数量',
    91. type:'line',
    92. data: r.statistics.orderCountList.map(function(v){return v.count})
    93. }]
    94. };
    95. // 使用刚指定的配置项和数据显示图表。
    96. myChart.setOption(option);
    97. }
    98. }
    99. )
    100. }
    101. },
    102. created(){
    103. var docHeight = document.documentElement.clientHeight;
    104. this.asideStyle.height = docHeight - 76 + "px";
    105. var user = localStorage.getItem("auser");
    106. if(user){
    107. this.user = JSON.parse(user);
    108. }else{
    109. this.$router.push("admin_login");
    110. }
    111. this.query();
    112. }
    113. };
    114. script>
    115. <style scoped>
    116. .statistics{
    117. font-size: 20px;
    118. margin-top: 10px;
    119. font-weight: blod
    120. }
    121. style>

  • 相关阅读:
    【Linux】Linux常用命令大全
    电动剃须刀市场现状研究分析与发展前景预测
    机器学习笔记 - 使用机器学习进行鸟类物种分类
    构建LangChain应用程序的示例代码:48、如何使用非文本生成工具创建多模态代理
    ChatGPT在电子健康记录和医疗信息查询中的应用前景如何?
    STC单片机26——串口发送DS18B20温度值
    十年架构五年生活-04第一个工作转折点
    [含毕业设计论文+PPT+源码等]ssm家教服务系统小程序+Java后台管理系统|前后分离VUE
    Go语言开源13周年啦,看看负责人说了啥
    【论文阅读】NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
  • 原文地址:https://blog.csdn.net/weixin_42899150/article/details/133955553