CHENYIZONG 6 lat temu
rodzic
commit
1bf5794f18

+ 17 - 0
src/main/java/com/example/hotel/bl/hotel/HotelService.java

@@ -1,5 +1,6 @@
 package com.example.hotel.bl.hotel;
 
+import com.example.hotel.enums.RoomType;
 import com.example.hotel.po.HotelRoom;
 import com.example.hotel.vo.HotelVO;
 
@@ -13,6 +14,14 @@ public interface HotelService {
      */
     void addHotel(HotelVO hotelVO);
 
+    /**
+     * 预订酒店修改剩余客房信息
+     * @param hotelId
+     * @param roomType
+     * @param rooms
+     */
+    void updateRoomInfo(Integer hotelId, String roomType,Integer rooms);
+
     /**
      * 列表获取酒店信息
      * @return
@@ -31,4 +40,12 @@ public interface HotelService {
      * @param hotelRoom
      */
     void addHotelRoomInfo(HotelRoom hotelRoom);
+
+    /**
+     * 查看酒店剩余某种房间数量
+     * @param hotelId
+     * @param roomType
+     * @return
+     */
+    int getRoomCurNum(Integer hotelId,String roomType);
 }

+ 4 - 0
src/main/java/com/example/hotel/bl/order/OrderService.java

@@ -1,6 +1,8 @@
 package com.example.hotel.bl.order;
 
 import com.example.hotel.po.Order;
+import com.example.hotel.vo.OrderVO;
+import com.example.hotel.vo.ResponseVO;
 
 import java.util.List;
 
@@ -10,6 +12,8 @@ import java.util.List;
  */
 public interface OrderService {
 
+    ResponseVO addOrder(OrderVO orderVO);
+
     List<Order> getAllOrders();
 
     List<Order> getUserOrders(int userid);

+ 10 - 2
src/main/java/com/example/hotel/blImpl/hotel/HotelServiceImpl.java

@@ -20,8 +20,6 @@ import java.util.stream.Collectors;
 @Service
 public class HotelServiceImpl implements HotelService {
 
-    @Autowired
-    private AccountMapper accountMapper;
     @Autowired
     private HotelMapper hotelMapper;
     @Autowired
@@ -43,6 +41,11 @@ public class HotelServiceImpl implements HotelService {
 
     }
 
+    @Override
+    public void updateRoomInfo(Integer hotelId, String roomType, Integer rooms) {
+        roomMapper.updateRoomInfo(hotelId,roomType,rooms);
+    }
+
     @Override
     public List<HotelVO> retrieveHotels() {
 
@@ -71,4 +74,9 @@ public class HotelServiceImpl implements HotelService {
     public void addHotelRoomInfo(HotelRoom hotelRoom) {
         roomMapper.insertRoom(hotelRoom);
     }
+
+    @Override
+    public int getRoomCurNum(Integer hotelId, String roomType) {
+        return roomMapper.getRoomCurNum(hotelId,roomType);
+    }
 }

+ 34 - 0
src/main/java/com/example/hotel/blImpl/order/OrderServiceImpl.java

@@ -1,11 +1,17 @@
 package com.example.hotel.blImpl.order;
 
 import com.example.hotel.bl.order.OrderService;
+import com.example.hotel.blImpl.hotel.HotelServiceImpl;
 import com.example.hotel.data.order.OrderMapper;
 import com.example.hotel.po.Order;
+import com.example.hotel.vo.OrderVO;
+import com.example.hotel.vo.ResponseVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -14,8 +20,36 @@ import java.util.List;
  */
 @Service
 public class OrderServiceImpl implements OrderService {
+    private final static String RESERVE_ERROR = "预订失败";
+    private final static String ROOMNUM_LACK = "预订房间数量剩余不足";
     @Autowired
     OrderMapper orderMapper;
+    @Autowired
+    HotelServiceImpl hotelService;
+
+    @Override
+    public ResponseVO addOrder(OrderVO orderVO) {
+        int reserveRoomNum = orderVO.getRoomNum();
+        int curNum = hotelService.getRoomCurNum(orderVO.getHotelId(),orderVO.getRoomType());
+        if(reserveRoomNum>curNum){
+            return ResponseVO.buildFailure(ROOMNUM_LACK);
+        }
+        try {
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+            Date date = new Date(System.currentTimeMillis());
+            String curdate = sf.format(date);
+            orderVO.setCreateDate(sf.parse(curdate));
+            Order order = new Order();
+            BeanUtils.copyProperties(orderVO,order);
+            orderMapper.addOrder(order);
+            hotelService.updateRoomInfo(orderVO.getHotelId(),orderVO.getRoomType(),orderVO.getRoomNum());
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+            return ResponseVO.buildFailure(RESERVE_ERROR);
+        }
+       return ResponseVO.buildSuccess();
+    }
+
     @Override
     public List<Order> getAllOrders() {
         return orderMapper.getAllOrders();

+ 0 - 3
src/main/java/com/example/hotel/controller/hotel/HotelController.java

@@ -2,11 +2,9 @@ package com.example.hotel.controller.hotel;
 
 import com.example.hotel.bl.hotel.HotelService;
 import com.example.hotel.po.HotelRoom;
-import com.example.hotel.util.Result;
 import com.example.hotel.vo.HotelVO;
 import com.example.hotel.vo.ResponseVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
@@ -36,7 +34,6 @@ public class HotelController {
 
     @GetMapping("/{hotelId}/detail")
     public ResponseVO retrieveHotelDetail(@PathVariable Integer hotelId) {
-
         return ResponseVO.buildSuccess(hotelService.retrieveHotelDetails(hotelId));
     }
 

+ 2 - 4
src/main/java/com/example/hotel/controller/order/OrderController.java

@@ -6,8 +6,6 @@ import com.example.hotel.vo.ResponseVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * @Author: chenyizong
  * @Date: 2020-02-29
@@ -17,13 +15,13 @@ import java.util.List;
 @RestController()
 @RequestMapping("/api/order")
 public class OrderController {
+
     @Autowired
     private OrderServiceImpl orderService;
 
     @PostMapping("/addOrder")
     public ResponseVO reserveHotel(@RequestBody OrderVO orderVO){
-//        clientService.addOrder(orderVO);
-        return ResponseVO.buildSuccess(orderVO);
+        return orderService.addOrder(orderVO);
     }
 
     @GetMapping("/getAllOrders")

+ 0 - 2
src/main/java/com/example/hotel/controller/user/AccountController.java

@@ -10,8 +10,6 @@ import com.example.hotel.vo.UserVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.constraints.Email;
 
 
 @RestController()

+ 4 - 0
src/main/java/com/example/hotel/data/hotel/RoomMapper.java

@@ -12,7 +12,11 @@ import java.util.List;
 @Repository
 public interface RoomMapper {
 
+    int updateRoomInfo(@Param("hotelId") Integer hotelId,@Param("roomType") String roomType,@Param("curNum") Integer curNum);
+
     int insertRoom(HotelRoom hotelRoom);
 
     List<HotelRoom> selectRoomsByHotelId(@Param("hotelId") Integer hotelId);
+
+    int getRoomCurNum(@Param("hotelId") Integer hotelId,@Param("roomType") String roomType);
 }

+ 3 - 0
src/main/java/com/example/hotel/data/order/OrderMapper.java

@@ -1,6 +1,7 @@
 package com.example.hotel.data.order;
 
 import com.example.hotel.po.Order;
+import com.example.hotel.vo.OrderVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -15,6 +16,8 @@ import java.util.List;
 @Repository
 public interface OrderMapper {
 
+    int addOrder(Order order);
+
     List<Order> getAllOrders();
 
     List<Order> getUserOrders(@Param("userid") int userid);

+ 8 - 0
src/main/resources/dataImpl/hotel/RoomMapper.xml

@@ -12,6 +12,14 @@
         select * from Room where hotel_id=#{hotelId}
     </select>
 
+    <update id="updateRoomInfo">
+        update Room set curNum=curNum-#{curNum} where hotel_id=#{hotelId} and roomType=#{roomType}
+    </update>
+
+    <select id="getRoomCurNum" resultType="int">
+        select curNum from Room where hotel_id=#{hotelId} and roomType=#{roomType}
+    </select>
+
 
     <resultMap id="room" type="com.example.hotel.po.HotelRoom">
         <id column="id" property="id"></id>

+ 4 - 0
src/main/resources/dataImpl/order/OrderMapper.xml

@@ -8,6 +8,10 @@
     <select id="getUserOrders" resultMap="Order">
         select * from OrderList where userId=#{userid}
     </select>
+    <insert id="addOrder" parameterType="com.example.hotel.po.Order" useGeneratedKeys="true" keyProperty="id">
+        insert into OrderList(userId,hotelId,checkInDate,checkOutDate,roomType,roomNum,peopleNum,haveChild,createDate,price)
+        values(#{userId},#{hotelId},#{checkInDate},#{checkOutDate},#{roomType},#{roomNum},#{peopleNum},#{haveChild},#{createDate},#{price})
+    </insert>