Sfoglia il codice sorgente

增加循环依赖的反例

wanghongkai 6 anni fa
parent
commit
6f8ffb8258

+ 7 - 2
src/main/java/com/example/hotel/bl/hotel/HotelService.java

@@ -1,6 +1,7 @@
 package com.example.hotel.bl.hotel;
 
 import com.example.hotel.po.HotelRoom;
+import com.example.hotel.po.Order;
 import com.example.hotel.util.ServiceException;
 import com.example.hotel.vo.CouponVO;
 import com.example.hotel.vo.HotelVO;
@@ -46,8 +47,12 @@ public interface HotelService {
      */
     int getRoomCurNum(Integer hotelId,String roomType);
 
-
-
+    /**
+     * 查看酒店的所有订单
+     * @param hotelId
+     * @return
+     */
+    List<Order> getHotelOrders(Integer hotelId);
 
 
 }

+ 21 - 1
src/main/java/com/example/hotel/blImpl/hotel/HotelServiceImpl.java

@@ -2,6 +2,7 @@ package com.example.hotel.blImpl.hotel;
 
 import com.example.hotel.bl.hotel.HotelService;
 import com.example.hotel.bl.hotel.RoomService;
+import com.example.hotel.bl.order.OrderService;
 import com.example.hotel.bl.user.AccountService;
 import com.example.hotel.data.hotel.HotelMapper;
 import com.example.hotel.data.hotel.RoomMapper;
@@ -11,6 +12,7 @@ import com.example.hotel.enums.HotelStar;
 import com.example.hotel.enums.UserType;
 import com.example.hotel.po.Hotel;
 import com.example.hotel.po.HotelRoom;
+import com.example.hotel.po.Order;
 import com.example.hotel.po.User;
 import com.example.hotel.util.ServiceException;
 import com.example.hotel.vo.CouponVO;
@@ -30,6 +32,10 @@ public class HotelServiceImpl implements HotelService {
 
     @Autowired
     private AccountService accountService;
+
+    @Autowired
+    private OrderService orderService;
+
     @Autowired
     private RoomService roomService;
 
@@ -84,5 +90,19 @@ public class HotelServiceImpl implements HotelService {
 
         return hotelVO;
     }
-
+    
+    /**
+     * 反例:
+     * 错误的例子,HotelService依赖OrderService去获取hotel的所有订单信息
+     * 1、功能划分错误,获取酒店订单应属于订单服务的功能
+     * 2、糟糕的实现方式,有欸有更好的实现方式?
+     * 3、循环依赖
+     * @param hotelId
+     * @return
+     */
+    @Override
+    public List<Order> getHotelOrders(Integer hotelId) {
+        List<Order> orders = orderService.getAllOrders();
+        return orders.stream().filter(order -> order.getHotelId().equals(hotelId)).collect(Collectors.toList());
+    }
 }

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

@@ -42,5 +42,9 @@ public class HotelController {
         return ResponseVO.buildSuccess(hotelService.retrieveHotelDetails(hotelId));
     }
 
+    @GetMapping("/{hotelId}/allOrders")
+    public ResponseVO retrieveHotelOrders(@PathVariable Integer hotelId) {
+        return ResponseVO.buildSuccess(hotelService.getHotelOrders(hotelId));
+    }
 
 }