CHENYIZONG пре 6 година
родитељ
комит
24bfa168e5

+ 7 - 1
src/main/java/com/example/hotel/bl/order/OrderService.java

@@ -1,7 +1,6 @@
 package com.example.hotel.bl.order;
 
 import com.example.hotel.po.Order;
-import com.example.hotel.vo.CouponVO;
 import com.example.hotel.vo.OrderVO;
 import com.example.hotel.vo.ResponseVO;
 
@@ -33,4 +32,11 @@ public interface OrderService {
      */
     List<Order> getUserOrders(int userid);
 
+    /**
+     * 撤销订单
+     * @param orderid
+     * @return
+     */
+    ResponseVO annulOrder(int orderid);
+
 }

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

@@ -2,9 +2,11 @@ package com.example.hotel.blImpl.order;
 
 import com.example.hotel.bl.hotel.HotelService;
 import com.example.hotel.bl.order.OrderService;
+import com.example.hotel.bl.user.AccountService;
 import com.example.hotel.blImpl.hotel.HotelServiceImpl;
 import com.example.hotel.data.order.OrderMapper;
 import com.example.hotel.po.Order;
+import com.example.hotel.po.User;
 import com.example.hotel.vo.OrderVO;
 import com.example.hotel.vo.ResponseVO;
 import org.springframework.beans.BeanUtils;
@@ -23,10 +25,13 @@ import java.util.List;
 public class OrderServiceImpl implements OrderService {
     private final static String RESERVE_ERROR = "预订失败";
     private final static String ROOMNUM_LACK = "预订房间数量剩余不足";
+    private final static String ANNUL_ERROR = "撤销失败";
     @Autowired
     OrderMapper orderMapper;
     @Autowired
     HotelService hotelService;
+    @Autowired
+    AccountService accountService;
 
     @Override
     public ResponseVO addOrder(OrderVO orderVO) {
@@ -40,6 +45,10 @@ public class OrderServiceImpl implements OrderService {
             Date date = new Date(System.currentTimeMillis());
             String curdate = sf.format(date);
             orderVO.setCreateDate(curdate);
+            orderVO.setOrderState("已预订");
+            User user = accountService.getUserInfo(orderVO.getUserId());
+            orderVO.setClientName(user.getUserName());
+            orderVO.setPhoneNumber(user.getPhoneNumber());
             Order order = new Order();
             BeanUtils.copyProperties(orderVO,order);
             orderMapper.addOrder(order);
@@ -60,4 +69,18 @@ public class OrderServiceImpl implements OrderService {
     public List<Order> getUserOrders(int userid) {
         return orderMapper.getUserOrders(userid);
     }
+
+    @Override
+    public ResponseVO annulOrder(int orderid) {
+        try {
+            Order order = orderMapper.getOrderById(orderid);
+            int roomNums = -order.getRoomNum();
+            hotelService.updateRoomInfo(order.getHotelId(),order.getRoomType(),roomNums);
+            orderMapper.annulOrder(orderid);
+        }catch (Exception e) {
+            System.out.println(e.getMessage());
+            return ResponseVO.buildFailure(ANNUL_ERROR);
+        }
+        return ResponseVO.buildSuccess(true);
+    }
 }

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

@@ -32,7 +32,11 @@ public class OrderController {
     @GetMapping("/{userid}/getUserOrders")
     public  ResponseVO retrieveUserOrders(@PathVariable int userid){
         return ResponseVO.buildSuccess(orderService.getUserOrders(userid));
+    }
 
+    @GetMapping("/{orderid}/annulOrder")
+    public ResponseVO annulOrder(@PathVariable int orderid){
+        return ResponseVO.buildSuccess(orderService.annulOrder(orderid));
     }
 
 

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

@@ -22,4 +22,8 @@ public interface OrderMapper {
 
     List<Order> getUserOrders(@Param("userid") int userid);
 
+    int annulOrder(@Param("orderid") int orderid);
+
+    Order getOrderById(@Param("orderid") int orderid);
+
 }

+ 9 - 0
src/main/java/com/example/hotel/po/Order.java

@@ -21,6 +21,7 @@ public class Order {
     private Double price;
     private String clientName;
     private String phoneNumber;
+    private String orderState;
 
     public Integer getId() {
         return id;
@@ -133,4 +134,12 @@ public class Order {
     public void setPhoneNumber(String phoneNumber) {
         this.phoneNumber = phoneNumber;
     }
+
+    public String getOrderState() {
+        return orderState;
+    }
+
+    public void setOrderState(String orderState) {
+        this.orderState = orderState;
+    }
 }

+ 9 - 0
src/main/java/com/example/hotel/vo/OrderVO.java

@@ -21,6 +21,7 @@ public class OrderVO {
     private Double price;
     private String clientName;
     private String phoneNumber;
+    private String orderState;
 
     public Integer getId() {
         return id;
@@ -133,4 +134,12 @@ public class OrderVO {
     public void setPhoneNumber(String phoneNumber) {
         this.phoneNumber = phoneNumber;
     }
+
+    public String getOrderState() {
+        return orderState;
+    }
+
+    public void setOrderState(String orderState) {
+        this.orderState = orderState;
+    }
 }

+ 8 - 2
src/main/resources/dataImpl/order/OrderMapper.xml

@@ -9,9 +9,15 @@
         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,hotelName,checkInDate,checkOutDate,roomType,roomNum,peopleNum,haveChild,createDate,price,clientName,phoneNumber)
-        values(#{userId},#{hotelId},#{hotelName},#{checkInDate},#{checkOutDate},#{roomType},#{roomNum},#{peopleNum},#{haveChild},#{createDate},#{price},#{clientName},#{phoneNumber})
+        insert into OrderList(userId,hotelId,hotelName,checkInDate,checkOutDate,roomType,roomNum,peopleNum,haveChild,createDate,price,clientName,phoneNumber,state)
+        values(#{userId},#{hotelId},#{hotelName},#{checkInDate},#{checkOutDate},#{roomType},#{roomNum},#{peopleNum},#{haveChild},#{createDate},#{price},#{clientName},#{phoneNumber},#{orderState})
     </insert>
+    <select id="getOrderById" resultMap="Order">
+        select * from OrderList where id=#{orderid}
+    </select>
+    <update id="annulOrder">
+        update OrderList set state="已撤销" where id=#{orderid}
+    </update>